По поводу выхода Java 19 много уже опубликовано постов. В данной заметке я хочу лишь кратенько систематизировать новинки, потому что в большей части статей новинки подаются в общей куче без всякой системы, а нужна общая картина, куда Java движется и что в ее компонентах появляется новое и может пригодиться для low-latency разработки. Многое из этого войдет в следующий LTS релиз Java 21, который выйдет в сентябре 2023 года, т.е. ровно через год.
Все изменения в Java я сгруппировал по «проектам». В разработке Java есть несколько проектов, под эгидой которых вносятся изменения в язык, в JVM, в инструментарий и проч. В данном релизе не все проекты добавили свои фичи, но вот что появилось в JDK 19 по каждому отдельному проекту. Каждая новинка сопровождается ссылкой на JEP, а также на предыдущие JEP-ы в предыдущих релизах JDK, с ней связанные:
Project Amber:
Улучшает и обогащает сам язык Java новыми функциями (high-productivity language features). Эти функции позволяют писать чистый, краткий, ясный код, что существенно облегчает работу с кодом, избавляя его он громоздких конструкций.
Проект Amber нам уже дал Records, Sealed Classes, Text Blocks, новый простой синтаксис для switch, новое ключевое слово var для объявления локальных переменных. Новые функции строятся на основе предыдущих:
Project Panama:
Под эгидой этого проекта собраны функции, которые позволяют JVM:
- взаимодействовать с внешними библиотеками, написаными, например, на C/C++,
- работать с памятью за пределами heap,
- использовать многие аппаратные функции процессора, например, векторные инструкции (foreign functions and foreign data).
Эти новшенства могут быть удобны для замены ныне используемого громоздкого интерфейса JNI и скрытого но популярного в low-latency класса Unsafe.
Project Loom:
Этот проект разрабатывает фичи, связанные с «легкими» потоками (lightweight concurrency). Могут быть полезными при написании многопоточных приложений в более простой и сжатой форме, где сама многопоточность не требует создания реальных физических потоков, а только должна быть представлена «семантически».
New Port:
Содержит новые порты на новые аппаратные платформы. Например, сейчас набирает популярность открытая процессорная архитектура RISC-V, по которой уже выпускают процессоры. Для нее тоже готов порт:
- 422: Linux/RISC-V Port
Выше пречислены не все проекты. Полный список проектов представлен на странице OpenJDK. Например, есть интересные проекты: