Po šiestich mesiacoch vývoja spoločnosť Oracle vydala platformu Java SE 19 (Java Platform, Standard Edition 19), pričom ako etalónna implementácia slúži otvorený projekt OpenJDK. Okrem odstránenia niektorých zastaraných funkcií v Java SE 19 zostala zachovaná spätna kompatibilita s predchádzajúcimi verziami platformy Java – väčšina predtým napísaných Java projektov bude bez zmien fungovať pod novou verziou. Pripravené na inštaláciu zostavy Java SE 19 (JDK, JRE a Server JRE) sú k dispozícii pre Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Etalónna implementácia Java 19, vyvinutá v rámci projektu OpenJDK, je úplne otvorená pod licenciou GPLv2 s výnimkami GNU ClassPath, ktoré umožňujú dynamické prepojenie s komerčnými produktmi.
Java SE 19 patrí do kategórie vydaní s bežnou dobou podpory, aktualizácie budú vydávané do nasledujúceho vydania. Ako vetvu s dlhodobou podporou (LTS) by sa mala používať Java SE 17, aktualizácie pre ktorú budú vydávané do roku 2029. Pripomíname, že od vydania Java 10 prešiel projekt na nový proces vývoja, ktorý zahŕňa kratší cyklus vytvárania nových vydaní. Nové funkcie sa teraz vyvíjajú v jednej neustále aktualizovanej master vetve, do ktorej sa pridávajú už hotové zmeny a od ktorej sa každých šesť mesiacov odpájajú vetvy na stabilizáciu nových vydaní.
Zo noviniek Java 19 môžeme spomenúť:
- Navrhnutá predbežná podpora vzorov záznamov (record pattern), ktorá rozširuje možnosť porovnávania zavedenú v Java 16 a umožňuje analýzu hodnôt tried typu record. Napríklad: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
- V zostavách pre Linux je zabezpečená podpora architektúry RISC-V.
- Pridaná predbežná podpora API FFM (Foreign Function & Memory), ktorá umožňuje interakciu Java programov s externým kódom a dátami prostredníctvom volania funkcií z externých knižníc a prístupu k pamäti mimo JVM.
- Pridaná podpora virtuálnych tokov, ktoré predstavujú ľahké vlákna, výrazne uľahčujúce písanie a údržbu vysoko výkonných viacvláknových aplikácií.
- Predložená štvrtá predbežná realizácia API Vector, ktorá poskytuje funkcie pre vektorové výpočty, ktoré sú vykonávané pomocou vektorových inštrukcií procesorov x86_64 a AArch64 a umožňujú súčasne aplikovať operácie na viaceré hodnoty (SIMD). Na rozdiel od možnosti automatickej vektorácie skalárnych operácií poskytovaných JIT kompilátorom HotSpot, nové API ponúka možnosť explicitne riadiť vektorovanie pre paralelné spracovanie údajov.
- Pridaná tretia experimentálna realizácia porovnávania podľa vzoru vo výrazoch „switch“, ktorá umožňuje používať v značkách „case“ flexibilné vzory namiesto presných hodnôt, čo pokrýva hneď sériu hodnôt, pre ktoré sa predtým museli používať rozsiahle reťazce výrazov „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(); };
- Pridané experimentálne API pre štruktúrovaný paralelizmus, ktoré zjednodušuje vývoj viaccievkových aplikácií spracovaním viacerých úloh vykonávaných v rôznych vláknach ako jedného bloku.
Zdroj: opennet.ru
