Java 19: что нового

По поводу выхода 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 для объявления локальных переменных. Новые функции строятся на основе предыдущих:

  • 405: Record Patterns (Preview)
  • 427: Pattern Matching for switch (Third Preview)
    • [JDK 17] 406: Pattern Matching for switch (Preview)
    • [JDK 18] 420: Pattern Matching for switch (Second Preview)

Project Panama:

Под эгидой этого проекта собраны фичи, которые позволяют JVM взаимодействовать с внешними библиотеками, написаны и, например, на C, работать с памятью за пределами heap, использовать многие аппаратные функции процессора, например, векторные инструкции (foreign functions and foreign data).

Эти новшенства могут быть удобны для замены ныне используемого громоздкого интерфейса JNI и скрытого но популярного в low-latency класса Unsafe.

  • 424: Foreign Function & Memory API (Preview)
    • [JDK17] 412: Foreign Function & Memory API (Incubator)
    • [JDK18] 419: Foreign Function & Memory API (Second Incubator)
  • 426: Vector API (Fourth Incubator)
    • [JDK 16] 338: Vector API (Incubator)
    • [JDK 17] 414: Vector API (Second Incubator)
    • [JDK 18] 417: Vector API (Third Incubator)

Project Loom:

Этот проект разрабатывает фичи, связанные с «легкими» потоками (lightweight concurrency). Могут быть полезными при написании многопоточных приложений в более простой и сжатой форме, где сама многопоточность не требует создания реальных физических потоков, а только должна быть представлена «семантически».

  • 425: Virtual Threads (Preview)
  • 428: Structured Concurrency (Preview)

New Port:

Содержит новые порты на новые аппаратные платформы. Например, сейчас набирает популярность открытая процессорная архитектура RISC-V, по которой уже выпускают процессоры. Для нее тоже готов порт:

  • 422: Linux/RISC-V Port

Выше пречислены не все проекты. Полный список проектов представлен на странице OpenJDK. Например, есть интересные проекты:

  • Valhalla (value objects и user-defined primitives)
  • Leyden (ускорение загрузки Java-приложения)
  • Sumatra (доступ из Java к GPU для использования его в высокоскоростных вычислениях)

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s