Предстоящий выпуск долгосрочной поддержки стандартной версии Java, Java Development Kit (JDK) 21, запланирован на сентябрь и будет включать в себя последовательные коллекции, виртуальные потоки, шаблоны строк, а также API иностранных функций и памяти (в предварительной версии). Эти функции призваны расширить возможности разработчиков в самых разных областях - от написания до поддержки и мониторинга высокопроизводительных параллельных приложений.
Хотя на странице релиза JDK 21 еще нет официального списка, предварительный просмотр API для иностранных функций и памяти, как полагают, был добавлен недавно. Этот API позволяет программам Java беспрепятственно взаимодействовать с кодом и данными за пределами среды выполнения Java. Он обеспечивает эффективное взаимодействие с внешними функциями и безопасный доступ к внешней памяти, позволяя программам Java взаимодействовать с родными библиотеками и обрабатывать родные данные без хрупкости и рисков, связанных с Java Native Interface (JNI).
API для иностранных функций и памяти был ранее представлен в JDK 20 и JDK 19, которые были выпущены в марте и сентябре прошлого года соответственно. Последняя предварительная версия включает такие усовершенствования, как улучшенные пути компоновки, централизованное управление временем жизни нативных сегментов в интерфейсе Arena, реализация нативного компоновщика fallback и удаление VaList. Цели этого API включают простоту использования, производительность, универсальность и безопасность. Однако он не ставит своей целью заменить JNI или изменить его каким-либо образом.
В JDK 21 также будут доработаны виртуальные потоки, которые представляют собой легковесные потоки, подающие большие надежды на значительное уменьшение трудностей, связанных с написанием, поддержкой и наблюдением за высокопроизводительными параллельными приложениями. Цели, стоящие за этой функцией, включают обеспечение эффективного масштабирования серверных приложений с оптимальным использованием оборудования, содействие внедрению виртуальных потоков с минимальными изменениями в существующем коде API lang.Thread, а также упрощение отладки и профилирования виртуальных потоков с помощью текущих инструментов JDK. JDK 21 обеспечит полную поддержку переменных thread-local в виртуальных потоках, повышая совместимость с существующими библиотеками и способствуя миграции кода, основанного на задачах, на использование виртуальных потоков.
Последовательные коллекции - еще одна возможность, которая появится в JDK 21. Эти интерфейсы позволяют представлять коллекции с четким порядком следования, где каждая коллекция имеет четко определенные первый и второй элементы и так далее. Будут предоставлены унифицированные API для облегчения доступа к первому и последнему элементам и изменения порядка обработки элементов. Определяя интерфейсы последовательности для коллекций, множеств и карт, это предложение призвано заполнить пробелы в структуре коллекций Java и удовлетворить давние требования пользователей.
Шаблоны строк дебютируют в качестве функции предварительного просмотра в JDK 21, улучшая существующие в Java строковые литералы и текстовые блоки путем объединения буквального текста со встроенными выражениями и процессорами для генерации специализированных результатов. Основная цель этой функции - упростить программирование на Java, облегчив выражение строк, включающих вычисляемые во время выполнения значения. Шаблоны строк предназначены для улучшения читаемости выражений, повышения безопасности программ, сохранения гибкости и облегчения работы с API, которые принимают строки, написанные на языках, отличных от Java.
Согласно предложенному плану выпуска JDK 21, список функций будет заморожен после фаз rampdown 8 июня и 20 июля, во время которых будет продолжаться исправление ошибок. Первоначальный и финальный релиз-кандидаты последуют 10 августа и 24 августа, при этом исправление ошибок все еще возможно. Общая доступность запланирована на 19 сентября.
JDK 21 будет выпущен в рамках долгосрочной поддержки (LTS), обеспечивая пять лет поддержки Premier и расширенную поддержку до сентября 2031 года. JDK 17, текущая версия LTS, была выпущена в сентябре 2021 года. Выпуски без LTS, включая JDK 20 и JDK 19, получают только шесть месяцев поддержки Premier и не имеют расширенной поддержки.
Стандартные реализации Java по адресу Oracle публикуются каждые шесть месяцев, и потенциальные возможности JDK 21 включают все инкубационные и предварительные возможности JDK 20. Они могут включать в себя скопированные значения, шаблоны записей и согласование шаблонов для операторов switch, а также универсальные дженерики, сборщик мусора поколения Z и асинхронный API VM для трассировки стека. Другие передовые платформы, такие как no-code и low-code платформы, такие как AppMaster, также могут извлечь выгоду из этих достижений в технологии Java.