bookjava | Unsorted

Telegram-канал bookjava - Библиотека Java разработчика

11248

Библиотека Java разработчика. Java, Spring, Maven, Hibernate По всем вопросам @evgenycarter № 4880864218

Subscribe to a channel

Библиотека Java разработчика

Совет по использованию Java API 💡

Использование Java Stream flatMap 🔥

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Beyond Loom: Weaving new concurrency patterns

В этой статье мы обсудим некоторые новые паттерны для параллельных систем, которые стали возможны благодаря новой функции виртуальных потоков в Java 21, а также некоторые связанные с ней функции, которые "следуют" за виртуальными потоками - в частности, Structured Concurrency (JEP 453) и Scoped Values (JEP 446).

Обратите внимание, что в JDK 21 структурированный параллелизм и скопированные значения находятся в состоянии Preview и поэтому не могут быть использованы в продакшен-приложениях.

Учитывая это ограничение, давайте начнем с рассмотрения паттернов, которые поддерживаются только виртуальными потоками и, следовательно, могут без ограничений использоваться в приложениях Java 21.

https://developers.redhat.com/articles/2023/10/03/beyond-loom-weaving-new-concurrency-patterns#

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Присоединяйтесь к нашему бесплатному курсу и начните увлекательное путешествие в мир Java!

Изучайте основы, создавайте программы, разбирайтесь с методами и анализируйте ошибки в коде. Практика, упражнения и проверочные тесты помогут вам освоить навыки программирования.

🎓 Чему вы научитесь:
— Создавать программы с использованием основных конструкций языка.
 — Разделять код на методы для повторного использования.
 — Анализировать ошибки в коде с использованием отладочной печати.

💼 Включено в курс:
29 уроков (видео и/или текст), 35 упражнений в тренажере, 95 проверочных тестов + дополнительные материалы.

Вы с нами?😉

Читать полностью…

Библиотека Java разработчика

Создание REST API с использованием Spring WebFlux и Security

00:00:00 Введение
00:00:20 Создание проекта
00:11:36 Создание миграций БД
00:15:40 Создание базовых классов
00:23:20 Реализация логики генерации JWT токена
00:46:30 Реализация логики валидации JWT токена
00:53:05 Построения цепочки аутентификации
01:04:22 Финальная конфигурация с использованием SecurityWebFilterChain
01:12:11 Реализация REST контроллеров
01:23:15 Проверка REST API средствами Postman
01:24:21 Добавление и конфигурация обработчика ошибок
01:25:40 Заключение

Ссылка на Github репозиторий https://github.com/proselytear/webfluxsecurity

источник

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Как загружать классы в Java 8 и Java 9+?

Я разработчик в Институте Системного Программирования РАН, занимаюсь разработкой статического анализатора Svace. Недавно я столкнулся с задачей самостоятельной загрузки классов в JVM, что оказалось непросто, потому что в проекте мы используем модули Java.

Модули появились в Java, начиная с версии 9. Прошло уже несколько лет, но если попытаться найти актуальную информацию о связи модулей и загрузчиков классов, её придётся собирать по крупицам. В статье я поделюсь своим опытом изучения вопроса самостоятельной (и автоматической) загрузки классов с помощью кастомного загрузчика, а также разберу примеры, описывающие большинство случаев загрузки, постараюсь их объяснить.

https://habr.com/ru/companies/isp_ras/articles/788618/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Повторяющиеся тесты

Используйте @RepeatedTest для запуска одного и того же теста несколько раз, каждый раз с разными входными данными или условиями, что особенно полезно для стресс-тестирования.

https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/RepeatedTest.html

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Анализ дампа кучи Java: разбираем на примерах

Я увлекаюсь управлением памятью в Java и в этой статье попробую объяснить, как взять и проанализировать дамп кучи – разберём на примерах. Но для начала давайте вспомним, что известно об этой предметной области. Немного освежив теорию, мы возьмем дамп кучи и проанализируем, каким он получится в простом приложении.

https://habr.com/ru/companies/timeweb/articles/719434/

original https://huseyinbabal.com/2022/08/14/java-heap-dump-analysis-with-examples/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Совет по Spring 💡

EnvironmentCapable

Интерфейс, предоставляющий доступ к среде Spring, позволяющий получать свойства, профили и другую информацию, связанную со средой. 🔥

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/env/EnvironmentCapable.html

👉@BookJava

Читать полностью…

Библиотека Java разработчика

🔥 Освойте один из важнейших инструментов Java-разработчика

На бесплатном практическом уроке «Основы работы с Spring Data JDBC» от OTUS и Александра Фисунова — Senior Kotlin Developer в SSP Software на проекте ВТБ.

