Izlazak Java SE 26 i OpenJDK 26. Projekt za integraciju podrške za JavaScript i Python u JVM

Nakon šest mjeseci razvoja, tvrtka Oracle objavila je platformu Java SE 26 (Java Platform, Standard Edition 26), čija je referentna implementacija otvoreni projekt OpenJDK. Osim uklanjanja nekih zastarjelih mogućnosti, Java SE 26 zadržava unazadnu kompatibilnost s prethodnim izdanjima platforme Java — većina ranije napisanih Java projekata radit će bez izmjena na novoj verziji. Pripremljene verzije Java SE 26 (JDK, JRE i Server JRE) dostupne su za Linux (x86_64, AArch64), Windows (x86_64) i macOS (x86_64, AArch64). Referentna implementacija Java SE 26 razvijena u okviru projekta OpenJDK potpuno je otvorena pod GPLv2 licencom uz iznimke GNU ClassPath, koje omogućuju dinamičko povezivanje s komercijalnim proizvodima.

Java SE 26 svrstana je u kategoriju izdanja s uobičajenim vremenom podrške, a nadogradnje će se objavljivati do sljedećeg izdanja. Kao granicu s dugotrajnom podrškom (LTS) treba koristiti Java SE 25, Java SE 21 ili Java SE 17, a nadogradnje za njih bit će dostupne do 2033, 2031. i 2029. godine (javne do rujna 2030., 2028. i 2026. godine). Prolongirana podrška LTS grane Java SE 8 trajat će do 2030. godine, a Java SE 11 do 2032. godine.

Među promjenama u Java SE 26 (1, 2, 3, 4):

  • Implementirana je upozorenja prilikom korištenja duboke refleksije za promjenu polja označenih ključnom riječi "final". U budućnosti se planira onemogućiti prema zadanim postavkama nesigurnih mogućnosti jezika i, među ostalim, učiniti polja označena kao final potpuno nepromjenjivima, uklanjajući zaobilazna rješenja za njihovu promjenu putem duboke refleksije (API Reflection).
  • Uklonjen je API Applet (java.applet.Applet*, javax.swing.JApplet), korišten za pokretanje Java aplikacija u pregledniku. Ovaj API je izgubio relevantnost nakon što je prestala podrška za Java plugin za preglednike i proglašen je zastarjelim 2021. godine.
  • Implementirana je mogućnost korištenja unaprijed oblikovanog predmemoriranja (AOT — ahead-of-time) s bilo kojim sakupljačima smeća, uključujući ZGC (Z Garbage Collector). Promjena podrazumijeva podršku za sekvencijalno učitavanje predmemoriranih Java objekata u memoriju, koristeći univerzalni format koji nije ovisan o sakupljačima smeća umjesto izravnog mapiranja u memorijske specifične prikaze predmemorije. Korištenje AOT predmemorije smanjuje vrijeme pokretanja i ubrzava pripremu (warmup) virtualne mašine HotSpot.
  • U API HTTP klijenta dodana je podrška za HTTP/3 protokol, omogućujući aplikacijama i bibliotekama pristup serverima putem HTTP/3 nakon minimalnih promjena koda.
  • Povećana je učinkovitost sakupljača smeća G1, zahvaljujući smanjenju zaključavanja za sinkronizaciju aplikacijskih niti sa nitima sakupljača smeća.
  • Predložen je drugi preliminarni API za kodiranje i dekodiranje objekata s kriptografskim ključevima, certifikatima i popisima opozvanih certifikata, koristeći PEM format (Pivacy-Enhanced Mail).
  • Predložen je za testiranje šesti preliminarni API za strukturirani paralelizam (Structured Concurrency), koji pojednostavljuje razvoj višedretvenih aplikacija obradom više zadataka koji se izvršavaju u različitim nitima kao jedinstvene celine.
  • Dodana je druga preliminarna verzija API-ja Lazy Constants za rad s objektima koji sadrže nepromjenjive podatke i obrađuju se u JVM-u kao konstante. Na takve objekte primjenjuju se optimizacije performansi, slične poljima s ključnom riječi „final”. Za razliku od „final”, novi API odvaja stvaranje trajnih vrijednosti i njihovu inicijalizaciju, jamči da se vrijednost može inicijalizirati samo jedanput, smanjuje vrijeme pokretanja programa i omogućuje primjenu optimizacija smanjivanja konstanti u korisničkom kodu, koje su ranije korištene samo u unutarnjem kodu JDK. class Application { // Bilo je: // static final UserService USERS = new UserService(); // Sada može: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • U mehanizmu usklađivanja s obrascem predložen je četvrti preliminarni varijanta mogućnosti korištenja primitivnih tipova (int, byte, char i drugi osnovni tipovi koji nisu objekti) u svim vrstama predložaka, u operatoru „instanceof“ i u blokovima „switch“. switch (x.getStatus()) { case 0 -> „okay“; case 1 -> „warning“; case 2 -> „error“; case int i -> „nepoznati status: „ + i; } if (i instanceof byte b) { … b … }
  • Predložena je jedanaesta testna implementacija API-ja Vector, koja pruža funkcije za vektorske proračune koji se izvode korištenjem vektorskih instrukcija procesora x86_64 i AArch64 i omogućuju istovremeno primjenjivanje operacija na više vrijednosti (SIMD). Za razliku od mogućnosti automatske vektorizacije skalarnih operacija koje nudi JIT kompajler HotSpot, novi API omogućuje eksplicitno upravljanje vektorizacijom za paralelnu obradu podataka.

Osim toga, tvrtka Oracle je najavila projekt Detroit, koji će se razvijati unutar OpenJDK-a i usmjeren je na poboljšanje prenosivosti između Jave, JavaScripta i Pythona. U okviru projekta planiraju pružiti mogućnost ugradnje u proces JVM runtime s JavaScript motorom V8 i interpretatorom CPython. Prije je tvrtka Oracle već razvijala JavaScript motor Nashorn, koji je radio iznad JVM virtualne mašine, ali je projekt obustavljen zbog problema s razvojem zasebne implementacije JavaScripta u uvjetima kada je glavna ekosustav vezana uz motor V8.

Dodatno se može napomenuti objavljivanje ažuriranja platforme za izradu aplikacija s grafičkim sučeljem JavaFX 26. U sljedećim satima također se očekuje izdavanje univerzalne virtualne mašine GraalVM 26, koja podržava pokretanje aplikacija na JavaScriptu (Node.js), Pythonu, Rubyju, R, bilo kojim jezicima za JVM (Java, Scala, Clojure, Kotlin) i jezicima za koje se može formirati bitkod LLVM (C, C++, Rust).

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster