Java SE 19 release

Nei seis moannen fan ûntwikkeling hat Oracle it platfoarm Java SE 19 (Java Platform, Standard Edition 19) frijlitten, dat it OpenJDK-iepenboarne-projekt brûkt as referinsjeimplementaasje. Mei útsûndering fan it fuortheljen fan guon ferâldere funksjes, behâldt Java SE 19 efterútkompatibiliteit mei eardere releases fan it Java-platfoarm - de measte earder skreaune Java-projekten sille noch wurkje sûnder wiziging as se rinne ûnder de nije ferzje. Ynstalleare builds fan Java SE 19 (JDK, JRE, en Server JRE) binne taret foar Linux (x86_64, AArch64), Windows (x86_64), en macOS (x86_64, AArch64). Ûntwikkele troch it OpenJDK projekt, de Java 19 referinsje ymplemintaasje is folslein iepen ûnder de GPLv2 lisinsje mei GNU ClassPath útsûnderings om dynamyske keppele oan kommersjele produkten.

Java SE 19 is kategorisearre as in reguliere stiperelease, mei updates dy't moatte wurde frijlitten foar de folgjende release. De tûke foar lange termyn stipe (LTS) soe Java SE 17 wêze moatte, dy't updates sil ûntfange oant 2029. Tink derom dat begjinnend mei de frijlitting fan Java 10, it projekt oerstapt nei in nij ûntwikkelingsproses, wat in koartere syklus ymplisearret foar de foarming fan nije releases. Nije funksjonaliteit wurdt no ûntwikkele yn ien konstant bywurke mastertûke, dy't al foltôge wizigingen omfettet en wêrfan tûken elke seis moanne fertakke wurde om nije releases te stabilisearjen.

Nije funksjes yn Java 19 omfetsje:

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

Boarne: opennet.ru

Add a comment