
Вышла 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.