След шестмесечно развитие, компания Oracle пусна платформата Java SE 19 (Java Platform, Standard Edition 19), като стандартната реализация е основана на отворения проект OpenJDK. С изключение на премахването на някои остарели функции, Java SE 19 запазва обратно съвместимост с предишните версии на платформата Java — повечето от предишно написаните Java проекти ще работят без промени с новата версия. Готовите за инсталиране версии на Java SE 19 (JDK, JRE и Server JRE) са подготвени за Linux (x86_64, AArch64), Windows (x86_64) и macOS (x86_64, AArch64). Стандартната реализация на Java 19, разработена в рамките на проекта OpenJDK, е напълно отворена под лицензия GPLv2 с изключения на GNU ClassPath, позволяващи динамично свързване с търговски продукти.
Java SE 19 е класифицирана в категорията версии с обичаен срок на поддръжка, обновления за която ще се пускат до следващия релиз. За дългосрочна поддръжка (LTS) следва да се използва Java SE 17, чийто обновления ще излизат до 2029 година. Напомняме, че от релиза на Java 10 проектът премина на нов процес на разработка, включващ по-кратък цикъл за генериране на нови версии. Новата функционалност сега се развива в една постоянно обновяваща се master-ветка, в която се включват готовите промени и от която на всеки шест месеца се разклоняват клонове за стабилизиране на новите релизи.
От новостите в Java 19 може да се подчертае:
- Предложена е предварителна поддръжка на шаблони за записи (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 за структурирана паралелност, опростяващ разработката на многопоточни приложения чрез обработка на множество задачи, изпълнявани в различни нишки, като единен блок.
Източник: opennet.ru
