✅ Новые фичи:
Stream Gatherers - это расширение Stream API, которое позволяет создавать собственные промежуточные (intermediate) операции. До этого можно было использовать только стандартные промежуточные операции вроде
filter(), map(), distinct() и т.п.Class-File API - это стандартное API для парсинга, генерации и трансформации class-файлов, которое впервые появилось в Java 22, теперь окончательно оформилось в Java 24. Фреймворки и инструменты, использующие стандартный API, будут автоматически поддерживать class-файлы из последней версии JDK, что позволит быстро и легко внедрять новые возможности языка и VM, представленные в class-файлах. До этого обновление сторонних библиотек для работы с class-файлами происходило с заметной задержкой относительно релиза каждой новой JDK.
✅ Фичи в статусе превью (работают только с флагом
--enable-preview):Generational Shenandoah GC - режим поколений для сборщика мусора Shenandoah. Изначально Shenandoah был non-generational сборщиком, то есть он не разделял объекты на молодое и старое поколения, как это делают G1, Parallel и, начиная с JDK 23, ZGC. Благодаря новому режиму Shenandoah сможет поддерживать молодое и старое поколения, что позволит чаще собирать молодые объекты.
Project Lilliput привносит компактные заголовки объектов. Цель проекта — уменьшить размер заголовков Java-объектов в HotSpot JVM с 96 или 128 бит до 64 бит на 64-битных архитектурах (x64 и AArch64). Это призвано уменьшить использование CPU и/или памяти Java-приложениями.
✅ Очередные итерации предварительных версий:
Поддержка примитивных типов в конструкциях
pattern matching, switch и instanceof. То есть когда во время проверки условия компилятор автоматически выводит тип данных. Ранее это было доступно для ссылочных типов и record-классов.Vector API повышает производительность расчётов на массивах однотипных данных. Это особенно актуально для машинного обучения, линейной алгебры, криптографии и финансов.
Simple Source Files, который позволяет писать программы вида "Hello, world!" в упрощённом варианте: без явного определения класса, без импортов и в не-статическом main-методе без параметров. Это приближает Java по синтаксису к скриптовым языкам.
Flexible Constructor Bodies - в конструкторе класса можно выполнять некоторую логику перед вызовом
super(), если она не использует текущее состояние объекта.Импорт модулей как альтернатива импорту пакетов.
Я перечислил только основные изменения. На самом деле их больше.
Будете ли вы переходить на Java 24 или дождётесь Java 25, версии с длительной поддержкой, выход которой запланирован на сентябрь?
