Java 26: новые возможности криптографии и поддержка HTTP/3

Компания Oracle выпустила JDK 26, это уже 17-й последовательный функциональный релиз, осуществляемый в рамках шестимесячного цикла, принятого проектом в 2018 году. В выпуск вошли десять предложений по улучшению JDK (JEP), охватывающих изменения в языке, улучшения сборки мусора, криптографические инструменты и поддержку сетевых протоколов.

API для кодирования PEM нацелен на криптографическую интеграцию

JEP 524 представляет второй превью API для кодирования криптографических объектов в формате Privacy-Enhanced Mail (PEM). Этот API преобразует ключи, сертификаты и списки отозванных сертификатов в формат PEM и декодирует их обратно в объекты Java. Цель — снизить количество ошибок ручного кодирования и улучшить взаимодействие с системами, которые уже используют PEM в качестве стандартного формата для обмена ключевыми материалами.

Отдельно JEP 500 под названием «Подготовка к тому, чтобы Final действительно означал Final» выводит предупреждения компилятора, когда для изменения финальных полей используется глубокое отражение (deep reflection). Это изменение укрепляет принцип «целостности по умолчанию» в Java, как его описывает Oracle. Ожидается, что в будущем релизе эти предупреждения станут жёсткими ограничениями.
Помимо JEP, в выпуск добавлена поддержка гибридного шифрования с открытым ключом для упрощённого безопасного шифрования, устойчивая к квантовым компьютерам подпись JAR-файлов для целостности цепочек поставок, а также расширенный контроль над криптографическими алгоритмами и устаревшими хранилищами ключей.

HTTP/3 добавлен в стандартную библиотеку

JEP 517 добавляет поддержку протокола HTTP/3 в HTTP Client API. Теперь приложения могут взаимодействовать с серверами HTTP/3 с минимальными изменениями кода. Это обновление нацелено на микросервисы и рабочие нагрузки, управляемые API, где важна низкая сетевая задержка. HTTP Client API уже поддерживал протоколы HTTP/1.1 и HTTP/2.

Улучшения сборщика мусора и времени запуска

JEP 522 сокращает синхронизацию между потоками приложения и сборщиком мусора G1 для повышения пропускной способности. Цель — обрабатывать больший объём работы за единицу времени на том же оборудовании.

JEP 516, являющийся частью Project Leyden, расширяет возможность предварительного кэширования объектов (ahead-of-time) для работы с любым сборщиком мусора, включая ZGC. Он загружает предварительно инициализированные Java-объекты из формата кэша, не зависящего от сборщика мусора, во время запуска. Этот JEP основывается на более ранней работе Project Leyden, направленной на сокращение разрыва между временем холодного старта JVM и пиковой производительностью.

Превью возможностей языка и библиотек

JEP 530 продолжает четвёртый предварительный просмотр примитивных типов в паттернах, операторе instanceof и выражениях switch. Это изменение снимает ограничения на использование примитивных типов в конструкциях сопоставления с образцом и добавляет более строгие проверки доминирования, чтобы компилятор мог выявлять более широкий класс ошибок программирования.

JEP 526 представляет второй предварительный просмотр ленивых констант — API для объектов, содержащих неизменяемые данные, которые JVM рассматривает как истинные константы во время выполнения. Приложения могут откладывать инициализацию этих констант, не теряя при этом производительности, характерной для объявления финальных полей.

JEP 525 отмечает шестой предварительный просмотр структурированного параллелизма — API, который рассматривает связанные задачи, выполняемые в разных потоках, как единую рабочую единицу. Этот API разработан для уменьшения утечек потоков и повышения надёжности последовательностей отмены и завершения в параллельном коде.

JEP 529 продолжает развитие Векторного API в его одиннадцатой инкубационной итерации. Этот API выражает векторные вычисления, которые компилируются в аппаратные векторные инструкции на поддерживаемых архитектурах ЦП, ориентируясь на задачи анализа данных и логического вывода в ИИ.

API апплетов удалён

JEP 504 удаляет API апплетов, который был объявлен устаревшим и предназначенным к удалению в JDK 17. Это удаление сокращает поверхность платформы и устраняет код, для которого больше не осталось пути выполнения в браузерах.

Данные о вкладе

Из 2535 проблем в JIRA, отмеченных как исправленные в JDK 26, инженеры Oracle решили 1729. Оставшиеся 806 поступили от участников из таких организаций, как Alibaba, ARM, Google, IBM, Microsoft, NVIDIA, Red Hat и SAP, а также от небольших компаний и независимых разработчиков.

Портфолио Oracle Java Verified

Параллельно с выпуском JDK, Oracle запустила Портфолио Oracle Java Verified — курируемый набор поддерживаемых компонентов, включающий коммерческую поддержку JavaFX, фреймворк микросервисов Helidon и расширение Java Platform для Visual Studio Code. Oracle также восстанавливает коммерческую поддержку JavaFX, которая будет охватывать все новые версии Java и все версии, находящиеся под активной долгосрочной поддержкой. Поддержка JavaFX на JDK 8 продлена до марта 2028 года.

JDK 26 — это стандартный выпуск с новыми функциями, а не выпуск с долгосрочной поддержкой. Oracle будет предоставлять обновления до сентября 2026 года, когда запланирован выход JDK 27.