На вебинаре:
- разберемся, как работать с реляционными базами данных из Spring Boot приложения с использованием Spring Data JDBC;
- проведем небольшое сравнение с модулем Spring Data JPA;
- ответим на все возникающие вопросы.

📢📢 Встречаемся 30 января в 20:00 мск. Открытый урок проходит в преддверии обновленного запуска курса «Java Developer. Professional».

➡️ Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок и получить запись: https://vk.cc/cu6v3u

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Библиотека Java разработчика

Как архитекторам и разработчикам попасть в крупный инновационный проект?

Изучить микросервисную архитектуру под руководством топовых специалистов крупнейших компаний всего за 5 месяцев на онлайн-курсе от OTUS.

Программа идеально подходит архитекторам, разработчикам, системным аналитикам, администраторам и DevOps, которые хотят выйти на новый карьерный уровень. Доступна рассрочка на обучение.

Курс нацелен на глубокое изучение темы и получение практических навыков, в рамках обучения вы рассмотрите работу с очень популярными сейчас инструментами – Kubernetes и Docker.

Переходите на сайт, чтобы записаться на 2 пробных бесплатныx открытых урока:
✅ «CAP-теорема и управление ожиданиями пользователей» (регистрация на урок без тестирования)
✅ «Паттерны RESTful API» (регистрация на урок через тестирование)

Читать полностью…

Библиотека Java разработчика

Опишите жизненный цикл Spring Bean

Beans – центральный объект заботы Spring Framework. За кулисами фреймворка с ними происходит множество процессов. Во многие из них можно вмешаться, добавив собственную логику в разные этапы жизненного цикла. Через следующие этапы проходит каждый отдельно взятый бин:

1. Инстанцирование объекта. Техническое начало жизни бина, работа конструктора его класса;

2. Установка свойств из конфигурации бина, внедрение зависимостей;

3. Нотификация aware-интерфейсов. BeanNameAware, BeanFactoryAware и другие. Мы уже писали о таких интерфейсах ранее. Технически, выполняется системными подтипами BeanPostProcessor, и совпадает с шагом 4;

4. Пре-инициализация – метод postProcessBeforeInitialization() интерфейса BeanPostProcessor;

5. Инициализация. Разные способы применяются в таком порядке:
• Метод бина с аннотацией @PostConstruct из стандарта JSR-250 (рекомендуемый способ);
• Метод afterPropertiesSet() бина под интерфейсом InitializingBean;
• Init-метод. Для отдельного бина его имя устанавливается в параметре определения initMethod. В xml-конфигурации можно установить для всех бинов сразу, с помощью default-init-method;

6. Пост-инициализация – метод postProcessAfterInitialization() интерфейса BeanPostProcessor.
Когда IoC-контейнер завершает свою работу, мы можем кастомизировать этап штатного уничтожения бина. Как со всеми способами финализации в Java, при жестком выключении (kill -9) гарантии вызова этого этапа нет. Три альтернативных способа «деинициализации» вызываются в том же порядке, что симметричные им методы инициализации:

1. Метод с аннотацией @PreDestroy;
2. Метод с именем, которое указано в свойстве destroyMethod определния бина (или в глобальном default-destroy-method);
3. Метод destroy() интерфейса DisposableBean.

Не следует путать жизненный цикл отдельного бина с жизненным циклом контекста и этапами подготовки фабрик бинов. О них мы поговорим в будущих публикациях.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

🚀 Расширенные советы по Spring Boot🚀

Создание собственного FailureAnalyzer

Перехват исключений при запуске и преобразование их в человекочитаемые сообщения эффективно достигается с помощью FailureAnalyzer в Spring Boot 🔥.

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto.application.failure-analyzer

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Какими инструментами нужно владеть для работы с высоконагруженной архитектурой?

Расскажем на бесплатном практическом уроке «Роль Tarantool в высоконагруженной архитектуре» от OTUS.

На вебинаре разберём:

- особенности, функционал и преимущества Tarantool;
- архитектурные шаблоны и примеры его применения;
- итоги и вопросы.

Урок будет полезен для разработчиков, сисадминов и архитекторов, интересующихся высоконагруженными системами.

Занятие пройдёт 31 января в 20:00 мск и будет приурочено к старту курса «Highload Architect». Доступна рассрочка на обучение!

Пройдите короткое тестирование прямо сейчас, чтобы занять место на открытом уроке: https://vk.cc/ctY5LI

Читать полностью…

Библиотека Java разработчика

Ловушка тестирования простой оркестровки

Код оркестровки организует вызовы других компонентов (зависимостей) в определенный процесс. Такие части кода иногда называют координаторами или контроллерами. Оркестровочный код обычно прост. В нем нет (или почти нет) условной логики или алгоритмической сложности. Его основная задача - делегировать работу соответствующим зависимостям в определенном порядке. Давайте рассмотрим пример, чтобы лучше проиллюстрировать это.

