Vydání Java SE 20

Po šesti měsících vývoje vydala společnost Oracle platformu Java SE 20 (Java Platform, Standard Edition 20), která jako referenční implementaci využívá open source projekt OpenJDK. S výjimkou odstranění některých zastaralých funkcí si Java SE 20 zachovává zpětnou kompatibilitu s předchozími verzemi platformy Java – většina dříve napsaných projektů Java bude při spuštění v nové verzi stále fungovat bez úprav. Sestavení Java SE 20 (JDK, JRE a Server JRE) připravená k instalaci jsou připravena pro Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Referenční implementace Java 20, vyvinutá projektem OpenJDK, je plně open source pod licencí GPLv2 s výjimkami GNU ClassPath, které umožňují dynamické propojení s komerčními produkty.

Java SE 20 je kategorizována jako běžná podpůrná verze, přičemž aktualizace budou vydány před dalším vydáním. Odvětví dlouhodobé podpory (LTS) by měla být Java SE 17, která bude dostávat aktualizace až do roku 2029. Připomeňme, že počínaje vydáním Java 10 přešel projekt na nový vývojový proces, což znamená kratší cyklus tvorby nových verzí. Nové funkce jsou nyní vyvíjeny v jedné neustále aktualizované hlavní větvi, která zahrnuje již dokončené změny a ze které se větve každých šest měsíců rozvětvují za účelem stabilizace nových verzí.

Mezi nové funkce v Javě 20 patří:

  • Existuje předběžná podpora pro Scoped Values, která umožňuje sdílení neměnných dat napříč vlákny a efektivní výměnu dat mezi podřízenými vlákny (hodnoty se dědí). Scoped Values ​​jsou vyvíjeny, aby nahradily mechanismus lokálních proměnných vláken a jsou efektivnější při použití velkého počtu virtuálních vláken (tisíce nebo miliony vláken). Hlavní rozdíl mezi Scoped Values ​​​​a lokálními proměnnými vlákna je v tom, že první jsou zapsány jednou, nelze je v budoucnu změnit a zůstávají dostupné pouze po dobu provádění vlákna. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(žádost požadavek, odpověď odpověď) { var level = (request. isAuthorized()? ADMIN : GUEST); var uživatel = nový uživatel(úroveň); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(požadavek, odpověď)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) vyvolá novou InvalidUserException(); return new DBConnection(...); } }
  • Byl přidán druhý náhled vzorů záznamů, který rozšiřuje funkci porovnávání vzorů zavedenou v Javě 16 o analýzu hodnot tříd záznamů. Například: record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • Byla přidána čtvrtá předběžná implementace porovnávání vzorů v příkazech „switch“, což umožňuje, aby štítky „case“ nepoužívaly přesné hodnoty, ale flexibilní vzory, které pokrývají řadu hodnot najednou, pro které bylo dříve nutné používat těžkopádné řetězce výrazů „kdyby...jinak“. static String formatterPatternSwitch(Object obj) { return switch (obj) { 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(); }; }
  • Byla přidána druhá předběžná implementace FFM (Foreign Function & Memory) API, která umožňuje organizovat interakci Java programů s externím kódem a daty prostřednictvím volání funkcí z externích knihoven a přístupu k paměti mimo JVM.
  • Byl přidán druhý náhled virtuálních vláken, což jsou odlehčená vlákna, která výrazně zjednodušují zápis a údržbu vysoce výkonných vícevláknových aplikací.
  • Přidáno druhé experimentální API pro strukturovaný paralelismus, které zjednodušuje vývoj vícevláknových aplikací tím, že zpracovává více úloh běžících v různých vláknech jako jeden blok.
  • Byl přidán pátý náhled vektorového API, který poskytuje funkce pro vektorové výpočty, které se provádějí pomocí vektorových instrukcí na procesorech x86_64 a AArch64 a umožňují použití operací současně na více hodnot (SIMD). Na rozdíl od možností, které poskytuje kompilátor HotSpot JIT pro automatickou vektorizaci skalárních operací, nové API umožňuje explicitně řídit vektorizaci pro paralelní zpracování dat.

Zdroj: opennet.ru

Přidat komentář