- PVSM.RU - https://www.pvsm.ru -

Java Digest #2

Java Digest #2 - 1

Всем привет! 👋 👋 👋

Мы — Java-разработчики Тинькофф: Константин [1], Андрей [2] и Арсений. [3] Собираем новости, статьи, туториалы и другие интересные материалы из мира Java-разработки. Решили делиться этим не только с коллегами, но и со всем сообществом.

Джо Аберкромби писал: «Чем больше ты узнаешь — тем больше понимаешь, как мало знаешь. Однако усилие само по себе стоит того». Надеемся, наш дайджест поможет вам на этом пути. Stay tuned! 😉

Главные новости

Начался релизный цикл Java 21 [4]. Список JEP-ов, которые войдут в финальную версию, утвержден и больше не будет меняться. По расписанию релиза в общий доступ Java 21 выйдет 19 сентября. Напомним, что это LTS- релиз, а значит, пора планировать миграцию 🙂

В Intellij IDEA появится AI-ассистент. Он уже доступен в IntelliJ IDEA 2023.2 EAP 6. Заявлено, что AI может генерировать документацию, а также помогать с неймингом и сообщениями коммитов. Кроме того, прямо в среду разработки будет интегрирован чат для общения с ним. Полный перечень нововведений — в блоге IntelliJ IDEA 2023.2 EAP 6.  [5]

Интересные видео

Опубликованы доклады со Spring I/O 2023 в Барселоне [6]. Рекомендуем к просмотру:

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 [7] — подробно о поддержке Testcontainers в Spring Boot 3.1.0. Теперь конфигурировать Postgres или Kafka контейнеры получается буквально по щелчку, просто добавив соответствующие контейнеры в контекст и навесив аннотацию @ServiceConnection. 

Никаких дополнительных пропертей прописывать не нужно, все работает из коробки. А еще ту же конфигурацию контейнеров можно использовать, чтобы поднять сервис локально. Spring сконфигурирует и поднимет все контейнеры при запуске приложения. И как будто этого мало — можно пометить бины контейнеров аннотацией @RestartScope из DevTools и тогда между запусками приложения контейнеры даже не будут переподниматься. Это действительно крутые фичи, которые заставят по-другому взглянуть на разработку и тестирование java-приложений 👍

Подробнее обо всем — в новом выпуске Spring Tips. [8]

Использование оконных функций с Hibernate 5 и 6. Рассматриваются мощные возможности языка SQL — оконные функции и их работа в Hibernate. Оконные функции позволяют выполнять вычисления над определенными подмножествами строк таблицы, связанными с текущей строкой. Они подобны агрегатным функциям, но не сокращают строки до одной на выходе, сохраняя уникальность каждой строки.

Лучшие практики скриптования в Jira Server/Data Center — как написать автоматизацию на Groovy с использованием API Jira Java. Автор статьи — Сергей Трошин, администратор Atlassian в компании VKCO. Он заметил, что в интернете недостаточно сосредоточенной информации на эту тему, хотя она важна для компаний, использующих сложные средства автоматизации бизнес-процессов. В большинстве случаев таким средством является плагин Scriptrunner от Adaptavist.

Как в три раза снизить затраты на отказоустойчивую инфраструктуру, переехав с Hazelcast на Redis, — хорошая статья от команды Alfa, где автор делится опытом выбора распределенного кэша в качестве замены Hazelcast. Читается легко и интересно. Рекомендуется к прочтению тем, кто сейчас стоит перед аналогичным выбором.

Class Loader Hierarchies [12] — небольшая, но интересная статья поможет вспомнить, как работают загрузчики классов в Java. Рассматривается иерархия загрузчиков классов в Java, роль каждого класса загрузчика и порядок запроса загрузки, а еще обсуждаются дополнительные функции загрузчика. 

A New GraalVM Release and New Free License! | by Alina Yurenko [13]
GraalVM EE is Dead, Long Live Oracle GraalVM — JVM Weekly vol. 47
[14]Две интересные и полезные статьи о том, как обстоят дела у Graal VM. Если верить написанному, то изменилась лицензия и стала доступнее. Теперь не будет как таковой Enterprise-версии. К тому же в статьях много внимания уделяется новым фичам. Полезное чтиво про будущее, которое уже наступило.

Securing Spring Boot Applications With SSL [15] — рассказ о нововведении Spring Boot 3.1 — SSL Bundles. Их основная задача — создать более верхнеуровневую абстракцию над SSL и тем самым упростить настройку SSL в Spring Boot приложениях.

Migrating an Application to Native Image With Spring Boot 3 [16] — наш коллега Андрей Сулыз поделился с [17]воим опытом в миграции приложений на Spring Boot 3 и Native Image. Цифры, примеры, проблемы — все как мы любим!

Профилирование, ассемблер и все-все-все — хорошая статья про неочевидные особенности работы ключевого слова volatile. Там много ссылок и отсылок. Крайне рекомендуем!

JFR View Command [19] — в JDK21 появилась новая команда JFR.view, позволяющая получить агрегированные JFR-данные работающего приложения прямо в консоли, без выгрузки дампа и открытия его в Mission Control. Может быть полезно.

