Всем привет! 👋 👋 👋
Мы — Java-разработчики Тинькофф: Константин, Андрей и Арсений. Собираем новости, статьи, туториалы и другие интересные материалы из мира Java-разработки. Решили делиться этим не только с коллегами, но и со всем сообществом.
Джо Аберкромби писал: «Чем больше ты узнаешь — тем больше понимаешь, как мало знаешь. Однако усилие само по себе стоит того». Надеемся, наш дайджест поможет вам на этом пути. Stay tuned! 😉
Главные новости
Начался релизный цикл Java 21. Список JEP-ов, которые войдут в финальную версию, утвержден и больше не будет меняться. По расписанию релиза в общий доступ Java 21 выйдет 19 сентября. Напомним, что это LTS- релиз, а значит, пора планировать миграцию 🙂
В Intellij IDEA появится AI-ассистент. Он уже доступен в IntelliJ IDEA 2023.2 EAP 6. Заявлено, что AI может генерировать документацию, а также помогать с неймингом и сообщениями коммитов. Кроме того, прямо в среду разработки будет интегрирован чат для общения с ним. Полный перечень нововведений — в блоге IntelliJ IDEA 2023.2 EAP 6.
Интересные видео
Опубликованы доклады со Spring I/O 2023 в Барселоне. Рекомендуем к просмотру:
Spring I/O 2023 — Keynote:
Juergen Hoeller подробно рассказывает о том, какие изменения во фреймворке будут доступны и как они соотносятся с последними фичами JDK:
Kotlin goes WebAssembly. В Kotlin 1.8.20 представили новый таргет для компиляции Kotlin-кода — WebAssembly. На видео Себастьян показывает, как написать приложение под запуск в браузере и на node.js, который также поддерживает WebAssembly. Пока фича сыровата и требует полировки, но уже сейчас можно с нею поиграть:
Владимир Ситников — B-tree-индексы в базах данных на примере PostgreSQL. Простой, но информативный доклад, раскрывающий тему B-tree-индексов. Большой плюс — прекрасная визуализация и наглядные примеры. Автор разбирает основные кейсы, которые могут встретиться в повседневной работе:
Иван Пономарев — Презентация как код. Asciidoctor, RevealJs, IntelliJ IDEA + Asciidoctor plugin, Maven + AsciiDoctorJ — это стек для создания презентаций 🙂 Иван демонстрирует технику Presentation As A Code, подразумевающую, что весь контент презентации ОПИСАН декларативно на Asciidoctor, а потом собран в удобный формат. Основной плюс этой техники — гибкость, причем это касается как представления контента, так и работы с изменениями через систему контроля версий:
Полезные статьи
Spring Boot Application Testing and Development with Testcontainers — подробно о поддержке Testcontainers в Spring Boot 3.1.0. Теперь конфигурировать Postgres или Kafka контейнеры получается буквально по щелчку, просто добавив соответствующие контейнеры в контекст и навесив аннотацию @ServiceConnection.
Никаких дополнительных пропертей прописывать не нужно, все работает из коробки. А еще ту же конфигурацию контейнеров можно использовать, чтобы поднять сервис локально. Spring сконфигурирует и поднимет все контейнеры при запуске приложения. И как будто этого мало — можно пометить бины контейнеров аннотацией @RestartScope из DevTools и тогда между запусками приложения контейнеры даже не будут переподниматься. Это действительно крутые фичи, которые заставят по-другому взглянуть на разработку и тестирование java-приложений 👍
Подробнее обо всем — в новом выпуске Spring Tips.
Использование оконных функций с Hibernate 5 и 6. Рассматриваются мощные возможности языка SQL — оконные функции и их работа в Hibernate. Оконные функции позволяют выполнять вычисления над определенными подмножествами строк таблицы, связанными с текущей строкой. Они подобны агрегатным функциям, но не сокращают строки до одной на выходе, сохраняя уникальность каждой строки.
Лучшие практики скриптования в Jira Server/Data Center — как написать автоматизацию на Groovy с использованием API Jira Java. Автор статьи — Сергей Трошин, администратор Atlassian в компании VKCO. Он заметил, что в интернете недостаточно сосредоточенной информации на эту тему, хотя она важна для компаний, использующих сложные средства автоматизации бизнес-процессов. В большинстве случаев таким средством является плагин Scriptrunner от Adaptavist.
Как в три раза снизить затраты на отказоустойчивую инфраструктуру, переехав с Hazelcast на Redis, — хорошая статья от команды Alfa, где автор делится опытом выбора распределенного кэша в качестве замены Hazelcast. Читается легко и интересно. Рекомендуется к прочтению тем, кто сейчас стоит перед аналогичным выбором.
Class Loader Hierarchies — небольшая, но интересная статья поможет вспомнить, как работают загрузчики классов в Java. Рассматривается иерархия загрузчиков классов в Java, роль каждого класса загрузчика и порядок запроса загрузки, а еще обсуждаются дополнительные функции загрузчика.
A New GraalVM Release and New Free License! | by Alina Yurenko
GraalVM EE is Dead, Long Live Oracle GraalVM — JVM Weekly vol. 47
Две интересные и полезные статьи о том, как обстоят дела у Graal VM. Если верить написанному, то изменилась лицензия и стала доступнее. Теперь не будет как таковой Enterprise-версии. К тому же в статьях много внимания уделяется новым фичам. Полезное чтиво про будущее, которое уже наступило.
Securing Spring Boot Applications With SSL — рассказ о нововведении Spring Boot 3.1 — SSL Bundles. Их основная задача — создать более верхнеуровневую абстракцию над SSL и тем самым упростить настройку SSL в Spring Boot приложениях.
Migrating an Application to Native Image With Spring Boot 3 — наш коллега Андрей Сулыз поделился своим опытом в миграции приложений на Spring Boot 3 и Native Image. Цифры, примеры, проблемы — все как мы любим!
Профилирование, ассемблер и все-все-все — хорошая статья про неочевидные особенности работы ключевого слова volatile. Там много ссылок и отсылок. Крайне рекомендуем!
JFR View Command — в JDK21 появилась новая команда JFR.view, позволяющая получить агрегированные JFR-данные работающего приложения прямо в консоли, без выгрузки дампа и открытия его в Mission Control. Может быть полезно.
How to validate the DDL schema with Spring and Hibernate — о том, как использовать инструменты Hibernate для управления и проверки схемы базы данных при работе с объектами JPA. Особое внимание уделяется Hibernate SchemaManagementTool, который позволяет генерировать сценарии DDL и проверять совместимости сопоставлений JPA с базовой схемой базы данных. Еще есть рекомендация использовать инструмент автоматического управления схемой, например Flyway, для полноценного управления схемой базы данных.
Любопытные подкасты
Podlodka #323 — Языки конфигураций. Выпуск про языки, основная задача которых — представлять данные в определенном формате: yml, json, xml и так далее. В первой половине приводится небольшой исторический экскурс, вторая же сконцентрирована на конкретных языках. Описаны их преимущества, недостатки и кейсы использования.
Javaswag #49 — Владимир Швец — от Джуна до Сеньора, как выжить в IT
Интервью с автором книги «От джуна до сеньора. Как стать востребованным разработчиком». Материал по большей части софтовый. Владимир рассказывает о своем опыте в ИТ, почему решился написать книгу, что хотел в ней донести, как проходил сам процесс от собственно рукописи до издания. Слушать легко и интересно.
Просто интересное
Cognitive Load Developer's Handbook. Keep It Simple Stupid</p>" data-abbr="Принцип KISS ">Принцип KISS — один из основополагающих в современном программировании. Он говорит о том, что писать код нужно максимально просто. Многие разработчики слышали, что не стоит создавать слишком длинные цепочки наследования, бого-классы с большим количеством ответственности, условные выражения с большой вложенностью и подобное.
Во время мыслительного процесса человек оперирует фактами — это когнитивная нагрузка. Например, как чтение кода. В репозитории собирают примеры, как держать под контролем когнитивную нагрузку, порождаемую кодом, ведь после определенного порога
Также из своей криокамеры вылез Олег Чирухин с новым выпуском своего Java-дайджеста за начало июля. Рекомендуем 🙂
Спасибо, что читаете! Ждем обратную связь в комментариях ✌️
P.S. Хотим поблагодарить наших коллег, которые помогали собирать материалы. Вы потрясающие! 😊
Автор: Максимов Константин