
Всем привет! 👋👋👋👋👋 Мы — Java-разработчики Т-Банка: Андрей, Арсений, Роман, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.
Июль получился плотным. Valhalla после 12 лет разработки залили в master-ветку JDK одним PR на 2900 коммитов, Oracle сломал двадцатилетнюю традицию квартальных патчей и перешел на ежемесячные, а про саму Java наконец сняли полнометражный документальный фильм. Собрали все в нашем дайджесте.
Горячие JEPы

JEP 401: Value Objects (Preview) и JEP 539: Strict Field Initialization in the JVM (Preview). Первые два JEP-а проекта Valhalla переведены в Proposed to Target для JDK 28, ревью закрылось 30 июля. Сразу после форка JDK 27 работы залили в mainline: больше 2900 коммитов, свыше 200 тысяч добавленных строк почти в 1900 файлах.
JEP 541: Deprecate the macOS/x64 Port for Removal. Свежий Candidate. Apple окончательно переехала на AArch64, а поддержка Intel-порта превратилась в накладные расходы. Схема стандартная и повторяет историю с 32-битным Windows/x86: сначала deprecation, порт продолжает работать, потом удаление. Если у вас остались Intel-маки, план на ближайшие годы — сидеть на JDK 25 LTS.

По JEP 523 вышел heads-up от команды Quality Outreach. До JDK 27 JVM выбирала Serial GC, если видела один CPU или меньше 1792 МБ физической памяти. С 27-й G1 включается всегда: замеры показали, что в слабых окружениях он дает примерно тот же оверхед по памяти, чуть меньший throughput и более низкие максимальные задержки. Serial никуда не делся, его по-прежнему можно включить флагом.
Главные новости
Вышла IntelliJ IDEA 2026.2. Релиз получился очень интересным: много нововведений для работы с AI, интересные фичи для продуктивности разработки, поддержка новых версий языков, улучшения для работы со Spring и многое другое.
Новое в AI
Поддержка AI-скиллов: теперь можно скачивать и менеджить скиллы прямо через Idea и есть несколько скиллов из коробки.
Один из скиллов — ij-debugger, он позволяет агенту пользоваться инструментами дебаггера.
Поддержка сторонних AI-провайдеров для автокомплита кода.
GitHub Copilot теперь нативно интегрирован с IDE.
Новое в продуктивности разработки
Точки логирования (logpoints). Теперь не нужно писать println и перекомпилировать код для дополнительного логирования при отладке — ушла эпоха. Можно добавить специальную точку прямо во время отладки и указать, что нужно логировать, работает даже для бинарников зависимостей.
Автозаполнение зависимостей (dependency completion). Idea научилась находить и корректно подставлять зависимости с правильным пакетом, названием, версией и даже рекомендуемым скоупом для Maven и Gradle проектов.
Новое в Spring
Улучшенная поддержка Liquibase- и Flyway-миграций. При подключенном Data Source показывает, какие миграции были применены, и позволяет применить миграцию прямо из IDE.
Улучшенная поддержка Spring Security. Теперь можно настраивать доступы до ендпоинтов прямо в рантайме во время отладки.
Другое
Добавили волшебную кнопку Resolve All Simple Conflicts для всего набора конфликтов во всех файлах при мердже в Git.
Улучшенная поддержка Docker Compose.
Поддержка Terraform test framework.
IntelliJ IDEA Goes LSP: Java and Kotlin Intelligence Comes to VS Code, Cursor, and Agentic Flows. JetBrains начали работу над LSP для Java и Kotlin. Первым шагом стал экстеншен для VS Code и его форков, например Cursor-а. Экстеншен уже можно установить. Пока он в preview и бесплатен, но после релиза потребуется подписка IntelliJ IDEA Ultimate. В перспективе JetBrains целится в то, чтобы этим LSP пользовались при работе с ИИ-агентами для более эффективной разработки и экономии токенов.
Oracle переводит Java на ежемесячные патчи безопасности. 20 лет Java жила по календарю квартальных CPU: январь, апрель, июль, октябрь. Теперь между ними появятся ежемесячные Critical Security Patch Update — только фиксы безопасности и стабильности, без новых фич и изменений API.
Первый CSPU назначен на 18 августа. Официальная мотивация звучит так: последнее поколение AI изменило скорость и масштаб того, как уязвимости находят и чинят. На практике это значит, что мониторинг придется перевести с квартального на ежемесячный, а у своего вендора JDK стоит заранее уточнить, как он собирается обрабатывать CSPU. Может пригодиться разбор для тех, кто отвечает за релизный пайплайн.
Spring Cloud Contract уходит из экосистемы Spring Cloud. Spring Cloud Contract меняет прописку. Broadcom передает проект одному из его первоначальных авторов — Marcin Grzejszczak, который продолжит развивать инструмент под новым названием Stubborn.sh.
Spring Cloud Contract уберут из будущих Spring Cloud release train, а обновления для уже выпущенных активных веток прекратятся. Поэтому тем, кто использует контрактное тестирование в проде, лучше заранее посмотреть план миграции. Ждать очередной Spring Cloud BOM и надеяться, что все обновится само, уже не получится.
Embabel 1.0 GA. Род Джонсон, тот самый, который придумал Spring, довел до GA свой агентный фреймворк. В основе лежит Goal-Oriented Action Planning — техника родом из геймдева: описываем доступные действия и цели, а планировщик собирает план сам, вместо захардкоженного workflow.
В 1.0 экспериментальные API (в первую очередь RAG) переведены в продовый статус, появилась наблюдаемость через Spring Boot Actuator, из коробки идут OpenAI, Anthropic, Bedrock, Google GenAI, Ollama, DeepSeek и Z.ai GLM плюс интеграция с MCP-серверами. Собрано на Spring AI 1.1.7 и Spring Boot 3.5.x, базовая версия языка — Java 21.
Сам Джонсон говорит так: Spring AI — это Servlet API, а Embabel — Spring MVC.
Интересные видео
SIMD и Vector API в HotSpot: когда обычный цикл превращается в машинные инструкции. Большой технический доклад о том, как HotSpot пытается автоматически упаковывать обычные скалярные операции в SIMD-инструкции процессора. Автор разбирает алгоритм SuperWord, влияние выравнивания памяти и aliasing, показывает бенчмарки на массивах и MemorySegment, а затем переходит к Vector API и случаям, когда автовекторизация уже не справляется. Отдельно рассматриваются операции вроде gather, scatter и shuffle, имитация ветвлений внутри векторного кода. Хороший материал для тех, кто хочет понять, откуда JVM иногда достает почти магическое ускорение цикла.
Under the HAT: как гонять Java на GPU. Доклад Хуана Фумеро с JavaOne про HAT (Heterogeneous Accelerator Toolkit) — фреймворк параллельного программирования, который переводит Java-команды на гетерогенное железо, прежде всего на GPU. НАТ работает поверх Code Reflection API из проекта Babylon: куски обычной Java транслируются в CUDA и OpenCL, а рантайм сам решает, где разместить данные и когда их мигрировать. Тензорные ядра видеокарты становятся доступны без ухода из JVM и без ручной обвязки на JNI. Пока это исследовательская история, но она хорошо показывает, зачем вообще нужен был Babylon.
Inside Java Newscast #113: JDK 27 & Valhalla, Now!Николай Парлог за один выпуск проходит по всем фичам JDK 27 и по тому самому гигантскому Valhalla-мерджу с цифрами по коммитам и файлам. Заодно объясняет, почему value-объекты дают JIT два независимых пути оптимизации и почему это не то же самое, что records.
When Greed Is Good: Understanding Java Stream Performance. Кэй Хорстманн, автор Core Java, на JCON Europe разбирает, почему Stream API иногда летает, а иногда неожиданно проседает в производительности. Все дело в жадности промежуточных операций и в том, где стрим действительно ленивый, а где притворяется.
The Java Story — The Official Documentary. Вышла документалка о Java. Фильм охватывает историю от проекта Oak в Sun Microsystems до наших дней: как язык пережил взлеты, кризисы, судебные разбирательства и стал одной из главных платформ для разработки.
Документальный фильм собран из интервью с Джеймсом Гослингом, Джошуа Блохом и другими людьми, определявшими развитие Java на протяжении 30 лет. Из сюжетов — лицензионные войны с Microsoft, иск Google по Android API, переезд в Jakarta EE, лямбды и виртуальные потоки. Премьеру пустили прямым эфиром с чатом, в котором отвечали сами герои фильма.
Полезные статьи
Quarkus Shim: как пропатчить чужой Java-класс, не форкая библиотеку. Иногда в зависимости есть маленький баг, а ждать релиза с исправлением неизвестно сколько. Quarkus Shim предлагает дерзкое решение: во время сборки можно заменить метод чужого класса, обернуть его дополнительной логикой или выполнить свой код до и после вызова. Все происходит на этапе Quarkus augmentation — без Java Agent и без рантайм-инструментации, поэтому результат работает и в обычном JVM-режиме, и в dev mode, и в native image. Полезный инструмент для временных фиксов и диагностики, но злоупотреблять им явно не стоит: открываешь исходник библиотеки, а реальное поведение класса живет уже где-то в другом месте.
Улучшаем показатели конкурента. Специально. Редчайший жанр: Франческо Нигро от лица команды Quarkus публично разбирает, почему их собственный бенчмарк против Spring был методологически нечестным. Читать стоит не ради цифр, но ради методики: почти все холивары про производительность фреймворков ломаются на похожих дырах в методике сравнения. Спойлер: Quarkus все равно быстрее 😀
Virtual Threads After JDK 24: What Changed for Production Java. Разбор того, что реально изменилось после JEP 491, который снял pinning виртуальных потоков на synchronized-мониторах. Этот pinning был причиной, по которой Netflix и многие другие компании не использовали Loom. При этом автор отдельно подчеркивает: снятие лимита на количество потоков просто двигает бутылочное горлышко дальше, в пулы соединений, файловые дескрипторы и рейт-лимиты внешних API, так что семафоры выставлять все равно придется.
Что вам нужно знать про семантику List и Set в Hibernate. Михаил Поливаха разбирает, в каких случаях стоит использовать ту или иную коллекцию в сущностях Hibernate и почему. Тонкость заключается в том, как прокси, создаваемая Hibernate, реализует контракт соответствующей коллекции. Рассматривается два случая:
ManyToMany, в котором лучше использовать Set. Дело в том, что Hibernate точно знает, что в Set нет дубликатов, а потому может удалить связь по обоим ключам. В случае List такой гарантии нет, а значит, приходится удалять все связи по одному ключу и вставлять нужные заново.
OneToMany больше подойдет List. Дело в семантике метода add, который возвращает boolean как флаг успешности вставки. В случае Set Hibernate нужно сходить в БД и выгрузить данные, чтобы понять, вставляется дубликат или нет. Для List же это делать не нужно.
The Self-Building Agent: a LangChain4j Experiment. На InfoQ авторы рассказывают и показывают, как дали своему агенту доступ к документации LangChain4j и получили агента, который развивается по мере выполнения задач. Вместо фиксированного набора инструментов агент анализирует собственные ошибки, генерирует новые навыки, сохраняет их в библиотеку и использует в следующих запусках.
To Cache or Not to Cache Virtual Threads. Команда Quarkus решила проверить популярную идею: а что если кэшировать virtual threads вместо того, чтобы создавать новые? Эксперименты показали, почему создатели Project Loom советуют этого не делать: при ограниченной памяти пул виртуальных потоков неожиданно начинает сильно нагружать GC из-за особенностей работы JVM со StackChunk. Статья интересна тем, что авторы разбирают внутренние механизмы virtual threads и причины, почему, казалось бы, «оптимизация» — не всегда добро.