How to validate the DDL schema with Spring and Hibernate [20]— о том, как использовать инструменты Hibernate для управления и проверки схемы базы данных при работе с объектами JPA. Особое внимание уделяется Hibernate SchemaManagementTool, который позволяет генерировать сценарии DDL и проверять совместимости сопоставлений JPA с базовой схемой базы данных. Еще есть рекомендация использовать инструмент автоматического управления схемой, например Flyway, для полноценного управления схемой базы данных.

Любопытные подкасты

Podlodka #323 — Языки конфигураций. Выпуск про языки, основная задача которых — представлять данные в определенном формате: yml, json, xml и так далее. В первой половине приводится небольшой исторический экскурс, вторая же сконцентрирована на конкретных языках. Описаны их преимущества, недостатки и кейсы использования.

Javaswag #49 — Владимир Швец — от Джуна до Сеньора, как выжить в IT

Интервью с автором книги «От джуна до сеньора. Как стать востребованным разработчиком». [21] Материал по большей части софтовый. Владимир рассказывает о своем опыте в ИТ, почему решился написать книгу, что хотел в ней донести, как проходил сам процесс от собственно рукописи до издания. Слушать легко и интересно.

Просто интересное

Cognitive Load Developer's Handbook [22]. &nbsp;Keep It Simple Stupid</p>" data-abbr="Принцип KISS ">Принцип KISS — один из основополагающих в современном программировании. Он говорит о том, что писать код нужно максимально просто. Многие разработчики слышали, что не стоит создавать слишком длинные цепочки наследования, бого-классы с большим количеством ответственности, условные выражения с большой вложенностью и подобное. 

Во время мыслительного процесса человек оперирует фактами — это когнитивная нагрузка. Например, как чтение кода. В репозитории собирают примеры, как держать под контролем когнитивную нагрузку, порождаемую кодом, ведь после определенного порога мозг [23] перестает эффективно обрабатывать информацию. Рекомендуем ознакомиться и, возможно, законтрибьютить, если у вас есть свои примеры.

Также из своей криокамеры вылез Олег Чирухин с новым выпуском своего Java-дайджеста за начало июля. [24] Рекомендуем 🙂

Спасибо, что читаете! Ждем обратную связь в комментариях ✌️

P.S. Хотим поблагодарить наших коллег, которые помогали собирать материалы. Вы потрясающие! 😊

Автор: Максимов Константин

Источник [25]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/java/385840

Ссылки в тексте:

[1] Константин: https://habr.com/ru/users/maximovkl/

[2] Андрей: https://habr.com/ru/users/evertimes/

[3] Арсений.: https://habr.com/ru/users/MuonKvark/

[4] Начался релизный цикл Java 21: https://openjdk.org/projects/jdk/21/

[5] в блоге IntelliJ IDEA 2023.2 EAP 6. : https://blog.jetbrains.com/idea/2023/06/intellij-idea-2023-2-eap-6/

[6] Опубликованы доклады со Spring I/O 2023 в Барселоне: https://www.youtube.com/@SpringIOConference/videos

[7] Spring Boot Application Testing and Development with Testcontainers: https://www.atomicjar.com/2023/05/spring-boot-3-1-0-testcontainers-for-testing-and-local-development/

[8] в новом выпуске Spring Tips.: https://spring.io/blog/2023/05/18/spring-tips-go-fast-with-spring-boot-3-1

[9] habr.com: https://habr.com/ru/companies/otus/articles/743910/

[10] habr.com: https://habr.com/ru/companies/vk/articles/743376/

[11] habr.com: https://habr.com/ru/companies/alfa/articles/737630/

[12] Class Loader Hierarchies: https://mostlynerdless.de/blog/2023/06/02/class-loader-hierarchies/

[13] A New GraalVM Release and New Free License! | by Alina Yurenko: https://medium.com/graalvm/a-new-graalvm-release-and-new-free-license-4aab483692f5

[14] GraalVM EE is Dead, Long Live Oracle GraalVM — JVM Weekly vol. 47
: https://vived.substack.com/p/graalvm-ee-is-dead-long-live-oracle

[15] Securing Spring Boot Applications With SSL: https://spring.io/blog/2023/06/07/securing-spring-boot-applications-with-ssl

[16] Migrating an Application to Native Image With Spring Boot 3: https://betterprogramming.pub/experience-in-migrating-an-application-to-native-image-with-spring-boot-3-422d15efa31

[17] аш коллега Андрей Сулыз поделился с: https://medium.com/@sulyzn2012/experience-in-migrating-an-application-to-native-image-with-spring-boot-3-422d15efa31

[18] habr.com: https://habr.com/ru/articles/542156/

[19] JFR View Command: https://egahlin.github.io/2023/05/30/views.html

[20] How to validate the DDL schema with Spring and Hibernate : https://vladmihalcea.com/validate-ddl-schema-spring-hibernate/

[21] «От джуна до сеньора. Как стать востребованным разработчиком».: https://www.litres.ru/book/vladimir-shvec-32351/ot-dzhuna-do-senora-kak-stat-vostrebovannym-razrabotc-68616021/chitat-onlayn/

[22] Cognitive Load Developer's Handbook: https://github.com/zakirullin/cognitive-load

[23] мозг: http://www.braintools.ru

[24] с новым выпуском своего Java-дайджеста за начало июля.: https://habr.com/ru/companies/bar/articles/

[25] Источник: https://habr.com/ru/companies/tinkoff/articles/746310/?utm_source=habrahabr&utm_medium=rss&utm_campaign=746310