Ukukhutshwa kweJava SE19

Emva kweenyanga ezintandathu zophuhliso, i-Oracle ikhuphe i-Java SE 19 (i-Java Platform, i-Standard Edition 19) iqonga, esebenzisa iprojekthi yomthombo ovulekileyo we-OpenJDK njengokuphunyezwa kwereferensi. Ngaphandle kokususwa kwezinye iimpawu ezithotyiweyo, iJava SE 19 igcina ukuhambelana ngasemva kunye nokukhutshwa kwangaphambili kweqonga leJava-ininzi yeeprojekthi ezibhalwe ngaphambili zeJava zisasebenza ngaphandle kokuguqulwa xa ziqhutywa phantsi koguqulelo olutsha. Izakhiwo ezifakelwayo zeJava SE 19 (JDK, JRE, kunye ne-Server JRE) zilungiselelwe iLinux (x86_64, AArch64), Windows (x86_64), kunye ne-macOS (x86_64, AArch64). Iphuhliswe yiprojekthi ye-OpenJDK, ukuphunyezwa kwereferensi ye-Java 19 ngumthombo ovulekileyo ngokupheleleyo phantsi kwelayisensi ye-GPLv2 kunye ne-GNU ClassPath ngaphandle kokuvumela ukudibanisa okuguquguqukayo kwiimveliso zorhwebo.

Java SE 19 отнесён к категории выпусков с обычным сроком поддержки, обновления для которого будут выпускаться до следующего релиза. В качестве ветки с длительным сроком поддержки (LTS) следует использовать Java SE 17, обновления для которого будут выпускаться до 2029 года. Напомним, что начиная с выпуска Java 10 проект перешёл на новый процесс разработки, подразумевающий более короткий цикл формирования новых релизов. Новая функциональность теперь развивается в одной постоянно обновляемой master-ветке, в которую включаются уже готовые изменения и от которой раз в шесть месяцев ответвляются ветки для стабилизации новых выпусков.

Iimpawu ezintsha kwiJava 19 ziquka:

  • Предложена предварительная поддержка шаблонов записей (record pattern), расширяющая появившуюся в Java 16 возможность сопоставления с образцом средствами для разбора значений классов типа record. Например: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
  • В сборках для Linux обеспечена поддержка архитектуры RISC-V.
  • Добавлена предварительная поддержка API FFM (Foreign Function & Memory), позволяющего организовать взаимодействие Java-программ с внешними кодом и данными через вызов функций из внешних библиотек и доступ к памяти вне JVM.
  • Добавлена поддержка виртуальных потоков, представляющих собой легковесные потоки, значительно упрощающие написание и сопровождение высокопроизводительных многопоточных приложений.
  • Предложена четвёртая предварительная реализация API Vector, предоставляющего функции для векторных вычислений, которые выполняются с использованием векторных инструкций процессоров x86_64 и AArch64 и позволяют одновременно применить операции сразу к нескольким значениям (SIMD). В отличие от предоставляемых в JIT-компиляторе HotSpot возможностей по автовекторизации скалярных операций, новый API даёт возможность явно управлять векторизацией для параллельной обработки данных.
  • Добавлена третья экспериментальная реализация сопоставления по шаблону в выражениях «switch», позволяющая в метках «case» использовать не точные значения, а гибкие шаблоны, охватывающие сразу серию значений, для которых ранее приходилось использовать громоздкие цепочки выражений «if…else». Object o = 123L; String formatted = switch (o) { case Integer i -> String.format(«int %d», i); case Long l -> String.format(«long %d», l); case Double d -> String.format(«double %f», d); case String s -> String.format(«String %s», s); default -> o.toString(); };
  • Добавлен экспериментальный API для cтруктурированного параллелизма, упрощающий разработку многопоточных приложений за счёт обработки нескольких задач, выполняемых в разных потоках, как единого блока.

umthombo: opennet.ru

Yongeza izimvo