Oracle объявила о выпуске Java 27, очередного функционального релиза платформы. Он вышел через полгода после Java 26, как и предусматривает обычный график выпуска.

В релиз вошли девять JDK Enhancement Proposals: изменения в JVM, языковые возможности, криптография, библиотеки и инструменты разработки. Четыре из них находятся в статусе preview, а Vector API по-прежнему остаётся incubation-функцией.

Одно из заметных изменений в Java 27: сборщик мусора G1 теперь выбирается по умолчанию во всех окружениях. Раньше HotSpot JVM в некоторых конфигурациях могла остановиться на Serial GC. Начиная с JDK 27 G1 выбирается всегда, если пользователь не указал сборщик явно.

Компактные заголовки объектов (Compact Object Headers) включены по умолчанию. На 64-битных архитектурах они уменьшают заголовок объекта с 96 до 64 бит. По данным Oracle, это снижает расход памяти в куче, улучшает локальность данных и позволяет разместить больше объектов в том же объёме памяти.

Java 27 также получила гибридный постквантовый обмен ключами для TLS 1.3. Реализация сочетает обычные криптоалгоритмы с устойчивыми к квантовым компьютерам, и приложения, использующие API javax.net.ssl, получают её автоматически, без правок в коде.

В языковой части пятый preview проходит поддержка примитивных типов в patterns, instanceof и switch. Работа направлена на то, чтобы примитивные значения единообразнее участвовали в механизмах сопоставления с образцом, а проверки компилятора для выражений switch стали строже.

Structured Concurrency возвращается в седьмом preview. API упрощает управление группами связанных параллельных задач как единым целым, особенно при отмене, сбоях и завершении задач.

Lazy Constants возвращается в третьем preview. Это API для значений, которые инициализируются только при первом обращении и остаются неизменяемыми.

Vector API проходит 12-ю итерацию в статусе incubator. Он позволяет описывать векторные вычисления, которые JVM компилирует в векторные инструкции CPU на поддерживаемом железе. Основная цель, рабочие нагрузки, где SIMD-обработка даёт заметный прирост производительности.

Ещё одно новшество, JFR In-Process Data Redaction. Java Flight Recorder теперь может вырезать аргументы командной строки, значения переменных окружения и системных свойств до того, как диагностические данные покинут работающий процесс Java. Это не даёт потенциально чувствительной информации о времени выполнения попадать в записи.

Помимо девяти JEP, в JDK 27 вошло много небольших улучшений runtime и инструментов: изменения в расчёте размера кучи G1, оптимизации компилятора, ускорение файлового и нативного ввода-вывода, оптимизации Vector API и рост производительности ряда криптоалгоритмов.

Доработали и диагностические инструменты. Дампы потоков в JSON теперь выводят отдельные идентификаторы и счётчики как числа JSON, а диагностика VM умеет сообщать количество открытых файловых дескрипторов. Для утилиты jcmd добавили автодополнение в Bash.

Подробности приводятся в официальном анонсе. Oracle будет выпускать обновления для JDK 27 до марта 2027 года, после чего его сменит Java 28.