Всем привет! ???? ???? ???? Мы Java-разработчики Тинькофф: Константин, Андрей и Арсений. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и решили делиться этим не только с коллегами, но и со всем сообществом.

В этот раз эпиграф к выпуску нам придумал ChatGPT:

In the whimsical world of Java, where code dances with curiosity and logic wears a hat of wonder, our Java Digest takes you on a delightful journey through the rabbit hole of programming brilliance.

Stay tuned! ????

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

Spring Modulith 1.0 GA Released. Первый general-availability-релиз получила Spring Modulith — часть экосистемы Spring, призванная упростить построение модульных монолитов.

Announcing Testcontainers Desktop Free Application анонс утилиты, удобной для работы с тест-контейнерами. Из интересного — быстрое переключение между docker/colima/podman, возможность запуска контейнеров на фиксированных портах и их фриз на время дебага.

Релиз Jmix 2.0 — новой версии платформы для быстрой разработки бизнес-приложений на Java. В статье — подробности о том, для чего нужен этот инструмент и как он позволяет сокращать время разработки бизнес-приложения.

OpenAI выложила на Github OpenCopilot. OpenCopilot — это ИИ-помощник, способный интегрироваться в продукт. Он готов к встраиванию через базовые API и может вызывать эти API по необходимости. Модель OpenCopilot основана на обширной лингвистической базе и способна определить, требует ли запрос пользователя выполнения вызова к какой-либо конечной точке API.

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

Дмитрий Иванов, Андрей Кулешов — Пирамида потребностей Маслоу для Java/Kotlin-разработчика. Доклад — настоящая методичка, посвященная тому, как начать и развить свой open-source-проект. От стадии кодинга и до построения комьюнити — каждый шаг расписан детально, с приведением полезных инструментов и практик. 

Code Reflection — это предлагаемое усовершенствование рефлексивного программирования в Java, которое обеспечивает стандартный доступ, анализ и преобразование Java-кода.

Code reflection разработан для преодоления ограничений существующей платформы Java, когда требуется символьный доступ к Java-программам в специфических областях программирования. Например Java-программы, представляющие SQL-запросы, дифференцируемые программы, модели машинного обучения или ядра для графических процессоров. 

Upgrading from Java 17 to 21 #RoadTo21 — первое видео из серии RoadTo21. Цель этих видео — максимально подробно рассказать о том, как перейти с 17-й на 21-ю версию Java. Сделано, как обычно у Николая, весело, живо и информативно. 

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

Java 21 new feature: Virtual Threads #RoadTo21 — второе видео из серии RoadTo21, посвященное виртуальным потокам. Сделано в стиле JEP Cafe — уютная атмосфера и подробный разбор темы понятным языком. 

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

Полезные статьи

JDK 21 G1/Parallel/Serial GC changes небольшой очерк о том, как изменятся сборщики мусора в JDK 21, и о планах их развития. Основные изменения коснутся G1 GС:

  1. Hot Card Cache по умолчанию выключен.

  2. Во время полной сборки мусора G1 перемещает огромные объекты для уменьшения вероятности Out-Of-Memory-ошибок из-за фрагментации на уровне регионов.

  3. После полной сборки мусора Java heap компактнее, что уменьшает фрагментацию.

Поднимаем кластер PostgreSQL в Docker и Testcontainers — статья для тех, кто хочет научиться быстро разворачивать к Java-приложению PostgreSQL и сразу тестировать его.

Фундаментальное руководство по пакетам в Java. Java-package были введены с самого начала, на заре создания этого языка, когда он назывался Oak. Основная цель Java-пакетов — реализовать механизм пространства имен, который позволяет использовать файлы с одинаковыми именами в рамках одного проекта. Автор рассмотрел много других аспектов использования пакетов в Java.

Mastering PostgreSQL Table Partitioning туториал о партиционировании в PostgreSQL. Описано, в каких случаях стоит партиционировать таблицу, какие есть варианты партиционирования с примерами каждого, как добавлять и удалять партиции и, наконец, как работать с индексами в партиционированной таблице. То, что нужно для знакомства с темой. 

Going inside Java 21’s rich, upcoming goodnessрелиз Java 21 все ближе, и в преддверии этого долгожданного события предлагаем еще раз взглянуть на то, какие фичи она нам готовит. 

В статье Nicolai Parlog рассматривает как стабильные фичи и улучшения API, так и фичи, которые пока находятся в превью. От виртуальных тредов, sequenced-коллекций, паттерн-матчинга и Generational ZGC до Structured Concurrency, Scoped Values, Vector API, безымянных классов, переменных и паттернов. А еще там много источников для углубленного изучения.

Curly Braces #11: Writing SOLID Java code хорошая статья о принципах SOLID. Eric J. Bruno коротко рассказывает о каждом из принципов и приводит примеры из JDK, которые соответствуют этим принципам и не соответствуют. Это видно на примере с имплементациями AbstractQueue и принципом Барбары Лисков. Понимание SOLID — одно из необходимых условий для написания понятного и поддерживаемого кода. 

Новый взгляд на Maven-plugin для IDEA — GMaven. Не нравится ПО — напиши сам! Примерно так поступил автор статьи — написал альтернативу оригинальному Maven-плагину. Для общего развития интересно ????

JDBC Profiling with VisualVM - Vlad Mihalcea — статья от Vlad Mihalcea о том, как профилировать медленные JDBC-запросы к базе данных при помощи VisualVM.

JEP draft: Computed Constants. Новый интересный JEP draft предлагает ввести вычисляемые константы, которые являются частью project leyden. Эти константы представляют из себя иммутабельные контейнеры для значений, которые инициализируются максимум один раз.

The Inner Workings of Safepoints. Небольшая, но занимательная статья о том, что такое Safepoint и как они реализованы в современных JVM под капотом.

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

JavaHut #21: ChatGPT Chronicles: The Language model выпуск про генеративные нейросети в общем, а не про Java. Перечислены основные этапы развития моделей.

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

В конце — краткие рекомендации, с чего стоит начать освоение AI: материалы, упражнения, инструменты. 

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

History of Spring милая браузерная игрушка в стиле «Марио», созданная к 20-летию Spring. Управляя листочком, мы узнаем о самых важных вехах развития фреймворка с 2003 года, когда Rod Johnson, Juergen Hoeller и Yann Caroff начали его разработку в open-source как альтернативу сложному J2EE. 

Дойдем до наших дней и шестой мажорной версии фреймворка, где появилась поддержка нативной компиляции приложений для запуска на GraalVM. Познавательно, интересно, весело! Очень рекомендуем ????

Спасибо, что были с нами! Ждем обратную связь в комментариях. Увидимся через месяц ????

Комментарии (2)


  1. devg
    08.09.2023 07:30

    Ребята, подскажите судьбу проекта Kora (https://github.com/Tinkoff/kora). Его решили прекратить?


    1. IvanVakhrushev
      08.09.2023 07:30

      Нет, не думаю. Дело шло к выпуску версии 1.0.0
      Репозитории в архиве из-за санкций.
      Думаю, позднее появится информация о новых репозиториях.