Вышла Axiom JDK Pro 25

Вышла Axiom JDK Pro 25

Сегодня вышла Axiom JDK Pro 25. Новая версия содержит:

  • 2863 исправлений, из которых 2704 в JDK и 159 в FX.
  • 18 JEP с новыми, финализированными, улучшенными и удалёнными фичами.

Чтобы попробовать Axiom JDK 25:

  • Для разработчиков: войдите в личный кабинет разработчика, в разделе ПродуктыAxiom JDK Standard выберите подходящую платформу и соответствующую версию для загрузки.
  • Текущим клиентам: войдите в учётную запись на портале поддержки и в Центре загрузок скачайте Axiom JDK Pro 25.

Этот релиз включает много изменений, направленных на снижение порога входа в Java, улучшение JDK Flight Recorder (JFR), AOT-улучшения и другие.

Список JEP в JDK 25: резюме

JDK 25 — первая после JDK 21 версия с долгосрочной поддержкой (LTS). Самое время изучить новые возможности Java и морально подготовиться к будущей миграции.

В этой версии много фичей, направленных на упрощение процесса разработки Java-приложений. Кратко о JEP:

Язык и спецификация

  • 507: Примитивные типы в паттернах, instanceof и switch (третья предварительная версия) делают instanceof и switch более удобными для работы с примитивными типами данных.
  • 511: Module Import Declarations упростит написание небольших программ, вводя концепции последовательно и не требуя знаний о классах и модулях с самого начала.
  • 512: Compact Source Files and Instance Main Methods упростит написание небольших программ, вводя концепции последовательно и не требуя знаний о классах и модулях с самого начала.
  • 513: Flexible Constructor Bodies конструкторы теперь могут содержать операторы перед явным вызовом конструктора super(..) или this(..). Эти операторы не могут ссылаться на создаваемый экземпляр, но могут инициализировать его поля. Это делает классы более надёжными при переопределении методов.

Библиотеки

  • 470: PEM Encodings of Cryptographic Objects (предварительная версия) предлагает внедрить API для кодирования объектов, представляющих криптографические ключи, сертификаты в широко используемый транспортный формат PEM (Privacy-Enhanced Mail), а также для декодирования из этого формата обратно в объекты.
  • 506: Scoped Values вводит значения с ограниченной областью действия, которые позволяют методу обмениваться неизменяемыми данными как с вызываемыми методами в рамках одного потока, так и с дочерними потоками. Scoped Values проще в понимании, чем локальные переменные потока. Они также требуют меньше пространства и времени, особенно при использовании вместе с виртуальными потоками (JEP 444) и structured concurrency (JEP 505).
  • 510: Key Derivation Function API (KDF) представляет в пакете javax.crypto новое API, реализующее функции генерации производного ключа — javax.crypto.KDF.

Многопоточность

  • 505: Structured Concurrency (пятая предварительная версия) предлагает подход многопоточного программирования, главная идея которого заключается в следующем: если задача расщепляется на несколько конкурентных подзадач, то эти подзадачи воссоединяются в блоке кода главной задачи. При этом все подзадачи логически сгруппированы и организованы в иерархию, а каждая подзадача ограничена по времени жизни областью видимости блока кода главной задачи.

Производительность и рантайм

  • 514: Ahead-of-Time Command-Line Ergonomics призван упростить создание AOT-кэшей, которые ускоряют запуск Java-приложений, путём упрощения команд, необходимых для типичных случаев использования.
  • 515: Ahead-of-Time Method Profiling предлагает улучшить время прогрева, сделав профили выполнения методов из предыдущего запуска приложения мгновенно доступными при запуске виртуальной машины HotSpot. Это позволит JIT-компилятору генерировать нативный код сразу после запуска приложения, а не ждать сбора профилей.
  • 519: Compact Object Headers в рамках Project Lilliput объединяют mark word и указатель на класс, сжимая итоговый заголовок до 64 бит. Уменьшение размера заголовков объектов снизит объём используемых данных в памяти, что потенциально уменьшит нагрузку на CPU и снизит потребление памяти в Java-программах.
  • 521: Generational Shenandoah сможет динамически адаптировать размеры поколений и связанные параметры, что позволит сохранить низкие паузы, уменьшить использование памяти и в целом повысить производительность.

Профилирование

  • 509: JFR CPU-Time Profiling (экспериментальная версия) предлагает улучшение JDK Flight Recorder (JFR) для сбора более точной информации о профилировании времени процессора в Linux.
  • 518: JFR Cooperative Sampling предлагает повысить стабильность JDK Flight Recorder (JFR) при асинхронном семплировании стека Java-потоков. Для этого трассировка вызовов будет выполняться только в safepoint-ах, с минимизацией смещения (safepoint bias).
  • 520: JFR Method Timing & Tracing добавляет расширение JDK Flight Recorder (JFR) для тайминга и трассировки методов с помощью инструментации байткода.

Прочее

  • 502: Stable Values (предварительная версия) представляет API для объектов, содержащих неизменяемые данные. Stable Values обрабатываются JVM как константы, что позволяет осуществлять те же оптимизации производительности, что и при объявлении поля final. По сравнению с final-полями Stable Values обеспечивают большую гибкость в отношении времени их инициализации.
  • 503: Удаление 32-битного порта x86 предполагает, что исходный код и инфраструктура сборки для поддержки систем x86 (32 бит) полностью удалены.
  • 508: Vector API (десятый инкубатор) повышает производительность расчётов на массивах однотипных данных, которые компилируются в векторные инструкции во время исполнения приложения.

Подробнее о каждом JEP читайте в цикле статей: Что нового в Java 25. Часть 1, Что нового в Java 25. Часть 2, Что нового в Java 25. Часть 3.

Что ещё изменилось

Прекращение поддержки некоторых ОС

Axiom JDK Pro 25 недоступен на Windows x86 (32-бит) и macOS 10.x и не может быть запущен на них.

Обновление базы данных часовых поясов

В Axiom JDK Pro 25 обновлена база данных часовых поясов IANA до версии 2025b.

Ключевые изменения этого обновления:

  • Для чилийского региона Айсен создан новый часовой пояс America/Coyhaique, в котором теперь будет действовать круглогодичное время UTC−03 (без перехода на летнее время).
    • Это отличается от времени в Америке/Сантьяго с 20 марта 2025 года.
    • В Айсене часы не будут переведены 5 апреля 2025 года.
    • Это соответствует времени в Айсене и региону Магальянес.
  • Иран перешёл с UTC+04 на UTC+03:30 10 ноября 1978 года, а не в конце года, как было зафиксировано ранее.
  • Улучшено поведение инструмента zic:
    • Он больше не создаёт недействительные символические ссылки при использовании -l с несколькими аргументами.
    • Устранена проблема с переполнением буфера.

Выводы

Чтобы спланировать процесс миграции на Axiom JDK 25 LTS, установите Axiom JDK 25 и протестируйте новые возможности Java.

25 сентября состоится Java Rock Stars Meetup, на котором мы обсудим фичи Java 25, Project Leyden, поговорим про Spring и пообщаемся вживую. Регистрируйтесь по ссылке и добавляйтесь в чат Java Rock Stars Meetup в Telegram, чтобы быть в курсе новостей митапа. Там же мы выкладываем фотографии с митапа и обсуждаем разные вопросы о Java и Spring. До встречи на митапе!

А еще подписывайтесь на наш Telegram-канал и блог на Хабр, чтобы быть в курсе новостей мира Java и Axiom JDK.

Author image

Сергей Лунегов

Директор по продуктам Axiom JDK

Axiom JDK info@axiomjdk.ru Axiom JDK logo Axiom JDK На страже безопасности Java 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67 Axiom JDK 199 Obvodnogo Kanala Emb. 190020 St. Petersburg RU +7 812-336-35-67