class Orchestrator {
// ...

// (injected) dependencies
private final Service service; // business logic
private final Mapper mapper; // field-to-field mapping
private final Repository repository; // glue code

public ImportantObject orchestrate(ImportantDto dto) {
ImportantObject important = mapper.toImportantObject(dto);
ImportantObject processed = service.process(important);
return repository.save(processed);
}

}

https://mikemybytes.com/2024/01/17/the-trap-of-testing-simple-orchestration/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Совет Spring Framework💡

Вы можете автосопрягать несколько бинов, реализующих определенный интерфейс, в список, содержащий все реализации. Определите список с общим типом, который вы хотите использовать. Вы можете использовать инъекцию конструктора, как показано на картинке, или инъекцию поля.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Tinkoff Java Meetup в Рязани 📍

Джава-митапы в Рязани — уже добрая традиция команды Тинькофф. И первую встречу в этом году ребята проведут 13 февраля. В программе — три доклада:

— как использование различных технологий для написания параллельного кода влияет на читаемость и производительность;

— почему команда Тинькофф выбрала Micronaut, а не Camunda

— что скрывается под маркетинговыми фразами о надежности, бесконечности и универсальности в object storage.

После докладов — неформальный нетворкинг.

📆 13 февраля, пространство Svoboda, Tinkoff Java Meetup. Не забудьте зарегистрироваться

erid:2VtzqwE8utT
Реклама. АО "Тинькофф Банк", ИНН 7710140679, лицензия ЦБ РФ № 2673

Читать полностью…

Библиотека Java разработчика

🚀AutoCloseable HTTP Client в Java 21

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Когда нужно использовать raw types?

Сначала вспомним, что такое raw type. В Java так называют generic-типы без указания типа-параметра. Такая языковая конструкция валидна, но в большинстве случаев приводит к предупреждению компилятора.

Предупреждение связано с риском получения проблемы heap pollution. Ей мы уже посвящали публикации ранее. Использование raw types никогда не оправдано – спецификация языка явно говорит: их поддержка остается только для обратной совместимости.

Есть всего три случая, когда использовать обобщенный тип без параметра правильно:
• Целевая версия Java < 5.0 (2002 год и ранее – вряд ли это ваш случай);
• В литерале класса. List<String>.class не сработает, нужно писать List.class;
• В операторе instanceof. Вместо instanceof Set<Integer> должно быть instanceof Set.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Разберитесь в RESTful API и усильте свое резюме

На открытом практическом уроке от OTUS, где вы вместе с опытным экспертом:

- рассмотрите уровни зрелости REST;
- обсудите концепцию HATEOAS;
- изучите различные паттерны REST, включая их реализацию в форматах json-api и odata;
- научитесь генерировать клиент к сервису по openapi idl.

Встречаемся 6 февраля в 20:00 мск в рамках курса «Microservice Architecture». Доступна рассрочка на обучение!

Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cugAcC

Читать полностью…

Библиотека Java разработчика

🔥 Пройди тест по Java и проверь свои знания.

Ответишь
— пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса

🔝 Обновленная, расширенная программа

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cufmPj

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Библиотека Java разработчика

Как в Java разобрать JSON?

JSON – на ряду с XML, самый популярный текстовый формат передачи данных. Существует великое множество библиотек для работы с ним, здесь перечислены самые популярные.

Gson – решение от Google. В простом случае, максимально просто в применении. Популярно в Android.

org.json – Простое решение для работы с атрибутами из JSON-строки. Не умеет сериализовать из объекта в JSON и обратно.

Jackson – библиотека, знакомая всем любителям Spring Framework. Широкий простор конфигурации. Может использоваться в Java EE (в составе JAX-RS), хорошо подходит для сложных web-приложений.

JSONP – один из компонентов Java EE. Есть как стриминговая версия (экономит память при больших документах), так и обычная (когда нужно работать с документом целиком). Можно взять реализацию Glassfish, или любого другого сервера приложений. Решение «от производителя», как часто бывает, не самое популярное.

На разных данных эти решения могут показывать различную производительность, поэтому чтобы выбрать библиотеку исходя из быстродействия, нужно замерять скорость работы на конкретном приложении. Большинство готовых сравнений, которые вы найдете, заангажированы в пользу библиотеки автора этого сравнения.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

☘️ Изучите Spring и в 2024 году вас ждёт профессиональная удача

Освойте востребованный фреймворк для создания приложений на Java, чтобы выйти на новый профессиональный уровень.

🔝 Приходите на онлайн-курс «Разработчик на Spring Framework» от OTUS!

