Вышла Axiom JDK Pro 24

Вышла Axiom JDK Pro 24

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

  • 2772 исправлений, из которых 2597 в JDK и 175 в FX.
  • 24 JEP с новыми, финализированными, улучшенными, удалёнными и deprecated-фичами, а также фичами, подготовленными к удалению.

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

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

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

JDK 24 не является версией с долгосрочной поддержкой (LTS) и подходит для изучения новых возможностей Java. Многие фичи, представленные в JDK 24 будут с нами надолго.

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

Новые

  • JEP 404: Generational Shenandoah GC (экспериментальная версия) сможет динамически адаптировать размеры поколений и связанные параметры, что позволит сохранить низкие паузы, уменьшить использование памяти и в целом повысить производительность.
  • JEP 450: Компактные заголовки объектов (экспериментальная версия) в рамках Project Lilliput объединяют mark word и указатель на класс, сжимая итоговый заголовок до 64 бит. Уменьшение размера заголовков объектов снизит объём используемых данных в памяти, что потенциально уменьшит нагрузку на CPU и снизит потребление памяти в Java-программах.
  • JEP 475: Late Barrier Expansion for G1 вводит Late Barrier Expansion для сборщика мусора G1, что поможет повысить производительность Java-приложений в облачной среде за счёт уменьшения времени работы CPU и снижения накладных расходов на память во время прогрева JVM.
  • JEP 478: Key Derivation Function API (предварительная версия) представляет в пакете javax.crypto новое API, реализующее функции генерации производного ключа (Key Derivation Function, KDF) — javax.crypto.KDF.
  • JEP 483: Ahead-of-Time Class Loading & Linking представляет AOT-кэш, который призван значительно сократить время запуска Java-приложений, особенно серверных, за счёт переноса загрузки и линковки классов на предварительный этап.
  • JEP 493: Linking Run-Time Images without JMODs оптимизирует работу jlink, что позволяет создавать нестандартный JRE без использования JMOD-файлов, уменьшая размер JDK примерно на 25%. При сборке образов Axiom JDK этот JEP не будет включен, поскольку образы и инструмент jlink имеют ограничения, описанные в самом JEP.
  • JEP 496: Quantum-Resistant Module-Lattice-Based Key Encapsulation Mechanism добавляет поддержку механизма ML-KEM в Java, что призвано обеспечить защиту от будущих квантовых угроз, сохраняя совместимость и простоту интеграции в экосистему JDK.
  • JEP 497: Quantum-Resistant Module-Lattice-Based Digital Signature Algorithm добавляет поддержку механизма ML-DSA в Java, что также призвано обеспечить защиту от будущих квантовых угроз, сохраняя совместимость и простоту интеграции в экосистему JDK.

Финализированные фичи

  • JEP 484: Class-File API представляет стандартное API для парсинга, генерации и трансформации class-файлов, которое будет развиваться одновременно с форматом class-файлов в JDK.
  • JEP 485: Stream Gatherers призваны расширить Stream API поддержкой пользовательских intermediate-операторов.

Улучшения

  • JEP 487: Scoped Values (четвёртая предварительная версия) удаляет методы callWhere и runWhere из класса ScopedValue, сделав API таким, чтобы методы могли вызываться друг за другом в цепочке.
  • JEP 488: Примитивные типы в patterns, instanceof и switch (вторая предварительная версия) делают instanceof и switch более удобными для работы с примитивными типами данных.
  • JEP 489: Vector API (девятый инкубатор) повышает производительность расчётов на массивах однотипных данных, которые компилируются в векторные инструкции во время исполнения приложения. В девятом инкубаторе всё без изменений.
  • JEP 491: Synchronize Virtual Threads without Pinning изменил реализацию ключевого слова synchronized: виртуальные потоки смогут монтироваться и демонтироваться внутри метода synchronized.
  • JEP 492: Flexible Constructor Bodies (третья предварительная версия): конструкторы теперь могут содержать операторы перед явным вызовом конструктора super(..) или this(..). Эти операторы не могут ссылаться на создаваемый экземпляр, но могут инициализировать его поля. Это делает классы более надёжными при переопределении методов.
  • JEP 494: Импортирование модулей (вторая предварительная версия) упростит написание небольших программ, вводя концепции последовательно и не требуя знаний о классах и модулях с самого начала.
  • JEP 495: Simple Source Files и Instance Main Methods (четвёртая предварительная версия) упростит написание небольших программ, вводя концепции последовательно и не требуя знаний о классах и модулях с самого начала..
  • JEP 499: Structured Concurrency (четвёртая предварительная версия) предлагает подход многопоточного программирования, главная идея которого заключается в следующем: если задача расщепляется на несколько конкурентных подзадач, то эти подзадачи воссоединяются в блоке кода главной задачи. При этом все подзадачи логически сгруппированы и организованы в иерархию, а каждая подзадача ограничена по времени жизни областью видимости блока кода главной задачи.

Удалённые и устаревшие (deprecated) фичи

  • JEP 479: Удаление 32-битного порта для Windows предполагает, что исходный код и инфраструктура сборки для поддержки Windows x86 (32 бит) полностью удалены.
  • JEP 486: Выключение Security Manager значит, что, если вы попытаетесь включить Security Manager, вы увидите ошибку.
  • JEP 490: ZGC: удаление режима non-generational предполагает удаление всего кода и тестов, связанных с режимом non-generational в ZGC.
  • JEP 501: 32-битный порт x86-систем устарел и будет удалён.

Подготовка к ограничению и удалению

  • JEP 472: Подготовка к ограничению использования JNI: теперь при загрузке и линковке нативных библиотек через JNI или FFM API выводится предупреждение.
  • JEP 498: Предупреждение об использовании методов доступа к памяти в sun.misc.Unsafe: при использовании методов sun.misc.Unsafe, связанных с доступом к памяти, JVM будет выводить предупреждения.

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

Выводы

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

Java 24 не является LTS-версией, поэтому рекомендуем рассматривать её для изучения новых возможностей.

3-4 апреля состоится Java-конференция для опытных разработчиков JPoint, на которой вы сможете поближе познакомиться с нами: обсудим фичи Java 24, Project Leyden и зачем нужен Axiom JDK. Билеты — на сайте конференции, а мы — на стенде Axiom JDK. До встречи!

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

Author image

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

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

Axiom JDK info@axiomjdk.ru Axiom JDK logo Axiom Committed to Freedom 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