Vydání Java SE 20.

Po šesti měsících vývoje společnost Oracle vydala platformu Java SE 20 (Java Platform, Standard Edition 20), jejíž referenční implementací je otevřený projekt OpenJDK. S výjimkou odstranění některých zastaralých funkcí v Java SE 20 byla zachována zpětná kompatibilita s předchozími verzemi platformy Java — většina dříve napsaných Java projektů bude funkční při spuštění na nové verzi bez jakýchkoliv změn. Sestavení Java SE 20 (JDK, JRE a Server JRE) připravená pro instalaci jsou k dispozici pro Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Referenční implementace Java 20 vyvinutá v rámci projektu OpenJDK je plně otevřená pod licencí GPLv2 s výjimkami GNU ClassPath, které umožňují dynamické propojení s komerčními produkty.

Java SE 20 spadá do kategorie vydání s běžnou dobou podpory, aktualizace pro něj budou vydávány až do dalšího vydání. Jako verzi s dlouhou dobou podpory (LTS) by měla být použita Java SE 17, pro kterou budou aktualizace vydávány až do roku 2029. Připomínáme, že od vydání Java 10 projekt přešel na nový proces vývoje, který zahrnuje kratší cyklus vydávání nových verzí. Nová funkčnost se nyní vyvíjí v jedné neustále aktualizované hlavní větvi, do které jsou zapracovávány již připravené změny a od které se každých šest měsíců oddělují větve pro stabilizaci nových vydání.

Mezi novinkami Java 20 lze zmínit:

  • Byla navržena předběžná podpora omezených hodnot (Scoped Values), která umožňuje sdílení neměnných dat mezi proudy a efektivní výměnu dat mezi potomstvy proudů (hodnoty jsou děděny). Scoped Values se vyvíjejí jako náhrada mechanismu proměnných lokálních k proudu (thread-local variables) a jsou efektivnější při použití velmi velkého počtu virtuálních proudů (tisíce a miliony proudů). Hlavní rozdíl mezi Scoped Values a proměnnými lokálními k proudu spočívá v tom, že první jsou zapisovány jednou, následně je nelze měnit a zůstávají dostupné pouze během provádění proudu. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Request request, Response response) { var level = (request.isAuthorized() ? ADMIN : GUEST); var user = new User(level); ScopedValue.where(CURRENT_USER, user) .run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) throw new InvalidUserException(); return new DBConnection(…); } }
  • Byla přidána druhá předběžná implementace vzorů záznamů (record pattern), která rozšiřuje možnost přiřazení hodnot pomocí vzorů v jazyce Java 16. Například: record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = p.x(); int y = p.y(); System.out.println(x + y); } }
  • Byla přidána čtvrtá předběžná implementace vzorového přiřazení v příkazech 'switch', která umožňuje v případech 'case' používat nikoli přesné hodnoty, ale flexibilní vzory, které pokrývají hned několik hodnot, pro které bylo dříve nutné používat objemné řetězce příkazů 'if…else'. 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 -> obj.toString(); }; }
  • Byla přidána druhá předběžná implementace API FFM (Foreign Function & Memory), 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.
  • Byla přidána druhá předběžná implementace virtuálních vláken, která představují lehká vlákna, značně usnadňující psaní a údržbu vysoce výkonných vícetrakově orientovaných aplikací.
  • Byla přidána druhá varianta experimentálního API pro strukturovanou paralelnost, která usnadňuje vývoj vícetrakově orientovaných aplikací zpracováním více úloh prováděných v různých vláknech jako jednotného bloku.
  • Byla přidána pátá předběžná implementace API Vector, poskytující funkce pro vektorové výpočty, které se provádějí pomocí vektorových instrukcí procesorů x86_64 a AArch64 a umožňují současné aplikace operací na několika hodnotách (SIMD). Na rozdíl od možností automatické vektorizace skalárních operací poskytovaných JIT kompilátorem HotSpot umožňuje nové API explicitně řídit vektorizaci pro paralelní zpracování dat.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster