След шестмесечно разработване, компанията 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). Разработената в рамките на проекта OpenJDK референтна реализация на Java 19 е напълно отворена под лицензия GPLv2 с изключения от GNU ClassPath, разрешаваща динамично свързване с търговски продукти.
Java SE 19 е класифицирана като версия с обикновена поддръжка, актуализации за която ще бъдат пускани до следващото издание. За версия с дългосрочна поддръжка (LTS) следва да се използва Java SE 17, актуализации за която ще бъдат пускани до 2029 година. Напомняме, че от версия Java 10 проектът премина на нов процес на разработка, предвиждащ по-кратък цикъл за издаване на нови версии. Новата функционалност сега се развива в една постоянно актуализирана основна клонка, в която се включват готови промени и от която на всеки шест месеца се отклоняват клонове за стабилизиране на новите версии.
От новостите в 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
