Java SE 19 leidimas

Po šešių mėnesių kūrimo, „Oracle“ išleido „Java SE 19“ („Java Platform, Standard Edition 19“) platformą, kuri naudoja OpenJDK atvirojo kodo projektą kaip atskaitos įgyvendinimą. Išskyrus kai kurių pasenusių funkcijų pašalinimą, „Java SE 19“ palaiko atgalinį suderinamumą su ankstesniais „Java“ platformos leidimais – dauguma anksčiau parašytų „Java“ projektų vis tiek veiks be pakeitimų, kai bus vykdomi naudojant naują versiją. Diegiamos Java SE 19 versijos (JDK, JRE ir Server JRE) yra paruoštos Linux (x86_64, AArch64), Windows (x86_64) ir macOS (x86_64, AArch64). Sukurtas OpenJDK projekto, Java 19 nuorodos diegimas yra visiškai atviras pagal GPLv2 licenciją su GNU ClassPath išimtimis, kad būtų galima dinamiškai susieti su komerciniais produktais.

„Java SE 19“ klasifikuojama kaip įprastas palaikymo leidimas ir bus atnaujinamas iki kito leidimo. Ilgalaikio palaikymo (LTS) filialas turėtų būti Java SE 17, kuris ir toliau gaus atnaujinimus iki 2029 m. Priminsime, kad nuo „Java 10“ išleidimo projektas perėjo prie naujo kūrimo proceso, o tai reiškia trumpesnį naujų leidimų formavimo ciklą. Naujos funkcijos dabar sukurtos vienoje nuolat atnaujinamoje pagrindinėje šakoje, kuri apima paruoštus pakeitimus ir iš kurios šakos kas šešis mėnesius atšakojamos siekiant stabilizuoti naujus leidimus.

Naujos „Java 19“ funkcijos apima:

  • Предложена предварительная поддержка шаблонов записей (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труктурированного параллелизма, упрощающий разработку многопоточных приложений за счёт обработки нескольких задач, выполняемых в разных потоках, как единого блока.

Šaltinis: opennet.ru

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