Po šesti měsících vývoje společnost Oracle vydala platformu Java SE 19 (Java Platform, Standard Edition 19), jejíž referenční implementací je otevřený projekt OpenJDK. Kromě odstranění některých zastaralých funkcí zůstává v Java SE 19 zachována zpětná kompatibilita s předchozími vydáními platformy Java – většina předtím napsaných Java projektů bude fungovat bez změn na nové verzi. Připravené instalační sestavy Java SE 19 (JDK, JRE a Server JRE) jsou připraveny pro Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Referenční implementace Java 19 vyvinutá v rámci projektu OpenJDK je plně otevřená pod licencí GPLv2 s výjimkami GNU ClassPath, které umožňují dynamické spojování s komerčními produkty.
Java SE 19 je zařazena do kategorie vydání se standardní dobou podpory, aktualizace pro kterou budou vydávány až do dalšího vydání. Jako verzi s dlouhodobou podporou (LTS) by měla být používána Java SE 17, jejíž aktualizace budou vydávány až do roku 2029. Připomínáme, že od vydání Java 10 přešel projekt na nový proces vývoje, který zahrnuje kratší cyklus vzniku nových verzí. Nové funkce se nyní vyvíjejí v jedné neustále aktualizované hlavní větvi, do které jsou zahrnovány již hotové změny a od níž se každých šest měsíců odštěpují větve pro stabilizaci nových vydání.
Mezi novinkami Java 19 lze zmínit:
- Byla navržena experimentální podpora vzorových záznamů (record pattern), která rozšiřuje v Java 16 zavedenou možnost vzorového porovnávání pomocí analýzy hodnot tříd typu record. Napří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 sestavách pro Linux byla zajištěna podpora architektury RISC-V.
- Byla přidána experimentální podpora API FFM (Foreign Function & Memory), které umožňuje interakci Java programů s externím kódem a daty prostřednictvím volání funkcí z externích knihoven a přístupem k paměti mimo JVM.
- Byla přidána podpora virtuálních vláken, což jsou lehké vlákna, která značně usnadňují psaní a údržbu vysoce výkonných vícítlivostních aplikací.
- Byla navržena čtvrtá předběžná verze API Vector, která poskytuje funkce pro vektorová výpočty prováděné pomocí vektorových instrukcí procesorů x86_64 a AArch64 a umožňuje aplikovat operace najednou na několik hodnot (SIMD). Na rozdíl od možností automatizované vektorizace skalarových operací poskytovaných Just-In-Time kompilátorem HotSpot, nové API umožňuje výslovně řídit vektorization pro paralelní zpracování dat.
- Byla přidána třetí experimentální implementace shody podle šablony ve výrazech "switch", umožňující používat na značkách "case" nikoli přesné hodnoty, ale flexibilní šablony pokrývající sérii hodnot, pro které by dříve bylo nutné používat složité řetězce výrazů "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(); };
- Bylo přidáno experimentální API pro strukturovaný paralelismus, které zjednodušuje vývoj vícetrh aplikací tím, že zpracovává více úloh prováděných v různých vláknech jako jeden blok.
Zdroj: opennet.ru
