Vydanie Java SE 20

Po šiestich mesiacoch vývoja spoločnosť Oracle vydala platformu Java SE 20 (Java Platform, Standard Edition 20), pričom referenčná implementácia využíva otvorený projekt OpenJDK. S výnimkou odstránenia niektorých zastaraných funkcií v Java SE 20 bola zachovaná spätná kompatibilita s predchádzajúcimi verziami platformy Java – väčšina predtým napísaných Java projektov bude fungovať bez zmien pri spustení na novej verzii. Pripravené na inštaláciu zostavy Java SE 20 (JDK, JRE a Server JRE) sú dostupné pre Linux (x86_64, AArch64), Windows (x86_64) a macOS (x86_64, AArch64). Referenčná implementácia Java 20, 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 20 patrí do kategórie vydaní s bežnou dobou podpory, pričom aktualizácie budú vydávané do ďalšieho vydania. Ako vetva s dlhodobou podporou (LTS) by sa mala používať Java SE 17, pre ktorú budú aktualizácie vydávané do roku 2029. Pripomíname, že od vydania Java 10 projekt prešiel na nový proces vývoja, ktorý predpokladá kratší cyklus vydávania nových verzií. 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 oddeľujú vetvy na stabilizáciu nových vydaní.

Medzi novinky Java 20 patrí:

  • Navrhnutá predbežná podpora obmedzených hodnôt (Scoped Values), ktoré umožňujú zdieľať nemenné údaje v tokoch a efektívne vymieňať údaje medzi podtokmi (hodnoty sú dedičné). Scoped Values sa vyvíjajú na nahradenie mechanizmu premenných lokálnych ku vláknu (thread-local variables) a sú efektívnejšie pri použití veľmi veľkého počtu virtuálnych vlákien (tisíce a milióny vlákien). Hlavný rozdiel medzi Scoped Values a premennými lokálnymi ku vláknu spočíva v tom, že prvé sa zapisujú len raz, neskôr sa nemôžu meniť a zostávajú dostupné iba počas vykonávania vlákna. 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(…); } }
  • Pridaná druhá predbežná realizácia vzorov záznamov (record pattern), ktorá rozširuje možnosť vzorového porovnávania, ktorá sa objavila v Jave 16, pomocou prostriedkov na analýzu hodnôt tried typu record. Naprí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); } }
  • Pridaná štvrtá predbežná realizácia porovnávania podľa vzoru v výrazoch „switch“, ktorá umožňuje používať v značkách „case“ nie presné hodnoty, ale flexibilné vzory, ktoré pokrývajú celú radu hodnôt, pre ktoré sa predtým muselo používať rozsiahlé reťazce výrazov „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 -> o.toString(); }; }
  • Pridaná druhá predbežná realizácia API FFM (Foreign Function & Memory), ktorá umožňuje organizovať interakciu Java programov s externým kódom a údajmi prostredníctvom volania funkcií z externých knižníc a prístupu k pamäti mimo JVM.
  • Pridala sa druhá predbežná implementácia virtuálnych tokov, ktoré sú ľahké a výrazne zjednodušujú písanie a údržbu vysoko výkonných viacvláknových aplikácií.
  • Pridaná druhá verzia experimentálneho API pre štruktúrovanú paralelizáciu, ktorá zjednodušuje vývoj viacvláknových aplikácií spracovaním viacerých úloh vykonávaných v rôznych flow ako jedného bloku.
  • Pridaná piata predbežná implementácia API Vector, ktorá poskytuje funkcie pre vektorové výpočty, ktoré sa vykonávajú pomocou vektorových inštrukcií procesorov x86_64 a AArch64 a umožňujú súčasne aplikovať operácie na niekoľko hodnôt (SIMD). Na rozdiel od možností automatickej vektorizácie skalarových operácií poskytnutých JIT kompilátorom HotSpot, nové API umožňuje explicitne riadiť vektorovanie pre paralelné spracovanie údajov.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster