Vydanie Java SE 26 a OpenJDK 26. Projekt na integráciu podpory JavaScriptu a Pythona do JVM

Po šiestich mesiacoch vývoja spoločnosť Oracle vydala platformu Java SE 26 (Java Platform, Standard Edition 26), ktorú ako referenčnú implementáciu používa otvorený projekt OpenJDK. Okrem odstránenia niektorých zastaraných funkcií v Java SE 26 ostáva spätná kompatibilita s predchádzajúcimi vydaniami platformy Java — väčšina predtým napísaných Java projektov bude fungovať bez zmien pri spustení pod novou verziou. Pripravené na inštaláciu zostavy Java SE 26 (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 SE 26 vyvinutá v rámci projektu OpenJDK je plne otvorená pod licenciou GPLv2 s výnimkami GNU ClassPath, ktoré povoľujú dynamické prepojovanie s komerčnými produktmi.

Java SE 26 patrí do kategórie vydaní s bežnou podporou, aktualizácie pre ktoré sa budú vydávať až do nasledujúceho vydania. Ako vetvu s dlhodobou podporou (LTS) sa odporúča používať Java SE 25, Java SE 21 alebo Java SE 17, pre ktoré sa budú aktualizácie vydávať do rokov 2033, 2031 a 2029, príslušne (verejné — do septembra 2030, 2028 a 2026). Rozšírená podpora LTS vetvy Java SE 8 potrvá do roku 2030, zatiaľ čo Java SE 11 bude podporovaná do roku 2032.

Medzi zmenami v Java SE 26 (1, 2, 3, 4):

  • Bolo implementované varovanie pri použití hlbokého reflexného volania pre zmenu polí označených kľúčovým slovom „final“. V budúcnosti sa plánuje predvolené vypnutie nebezpečných funkcií jazyka a mimo iného sprístupnenie polí označených ako final úplne nemennými, odstránením obchádzajúcej cesty pre ich zmenu cez hlbokú reflexiu (API Reflection).
  • Bolo odstránené API Applet (java.applet.Applet*, javax.swing.JApplet), ktoré sa používalo na spúšťanie Java aplikácií v prehliadači. Toto API stratilo relevanciu po ukončení podpory Java plug-inu pre prehliadače a bolo vyhlásené za zastarané v roku 2021.
  • Zavedená možnosť použitia predformovaného cache (AOT — ahead-of-time) s akýmikoľvek garbage collection systémami, vrátane ZGC (Z Garbage Collector). Zmena zahŕňa podporu sekvenčného načítania predcacheovaných Java objektov do pamäte, využívajúc univerzálny a nezávislý od zbieracích techník formát namiesto priamej mapy do pamäte špecifických reprezentácií cache. Použitie AOT cache skracuje čas spustenia a urýchľuje warmup virtuálnej mašiny HotSpot.
  • V API HTTP Client bola pridaná podpora protokolu HTTP/3, ktorá umožňuje aplikáciám a knižniciam pristupovať k serverom cez HTTP/3 po minimálnych zmenách v kóde.
  • Výkon garbage collection systému G1 bol zlepšený vďaka zníženiu blokády na synchronizáciu vlákien aplikácie s vláknami garbage collection systému.
  • Navrhnutý druhý predbežný variant API na kódovanie a dekódovanie objektov s kryptografickými kľúčmi, certifikátmi a zoznamami odvolaných certifikátov, s použitím formátu PEM (Privacy-Enhanced Mail).
  • Navrhnutý na testovanie šiesty predbežný variant API pre štruktúrovaný paralelizmus (Structured Concurrency), ktorý uľahčuje vývoj viacvláknových aplikácií spracovaním viacerých úloh vykonávaných v rôznych vláknach ako jedného bloku.
  • Pridaná druhá predbežná verzia API Lazy Constants na prácu s objektmi, ktoré obsahujú nemenné dáta a sú spracovávané v JVM ako konštanty. Na tieto objekty sa vzťahujú výkonnostné optimalizácie, podobné poliam so kľúčovým slovom „final“. Na rozdiel od „final“ nový API oddeluje vytváranie stálych hodnôt a ich inicializáciu, garantuje, že hodnota môže byť inicializovaná len raz, skracuje čas spustenia programov a umožňuje aplikovať v užívateľskom kóde optimalizácie zlučovania konštánt (constant-folding), ktoré sa predtým používali iba vo vnútornej kode JDK. class Application { // Bolo: // static final UserService USERS = new UserService(); // Teraz je možné: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • V mechanizme porovnávania vzorov bol navrhnutý štvrtý predbežný variant možnosti použitia primitívnych typov (int, byte, char a ďalšie základné typy, ktoré nie sú objektmi) vo všetkých druhoch šablón, v operátore „instanceof“ a v blokoch „switch“. switch (x.getStatus()) { case 0 -> „okej“; case 1 -> „varovanie“; case 2 -> „chyba“; case int i -> „neznámy stav: „ + i; } if (i instanceof byte b) { … b … }
  • Navrhnutá bola jedenásta testovacia implementácia API Vector, ktorá poskytuje funkcie pre vektorové výpočty vykonávané pomocou vektorových inštrukcií procesorov x86_64 a AArch64, ktoré umožňujú simultánne vykonávať operácie na viacerých hodnotách (SIMD). Na rozdiel od možností automatizovanej vektorizácie skalárnych operácií poskytovaných JIT kompilátorom HotSpot, nové API umožňuje explicitne riadiť vektorizáciu pre paralelné spracovanie údajov.

Okrem toho spoločnosť Oracle oznámila projekt Detroit, ktorý sa bude rozvíjať v rámci OpenJDK a je zameraný na zlepšenie prenosnosti medzi Javou, JavaScriptom a Pythonom. V rámci projektu plánujú poskytnúť možnosť vloženia do procesu JVM runtime s JavaScriptovým motorom V8 a interpretom CPython. Predtým spoločnosť Oracle vyvíjala JavaScriptový motor Nashorn, ktorý fungoval na vrchu JVM, ale projekt bol zastavený kvôli problémom s vývojom samostatnej implementácie JavaScriptu, keď bola hlavná ekosystémová závislosť na motorovom V8.

Ďalej je potrebné poznamenať, že bolo zverejnené aktualizované vydanie platformy na vývoj aplikácií s grafickým rozhraním JavaFX 26. V najbližších hodinách sa tiež očakáva vydanie univerzálnej virtuálnej mašiny GraalVM 26, ktorá podporuje spúšťanie aplikácií v JavaScripte (Node.js), Pythone, Ruby, R, akýchkoľvek jazykoch pre JVM (Java, Scala, Clojure, Kotlin) a jazykov, pre ktoré môže byť generovaný bitový kód LLVM (C, C++, Rust).

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