Всем привет! ? ? ?
Мы — Java-разработчики Тинькофф: Константин, Андрей и Арсений. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и решили делиться этим не только с коллегами, но и со всем сообществом.
Сегодня вспомним Гете: «Не бойся, я от слов не отступлюсь. И отчего бы стал я вероломней? Ведь если в росте я остановлюсь, Чьей жертвою я стану, всё равно мне».
Фауст — это человек, стремящийся к постоянному развитию и познанию жизни во всей ее полноте. Надеемся, наш дайджест поможет вам в этом. Stay Tuned! ?
Главные новости
Вышла Java 21 LTS!!! Ура, коллеги! ? Мы долго ждали эту версию Java — и вот она вышла в релиз, с чем наша редакция поздравляет всех читателей! Интересное в новой версии:
Вышло три кандидата на JEP!
JEP 455: Primitive types in Patterns, instanceof, and switch (Preview) — улучшает паттерн-матчинг, позволяя использовать шаблоны для примитивных типов во всех контекстах шаблонов, согласовать семантику шаблонов примитивных типов с instanceof и расширить оператор switch, чтобы использовать примитивные константы в качестве меток case.
JEP 456: Unnamed Variables and Patterns — расширение языка Java с безымянными переменными, которые могут быть инициализированы, но не использованы. А еще — с безымянными шаблонами, которые сопоставляются с компонентом записи, не указывая имя или тип компонента. Оба обозначаются символом подчеркивания. Эта фича уже есть в Java 21, но в качестве preview, предлагается завершить изменение.
JEP 457: Class-File API (Preview) — стандарт API для разбора, генерации и трансформации файлов классов Java. API будет в preview.
JPA and React Plugins: From Buddies To Full Members of The JetBrains Family. Популярный плагин JPA Buddy для Intellij Idea становится частью Jetbrains. Теперь полный функционал JPA Buddy будет встроен в Idea начиная с версии 2023.3, без дополнительных подписок.
PostgreSQL 16 Released! В новой мажорной версии PostgreSQL ждет много интересного. Улучшен планировщик запросов, теперь он эффективнее работает с right и full join, с select distinct и оконными функциями. Появилось больше возможностей для работы с JSON и другие улучшения синтаксиса и psql. Стал лучше мониторинг, логическая репликация и безопасность.
Интересные видео
В течение всего этого месяца на канале Java выходила серия роликов RoadTo21. Мы рассказывали о двух первых эпизодах в прошлом выпуске и предлагаем ознакомиться с остальными:
Java 21 JVM & GC Improvements #RoadTo21 — смотрим про улучшения производительности и сборки мусора. Разберемся, в чем Java стала лучше или хуже по производительности, особое внимание — новому сборщику ZGC.
Java 21 Tool Enhancements: Better Across the Board #RoadTo21 — эпизод про инструментарий, который поставляет JDK. Будет все: от улучшений в любимом компиляторе javac и инструменте для генерации документации javadoc до инструментов мониторинга вроде JFR. А еще затронуты инструменты для разработки, деплоя и обеспечения безопасности приложений.
Java 21 Security Updates #RoadTo21 — к слову о безопасности. В Java 21 много улучшений, связанных с этой важной темой. Новые алгоритмы шифрования, протоколы, механизм инкапсуляции ключей, улучшения в API, изменения в работе с хранилищем cacerts и многое другое.
Java 21 API New Features #RoadTo21 — эпизод про новые фишки Java API. Смотрим про методы классов для работы со строками, изменения в Collections Framework, возможности методов Thread и Future, какие еще классы теперь имплементируют интерфейс AutoClosable и о многом другом, что заметно упрощает написание кода на нашем любимом языке.
Java21 Brings Full Pattern Matching #RoadTo21. Java 21 — первый релиз Java, в котором завершены все основные функции паттерн-матчинга. Sealed-типы и типовые patterns в улучшенном операторе switch, а еще введены паттерны для Records.
Spring Tips: Making the Joyful Jump to Java 21 — Джош Лонг про Java 21. Несмотря на то что это Spring Tips, самого Spring-а тут почти нет. Большую часть видео Джош рассказывает о новых фичах, подкрепляя свой рассказ бодрым лайвкодингом. Интригует конец видео, где Джош рассказывает о виртуальных тредах и показывает, как в Spring Boot 3.2 установкой всего одной проперти получить их поддержку в приложении на Spring прямо из коробки.
Плейлист JPoint 2023 пополнился несколькими докладами. Запасаемся вкусностями и бежим смотреть! Рекомендуем:
Андрей Беляев — DTO: живи быстро, гори ярко — интересный доклад, который разбирает по винтикам всем известный паттерн DTO: реализация DTO, способы маппинга, сокрытие полей и многое другое.
Максим Морев — DDD в действии — cookbook о том, как можно внедрить у себя в проекте DDD и какой профит от этого получить.
Полезные статьи
This is the Beginning of the End of the N+1 Problem: Introducing Single Query Loading
В Spring Data JDBC, начиная с версии 3.2.0-M2, добавляется поддержка single query loading, можно загружать произвольные деревья сущностей, исполняя всего один запрос с использованием аналитических функций.
Перестаем бояться генерировать байт-код. Не так часто выходят статьи про байт-код, а про его генерацию и того реже. Если вам интересно порыться в Java и попробовать создать внутри приложения свои блоки байт-кода — эта статья для вас. Автор на примерах покажет, почему байт-код — это не так уж сложно и как укротить его в своих целях.
How to find the source of an SQL query generated by Hibernate. Как часто вы оказываетесь в ситуации, что DBA скидывают проблемный запрос, сгенерированный Hibernate, а вы понятия не имеете, откуда он взялся? В статье Vlad Mihalcea рассказывает, как легко решить эту проблему с помощью проекта Hypersistence Utils. Просто подключите зависимость, добавьте логер, установите нужный уровень логирования — и вуаля, у вас в логах не только запросы, но и стектрейс до вашего кода.
Аннотации и рефлексия в Java. Никогда не писали свои аннотации для Java? Все бывает в первый раз! С ними можно создавать более гибкие, адаптивные и понятные приложения. Статья — обзор этого прекрасного инструмента показывает, как аннотации сочетаются с рефлексией и как они могут упростить жизнь в ваших проектах. А вы используете собственные аннотации в проектах?
Virtual Threads — гайд по использованию виртуальных потоков от Oracle. Есть примеры использования виртуальных потоков, объясняется, как дебажить их при помощи JFR.
Просто интересное
Spring AI Provides Integration with OpenAI and Azure OpenAI
На конференции SpringOne презентовали новый экспериментальный проект в экосистеме Spring — SpringAI. Главная фишка — предоставить больший уровень абстракции, чтобы одинаково интегрироваться с различными провайдерами генеративных ИИ. На данном этапе поддерживаются OpenAI и Azure OpenAI.
Спасибо за прочтение! Ждем обратную связь в комментариях. Увидимся через месяц ?