Что вы получите:
✔️ Понимание, как создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке.
✔️ Умение быстро проходить путь от идеи до production-grade.
✔️ Владение фреймворками Spring и технологиями вспомогательных проектов (Spring MVC, Spring Security, Spring Boot, Spring Reactive Stack, Spring 5).

➡️ Пройдите короткий тест прямо сейчас и узнайте, готовы ли вы расширить карьерные перспективы: https://vk.cc/cu7jXc

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Библиотека Java разработчика

Как создать пару публичный/приватный ключ?

Не следует путать генерацию ключей с задачей их чтения, о которой здесь писали ранее.

Для генерации ключей используется KeyPairGenerator. Архитектурно он похож на читающую ключи KeyFactory: реализации для разных алгоритмов также поставляются через SPI, доступ к ним также осуществляется через getInstance.

Перед использованием, генератор нужно инициализировать. Для этого методом initialize устанавливаются три опциональных параметра:
• Желаемый размер ключа;
• Источник случайных значений типа SecureRandom;
• Специфичные для алгоритма настройки в объекте подкласса AlgorithmParameterSpec.

Если к моменту создания ключей генератор не инициализирован, или при инициализации часть параметров не указана, эти параметры примут дефолтные значения. Каждый провайдер устанавливает свои собственные дефолты.

Сам метод генерации generateKeyPair не требует параметров. Его можно вызывать повторно для генерации нескольких разных пар. Результат его вызова – объект KeyPair, который просто хранит под уже знакомыми нам интерфейсами PrivateKey и PublicKey пару инстансов специфичных для алгоритма подклассов.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Подборка из 10 репозиториев GitHub для изучения Java

1. Awesome Java: https://github.com/akullpp/awesome-java
2. Modern Java - A Guide to Java 8: https://github.com/winterbe/java8-tutorial
3. Java Design Patterns: https://github.com/iluwatar/java-design-patterns
4. Spring Framework: https://github.com/spring-projects/spring-framework
5. Algorithms: https://github.com/TheAlgorithms/Java
6. Spring Boot Tutorial: https://github.com/RameshMF/spring-boot-tutorial
7. Baeldung Java and Spring Tutorials: https://github.com/eugenp/tutorials
8. Google Style Guides: https://github.com/google/styleguide
9. Netflix - Open Source Java Projects: https://github.com/Netflix
10. Ultimate Java Resources: https://github.com/dubesar/Ultimate-Java-Resources

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Совет по Java 💡

Чтобы сделать большие и сложные цепочки компараторов более читаемыми, мне нравится присваивать компараторы переменным, имена которых начинаются с "by". Таким образом, вызов sorted() становится меньше и читается почти как естественный язык. Кроме того, вы можете использовать статический импорт.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Подборка Telegram каналов для программистов

Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux


/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)

/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика

/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике

/channel/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста

1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus

Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах

GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
/channel/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
/channel/game_devv Все о разработке игр

Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT

Чат программистов📌
/channel/developers_ru

Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов

БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию

QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика

Шутки программистов 📌
/channel/itumor Шутки программистов

Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров

Английский 📌
/channel/UchuEnglish Английский с нуля

Математика 📌
/channel/Pomatematike Канал по математике

Excel лайфхак📌
/channel/Excel_lifehack

Читать полностью…

Библиотека Java разработчика

Как мы начали использовать виртуальные потоки Java 21 и на раз-два получили дедлок в TPC-C для PostgreSQL

В этом посте мы расскажем о примере дедлока в TPC-C для PostgreSQL, причиной которого является исключительно переход на виртуальные потоки Java 21 - и никаких проблем обедающих философов.

https://habr.com/ru/companies/ydb/articles/786550/

original https://blog.ydb.tech/how-we-switched-to-java-21-virtual-threads-and-got-deadlock-in-tpc-c-for-postgresql-cca2fe08d70b

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Когда ломается магия фреймворков...

Более чем за десять лет работы со Spring Framework и Enterprise Java я успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.

источник

👉@BookJava

Читать полностью…

Библиотека Java разработчика

⚡️ Тест по Java от OTUS

Проверь насколько хорошо ты знаешь Java и готов освоить Spring!

Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/ctXWpa

🎫 Курс можно приобрести в рассрочку

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Библиотека Java разработчика

Совет Spring Framework💡

Вы можете инжектировать (autowire) бины, которые могут отсутствовать, обернув их в java.util.Optional. Таким образом вы сообщаете, что этот бин является необязательным, избегаете исключения, если он не существует, и можете аккуратно обработать его отсутствие с помощью Optional API.

👉@BookJava

Читать полностью…
Subscribe to a channel