HTTP QUERY Method Explained: RFC 10008, Ecosystem Adoption, and a Quarkus Implementation. После 16 лет без изменений HTTP получил новый метод — QUERY, который по сути является стандартизированным GET с телом запроса. Он позволяет передавать сложные параметры в body, но при этом сохраняя идемпотетнтность GET. В статье разбирается новый RFC 10008, текущее состояние поддержки в Java-экосистеме и пример реализации в Quarkus.
Любопытные подкасты
Project Detroit вернулся: Java снова хочет нормально дружить с Python и JavaScript. В OpenJDK реанимировали Project Detroit — проект, который должен упростить запуск Python и JavaScript-кода из Java через знакомый API java.scripting. С JavaScript история особенно занятная: Nashorn удалили еще в JDK 16, а теперь команде платформы приходится заново отвечать на вопрос, как должен выглядеть официальный сценарий встраивания скриптов в Java-приложении. В выпуске Inside Java Podcast руководитель JVM-команды Oracle рассказывает, почему интеграции с Python и JavaScript будут устроены по-разному и что вообще заставило OpenJDK вернуться к этой идее.
Inside Java Podcast #64: JIT Compiler From the Ground Up. Роберто Лозано из Java Platform Group разбирает JIT-компиляцию с нуля. Полезно для тех, кто знает, что она есть, но не понимает, за счет чего получается ускорение.
Foojay Podcast #100: подкастеры о подкастах. Юбилейный сотый выпуск, где Франк Делпорт собрал других ведущих Java-подкастов: Адама Биена (airhacks.fm), Дженнифер Райф (Breaktime Tech Talks), Кади Маккин и Стива Пула (10xInsights), Умайму Зеруали (JCast). Подкаст не про инженерию, это отличный срез того, как устроена медиасреда вокруг Java и почему она держится на энтузиастах.
Spring АйО Подкаст, выпуски 66-69. Русскоязычное еженедельное новостное шоу про Spring и экосистему, за июль вышло четыре выпуска:
№ 69 «Новый HTTP-метод, IPv6 бесперспективен, QUERY удалят»;,
№ 68 «Программистам верить нельзя, JavaScript ломает API, List vs Set в Hibernate»;
№ 67 «Агенты портят архитектуру, IDE не нужна, Spotify не стал лучше»;
№ 66 «AI заменит Python на Spring Boot, MongoDB жива, SpringBatch 4 закончился».
Просто интересное
How We Beat HotSpot Performance (By Cheating, But Not Like That). ParparVM, AOT-компилятор Java в C для iOS, начинал с отставания от прогретой Java 25 в 4,21 раза. Сегодня он обгоняет HotSpot в шести бенчмарках из десяти. Рецепты: генерация frameless C-кода, расходящиеся bounds-check вместо вызовов функций внутри циклов, BiBOP-куча вместо malloc на каждый объект, тегированные 64-битные целые против боксинга и escape-анализ строк с переносом буферов StringBuilder на стек.
Аллокация объектов улучшилась с 19,6x до 1,19x, бенчмарк HashMap — с 36,2x до 0,95x, пиковая память 290—390 МБ против 508 у HotSpot. Цена вопроса — плюс 17 КБ к размеру бинарника.
Томаш Нуркевич начал серию статей о том, как написать свой компилятор, и первые две части уже вышли. Начинается все с простейшего интерпретатора и арифметики.
Джавовые события
JVM Day 2026 — 29 августа, Москва, штаб-квартира Т-Банка (T-Space, Грузинский Вал, 7). Только офлайн, но записи докладов пришлют участникам в течение двух недель. В программе — Java после Loom, автоматизация миграций через OpenRewrite, кэши и то, как они ломаются, перформанс, распределенные системы и безопасность. Приходите! 🙂
Joker 2026 — 14 и 15 октября, Санкт-Петербург. В первый день — современные практики разработки (JVM, перформанс, Spring, Kotlin, базы данных, агенты), во второй — разработка будущего. Можно подключиться онлайн.
Свежие релизы
GraalVM 25.2 — сжатые 32-битные ссылки на объекты в Native Image теперь включены по умолчанию, что экономит память и добавляет производительности. Плата за это — потолок кучи в 32 ГБ. Если нужно установить размер кучи больше, отключается флагом -H:-UseCompressedReferences.
Вышел Micronaut Framework 5.1.0. Из новенького: аннотация @Introspected.Property, инъекция sequenced-коллекций и Open DI 1.0.0.
Hibernate ORM 7.4.5.Final — текущая стабильная версия. Заодно 7.3 официально переведена в EOL, последний выпуск 7.3.13.Final от 2 августа.
Состоялся релиз Kotlin 2.4.10 — багфиксы компилятора и Wasm-бэкенда, стабильность классов в Compose, починки интеграции с Gradle.
LangChain4j 1.18.0 17 июля — агентный паттерн BDI с suspend и resume, интерфейс TextToSpeechModel, MistralAiBatchChatModel, улучшенные guardrails против prompt injection.
Keycloak 26.7.0 — SCIM API в превью за флагом scim-api, а step-up-аутентификация, наоборот, вышла из превью и теперь работает и для SAML-клиентов.
Kora 1.2.19, 1.2.18 — добавили поддержку Konvert для Kotlin/KSP-native плюс множество фиксов и улучшений. А еще вышел плагин для IDEA.
В последнее время заметно улучшилась документация:
Добавили 70к строк руководств по Kora для начинающих/погружения.
Добавили 30к строк доп. примеров сервисов на Java/Kotlin.
Покрытие API документацией дошло до 95%.
Спасибо за прочтение! Ждем обратную связь в комментариях. Увидимся через месяц 😉 Присылайте материалы, если встретили что-то интересное, — опубликуем в следующем выпуске!

