В июньские новости Java разом попали семь релизов и крупных обновлений: от A2A Java SDK 1.0 до второго RC Gradle 9.6 и первого milestone для Eclipse JNoSQL 1.2. По данным InfoQ, это не набор случайных патчей, а довольно точный срез того, куда сейчас двигается Java-экосистема: больше агентных сценариев, больше внимания к observability, быстрее цикл сборки и осторожное, но заметное обновление enterprise-стека.
Самый яркий пункт в этой подборке — GA-релиз A2A Java SDK 1.0.0, библиотеки для реализации Agent2Agent Protocol в Java-приложениях. Для тех, кто следит за агентной темой без лишнего хайпа, сигнал понятный: идея межагентного взаимодействия постепенно вылезает из демо и заходит в нормальный SDK-режим. В версии 1.0 разработчики добавили integration test kit, Quarkus-агент для проверки совместимости между SDK и возможность пробрасывать HTTP-заголовки ответа через интерфейс A2AHttpResponse и класс A2AClientHTTPError. Рядом с этим вышел первый release candidate A2A Java SDK for Jakarta Servers 1.0.0 — интеграция того же стека для Jakarta EE-серверов. Там, помимо исправлений, переименовали пакеты и artifact ID, обновили TCK под A2A Java SDK 1.0.0 и заявили поддержку Windows. Для команд, которые смотрят на agentic-приложения не как на игрушку для презентации, а как на будущую часть корпоративной интеграции, это уже вполне прикладной материал.
Вторая важная линия — Jakarta EE 12. Jakarta EE Developer Advocate Ивар Гримстад пишет, что релиз идет примерно по плану: спецификации, входящие в Core Profile, уже выпустили milestone-версии или близки к этому, а большая часть Web Profile и Platform тоже находится в рабочем состоянии. На платформенном созвоне снова обсуждали конфигурацию в Jakarta EE и возможность переноса MicroProfile Config в основной стек — возможно, в виде Jakarta Config. Одновременно поднимался не самый гламурный, но критичный вопрос: как развязать зависимость от CDI, чтобы не получить циклические зависимости. Для enterprise-Java это важнее, чем звучит. Если конфигурацию действительно встроят в Jakarta EE более последовательно, платформе будет проще отбиваться от вечной претензии про раздробленность стандартов. Дополнительный штрих: GlassFish подал Compatibility Certification Requests не только для Jakarta EE 11 Platform, но и для Jakarta EE 11 Core Profile. Обычно он так не делал, и это может означать, что GlassFish готовят к роли ratifying implementation и для Jakarta EE 12 Core Profile. Параллельно к milestone 2 движутся Jakarta Connectors 3.0, Jakarta Faces 5.0, Jakarta Transactions 2.1 и Jakarta JSON Processing 2.2. Иными словами, в новости Java попал не просто status update, а маркер того, что следующий цикл Jakarta EE уже начинает обрастать очертаниями.
Инструменты догоняют темп разработки
Если смотреть на developer experience, то здесь главная новость недели — Gradle 9.6.0 RC2. Из заметных изменений три особенно практичны. Во-первых, Gradle улучшает hit rate Configuration Cache за счет более точного учета project properties, переданных через системные свойства и переменные окружения. Для больших CI-пайплайнов это не косметика, а время сборки, которое перестает утекать по капле на каждом прогоне. Во-вторых, появился флаг --non-interactive, отключающий интерактивные запросы в логах и problem reports в автоматизированных средах. Небольшая деталь, но любой, кто однажды ловил зависшую сборку в CI из-за лишнего ожидания ввода, знает цену таких мелочей. В-третьих, Gradle объявил deprecated-поведение для неявного поиска свойств и методов родительских проектов в Groovy DSL; окончательно это уберут в Gradle 10.0. Для команд с наследием на Groovy-скриптах это раннее предупреждение: лучше разгрести магию сейчас, чем потом чинить сборку под дедлайн.
Рядом идут обновления из мира observability. После трех milestone-релизов и одного RC вышел Micrometer Metrics 1.17.0; после четырех milestone и одного RC — Micrometer Tracing 1.7.0. В первом случае акцент на bug fixes, документации и обновлении зависимостей. Во втором изменение точечное, но показательное: обновление до OpenTelemetry Instrumentation 2.28.0. Сами по себе такие релизы редко выглядят как громкие новости Java, зато именно на них держится скучная, но необходимая предсказуемость продовых систем. Для платформенных команд это означает привычную работу: перепроверить совместимость, обновить BOM, прогнать наблюдаемость в staging и убедиться, что после очередного обновления не отвалились трассировки и метрики на стыке библиотек. Без фанфар, зато с пользой.
Ниже по стеку тоже есть, на что посмотреть. GraalVM Native Build Tools 1.1.2 получил поддержку Macaron для проверок в GitHub Actions workflows и возможность настраивать grund — polyglot reference checker для валидации и чтения ID-цитат в Markdown-документах и комментариях к исходникам. Новость нишевая, но хорошо показывает, как инструменты вокруг native-сборок становятся взрослее и аккуратнее в интеграции с реальными инженерными процессами. OpenXava 7.7.3, в свою очередь, привез исправления, обновление зависимостей, улучшения документации, а также поддержку французских и немецких переводов для labels и messages и новые общие метки для приложений. Это уже история не про хайповые фреймворки, а про зрелый enterprise-инструментарий, который продолжает допиливаться там, где команда действительно живет годами, а не до конца квартала.
Что это значит для команд
Отдельного внимания заслуживает Eclipse JNoSQL 1.2.0-M1. Проект поднял минимальную версию до JDK 21, улучшил обработку наследования в классе CustomRepositoryHandler, добавил поддержку scalar function expressions в строковых запросах Jakarta Data Query Language — UPPER, LOWER, LEFT, RIGHT, LENGTH и ABS — и объявил deprecated старый движок Jakarta NoSQL repositories в пользу нового движка Jakarta Data repositories. Это выглядит как спокойная, но недвусмысленная миграция к более современному основанию. Для команд, которые работают с NoSQL через abstractions в Java, новость проста: пора оценивать, насколько текущий код и инфраструктура готовы к JDK 21 и к дальнейшему смещению в сторону Jakarta Data. Заодно на прошлой неделе вышли JDK 27 Build 26 и JDK 28 Build 2 в early access, обе сборки содержат очередные исправления относительно предыдущих билдов. Для большинства production-команд это пока фон, но фон полезный: Java продолжает ехать вперед сразу на нескольких скоростях — LTS и enterprise-стандарты, быстрые toolchain-релизы и ранние JDK-сборки.
Если собрать все это вместе, картина выходит трезвая и довольно обнадеживающая. Java-рынок не пытается каждый вторник изобретать новый культ, зато методично закрывает то, что реально болит у команд: стандартизацию Jakarta EE, предсказуемость сборки в Gradle, совместимость observability-стека, native-инструменты для production и первые взрослые шаги агентных SDK. Главный вопрос теперь не в том, появятся ли еще релизы с красивыми номерами, а в том, кто быстрее превратит этот набор обновлений в рабочую архитектуру: платформенные команды с сильной инженерной дисциплиной или те, кто снова отложит миграции до момента, когда deprecated внезапно станет removed.