Компания Oracle объявила о выпуске Java 27, последней функциональной версии платформы Java, которая вышла через шесть месяцев после Java 26 в рамках регулярного цикла релизов проекта.
В релиз вошли девять предложений по усовершенствованию JDK, касающихся изменений в JVM, языковых функциях, криптографии, библиотеках и инструментах разработки. Четыре из них являются предварительными версиями, а Vector API остается в статусе инкубатора.
Одно из заметных изменений в Java 27 заключается в том, что G1 теперь является сборщиком мусора по умолчанию во всех средах. Ранее в некоторых конфигурациях JVM HotSpot могла выбирать сборщик мусора Serial. В JDK 27 всегда выбирается G1, если пользователь не указывает сборщик мусора.
Функция Compact Object Headers теперь включена по умолчанию. В 64-битных архитектурах эта функция уменьшает размер заголовков объектов с 96 до 64 бит. По данным Oracle, это снижает использование кучи, улучшает локализацию данных и позволяет большему количеству объектов помещаться в ту же память.
Кроме того, в Java 27 представлен гибридный постквантовый обмен ключами для TLS 1.3. Эта реализация сочетает традиционные криптографические алгоритмы с квантовоустойчивыми и автоматически доступна для приложений, использующих javax.net.ssl API Java, без изменения кода.
Что касается языка, то примитивные типы в шаблонах, instanceof, и switch выходят в пятой предварительной версии. Работа продолжается, чтобы примитивные значения могли более последовательно участвовать в механизмах сопоставления с образцом в Java, при этом компилятор будет тщательнее проверять switch-выражения.
Структурированный параллелизм выходит в седьмой предварительной версии. Этот API упрощает управление группами связанных параллельных задач как единым целым, особенно при обработке отмены, сбоев и завершения задач.
Ленивые константы выходят в третьей предварительной версии. Они представляют собой API для значений, которые инициализируются только при первом обращении и остаются неизменяемыми.
Тем временем Vector API проходит 12-ю итерацию инкубационного периода. Он позволяет разработчикам выполнять векторные вычисления, которые JVM может компилировать в векторные инструкции для процессора на поддерживаемом оборудовании. В первую очередь это касается рабочих нагрузок, в которых обработка в стиле SIMD может обеспечить значительный прирост производительности.
Еще одно нововведение — редактирование данных в процессе работы JFR. Java Flight Recorder теперь может редактировать аргументы командной строки, значения переменных среды и системных свойств до того, как диагностические данные покинут запущенный процесс Java. Это помогает предотвратить появление потенциально конфиденциальной информации о среде выполнения в записях.
Помимо девяти JEP, в JDK 27 включено множество небольших улучшений среды выполнения и инструментов. К ним относятся изменения в размере кучи G1, оптимизация компилятора, ускорение файловых и собственных операций ввода-вывода, оптимизация Vector API и повышение производительности нескольких криптографических алгоритмов.
Диагностические инструменты Java также не остались без внимания. JSON-дампы потоков теперь представляют выбранные идентификаторы и подсчеты в виде чисел JSON, а диагностика виртуальной машины может сообщать о количестве открытых в данный момент файловых дескрипторов. Также добавлена поддержка автодополнения Bash для утилиты jcmd .
Подробнее см. официальное объявление. Oracle планирует выпускать обновления для JDK 27 до марта 2027 года, когда его, как ожидается, заменит Java 28.
