Библиотека Java разработчика
10.8K subscribers
1.14K photos
563 videos
58 files
1.44K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
Шпаргалка по Java

👉@BookJava
👍2
Дорогие друзья!

Редакция канала @bookjava поздравляет вас с праздником!!!

👉@BookJava
🎉13
Как уменьшить размер докерного образа JVM не менее чем на 60%

Если вы давно работаете с языками на базе JVM (Java, Kotlin, Scala и др.), то, возможно, заметили, что начиная с Java 11 среда выполнения Java Runtime Environment (JRE) больше не имеет отдельного дистрибутива. В связи с этим решением многие дистрибьюторы докерных образов Java Development Kit (JDK), такие как OpenJDK, Amazon Correto и другие, не предоставляют JRE в виде отдельного докерного образа. Использование этих образов привело к тому, что общий размер образа Docker составил около 360 МБ, а реальный размер jar-приложения - около 26 МБ. На мой взгляд, общий размер Docker-образа слишком велик, и его следует уменьшить, чтобы сэкономить место и пропускную способность сети для всех, кто будет использовать этот Docker-образ. Теперь давайте посмотрим, как радикально уменьшить размер Docker-образа.

https://blog.devops.dev/how-to-reduce-jvm-docker-image-size-by-at-least-60-459ec87b95d8

👉@BookJava
👍4
Потоковая обработка данных с помощью Kafka Streams: архитектура и ключевые концепции

При реализации потоковой обработки и анализа данных может возникнуть необходимость агрегирования записей для объединения нескольких независимых поток данных или обогащения какой-либо модели данных. Для этой цели может использоваться Kafka Streams, которая позволяет выполнять обработку данных в режиме реального времени.

В этой статье мы рассмотрим основные компоненты Kafka Streams и теоретические аспекты их использования. Мы будем использовать последние версии технологий, доступных на сегодня: Kafka 3.4.0 и Java 17 в качестве языка программированию. Для снижения входного порога мы будем использовать только нативные возможности Kafka и Kafka Streams, и не будем рассматривать решения с использованием различных фрейморков вроде Spring.

https://habr.com/ru/articles/747658/

👉@BookJava
👍6
Делаем свою простейшую систему сборки для Java

Довелось мне обучать одного знакомого, желающего войти в ИТ (привет, Саша!). Человек он упорный, прошел разные курсы, стажировки, упорно продолжает идти вперед и уже вполне тянет на уровень джуна. Но иногда внезапно задает такие вопросы, из которых я понимаю, что у него огромные дыры в базовых знаниях и представлениях. На курсах этому, видимо, не учат.

Один из последних вопросов был про устройство сборки. И он показал явное непонимание того, как исходный код собирается в исполняемый файл и запускается. Начинающим обычно говорят в духе "вот создаешь Gradle-проект, в IDE жмешь кнопочку запуска и все работает". Gradle/Maven при этом представляются таким черным ящиком, в котором есть кнопка сборки и запуска, а внутри - черная магия. И как только возникает необходимость что-то в этом простом процессе изменить или понять - начинаются проблемы.

https://habr.com/ru/articles/752014/

👉@BookJava
👍4
Полезные и неизвестные библиотеки Java

https://piotrminkowski.com/2023/01/30/useful-unknown-java-libraries/

👉@BookJava
👍3
Полное руководство по виртуальным потокам Java

1. Настройка
2. Почему виртуальные потоки?
3. Как создать виртуальный поток
4. Как работают виртуальные потоки
5. Планировщик и совместное планирование
6. Закрепленные виртуальные темы
7. ThreadLocal и пулы потоков
8. Некоторые внутренности виртуальных потоков
9. Выводы
10. Приложение: Конфигурация Maven

https://blog.rockthejvm.com/ultimate-guide-to-java-virtual-threads/

👉@BookJava
👍7
Servlets

Создание и отладка сервлета. Servlet Intro
POST запросы, параметры, формы, файлы. Servlet Intro
JSP шаблоны для Java Servlet
JSTL для JSP (Java Servlet)
Создание JSP тэга и своей библиотеки тэгов (Java Servlet)

источник

👉@BookJava
Эволюция Java

Наиболее важные усовершенствования языка, которые были сделаны в Java за последние 20 лет

https://betterprogramming.pub/the-evolution-of-java-37e4dc8e6cc7

👉@BookJava
👍3
Вышла Java 21

Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.

Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.

Скачать JDK 21 можно по этим ссылкам:
Oracle JDK (лицензия NFTC)
OpenJDK (лицензия GPLv2 with Classpath Exception)

https://habr.com/ru/articles/762084/

👉@BookJava
👍9
Project Loom и Spring Boot: тесты производительности

Сегодня я хочу выяснить, готов ли Project Loom заменить Spring WebFlux при создании высоконагруженных приложений с высокой пропускной способностью.

Проблемы реактивного подхода
WebFlux - замечательная технология с фантастической производительностью, однако:

- При использовании реактивного подхода код сложнее писать и сопровождать
- Стектрейсы малополезны при разборе ошибок
- Все связанные клиенты/библиотеки также должны быть написаны в реактивном стиле

Что такое Project Loom

- В статусе превью-фичи с Java 19, разработка стартовала в 2017
- Основное нововведение - виртуальные потоки, призванные значительно снизить трудозатраты на написание и сопровождение приложений
- Предполагается возможность создавать миллионы виртуальных потоков. (Прим. пер. мне кажется, автору стоило явно выделить основную мысль. Поскольку виртуальные потоки дешевы, то запуск блокирующего кода в таком потоке тоже дешевая операция, т.к. реальный системный поток при этом не блокируется и может заняться чем-нибудь полезным )
- Предполагается минимальное вмешательство в существующий код
- Стек виртуальных потоков хранится в хипе JVM

Rus https://habr.com/ru/articles/745748/

Eng https://filia-aleks.medium.com/project-loom-with-spring-boot-performance-tests-c007e0e411c8

👉@BookJava
👍4🔥31👎1
Media is too big
VIEW IN TELEGRAM
Java. Быстрая сортировка. Реализация алгоритма QuickSort.

Как работает быстрая сортировка, разбор и реализация алгоритма.

источник

👉@BookJava
👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Автоматическое создание интерактивных диаграмм последовательностей поведения Java-кода во время исполнения

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

https://dev.to/appmap/automatically-generate-interactive-sequence-diagrams-of-your-java-codes-runtime-behavior-2jg0

👉@BookJava
👍5
Настройка производительности Java

Основные методы повышения скорости работы и отзывчивости приложений

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

https://developnsolve.com/java-performance-tuning

👉@BookJava
👍3
☕️ Освоение бэкэнд-разработки с помощью Java Spring Boot: лучшие практики и профессиональные советы

Spring Boot - это широко используемый и очень популярный высокопроизводительный фреймворк корпоративного уровня. Здесь приведены некоторые лучшие практики и несколько советов, которые можно использовать для улучшения приложения Spring Boot и повышения его эффективности.

https://itznihal.medium.com/mastering-backend-development-with-java-spring-boot-best-practices-and-pro-tips-3fc0f501418e

👉@BookJava