Megjelent a Java SE 26 és az OpenJDK 26. Projekt a JavaScript és Python támogatásának integrálására a JVM-be

Hat hónapos fejlesztés után az Oracle közzétette a Java SE 26 platformot (Java Platform, Standard Edition 26), amelynek referenciakivitelezése az OpenJDK nyílt projekt. Kivéve, hogy néhány elavult funkció eltávolításra került, a Java SE 26 megőrzi a visszafelé kompatibilitást az előző Java platform verziókkal — a legtöbb korábban írt Java-projekt változtatások nélkül működni fog az új verzió alatt. A Java SE 26 telepíthető csomagjai (JDK, JRE és Server JRE) elérhetők Linuxhoz (x86_64, AArch64), Windowshoz (x86_64) és macOS-hez (x86_64, AArch64). Az OpenJDK projekt keretében kifejlesztett Java SE 26 referenciakivitelezése teljesen nyitott a GPLv2 licenc alatt, a GNU ClassPath kivételekkel, amely lehetővé teszi a kereskedelmi termékekkel való dinamikus összekapcsolást.

A Java SE 26 a normál támogatási időszakkal rendelkező kiadások közé tartozik, amelyhez a frissítések a következő kiadásig lesznek elérhetők. Hosszú távú támogatási ágnak (LTS) a Java SE 25, Java SE 21 vagy Java SE 17 használata javasolt, amelyekhez a frissítések 2033, 2031 és 2029 éves határidővel lesznek elérhetők (nyilvános elérhetőség — 2030, 2028 és 2026 szeptemberéig). A Java SE 8 LTS ágának kiterjesztett támogatása 2030-ig, a Java SE 11-nek pedig 2032-ig fog tartani.

A Java SE 26-ban végrehajtott változások (1, 2, 3, 4):

  • Figyelmeztetés jelenik meg, ha mély reflexióval próbálunk megváltoztatni a 'final' kulcsszóval megjelölt mezőket. A jövőben tervezzük, hogy alapértelmezés szerint letiltjuk a nyelv nem biztonságos képességeit, és egyebek mellett a final-ként megjelölt mezőket teljesen módosíthatatlanná tesszük, eltávolítva a mély reflexión keresztüli megváltoztatásuk kiskapuát (API Reflection).
  • Eltávolításra került az Applet API (java.applet.Applet*, javax.swing.JApplet), amelyet Java-alkalmazások böngészőben történő futtatására használtak. Ez az API elavultnak számít, mivel a Java plugin böngészők támogatása megszűnt, és 2021-ben elavultnak hívták.
  • A AOT (ahead-of-time) előre létrehozott gyorsítótár használatának lehetősége megvalósult bármilyen szemétgyűjtővel, beleértve a ZGC-t (Z Garbage Collector). A változtatás lehetővé teszi a párhuzamosan betöltött gyorsítótárazott Java-objektumok memóriába való beolvasását, egy univerzális, a szemétgyűjtőktől független formátumot használva, a gyorsítótár specifikus ábrázolásának közvetlen memóriaképzése helyett. Az AOT-gyorsítótár használata csökkenti a program indítási idejét és felgyorsítja a HotSpot virtuális gép bemelegítését.
  • A HTTP Client API-hoz hozzáadódott a HTTP/3 protokoll támogatása, amely lehetővé teszi az alkalmazások és könyvtárak számára, hogy HTTP/3-on keresztül hívják meg a szervereket minimális kódmódosítással.
  • A G1 szemétgyűjtő teljesítménye javult, köszönhetően a kezdő és a szemétgyűjtő szálak szinkronizálásához szükséges blokkolások csökkentésének.
  • Javasolták a második előzetes API változatot, amely lehetővé teszi a kriptográfiai kulcsok, tanúsítványok és visszavont tanúsítványok listáinak kódolását és dekódolását PEM (Privacy-Enhanced Mail) formátumban.
  • A strukturált párhuzamosság (Structured Concurrency) hatodik előzetes API változata került tesztelésre, amely leegyszerűsíti a több szálon futó alkalmazások fejlesztését, lehetővé téve több feladat párhuzamos kezelését egyetlen egységként.
  • A Lazy Constants API második előzetes kiadása került hozzáadásra, amely olyan objektumokkal dolgozik, amelyek változhatatlan adatokat tartalmaznak, és a JVM a konstansokként kezeli őket. Az ilyen objektumok esetében teljesítményoptimalizálások alkalmazhatók, hasonlóan a "final" kulcsszóval rendelkező mezőkhöz. A "final"-tól eltérően az új API különválasztja az állandó értékek létrehozását és inicializálását, biztosítva, hogy az érték csak egyszer legyen inicializálva, csökkenti a programok indítási idejét és lehetővé teszi a felhasználói kód optimalizálásait, mint a konstansok összevonása (constant-folding), amelyet korábban csak a JDK belső kódjában használtak.
    class Application {
    // Volt:
    // static final UserService USERS = new UserService();
    // Mostantól:
    static final StableValue<UserService> USERS = StableValue.of();
    public static UserService users() {
    return USERS.orElseSet(UserService::new);
    }
    }
  • A mintaillesztési mechanizmusban javasolták a primitív típusok (int, byte, char és más alapvető típusok, amelyek nem objektumok) használatának negyedik előzetes lehetőségét mindenféle sablonban, az „instanceof” operátorban és a „switch” blokkokban. switch (x.getStatus()) { case 0 -> „rendben”; case 1 -> „figyelmeztetés”; case 2 -> „hiba”; case int i -> „ismeretlen állapot: ” + i; } if (i instanceof byte b) { … b … }
  • Javasolták a Vector API tizenegyedik tesztelési megvalósítását, amely vektoriális számítási funkciókat nyújt, amelyeket x86_64 és AArch64 processzorok vektoriális utasításaival hajtanak végre, lehetővé téve, hogy műveleteket végezzenek egyszerre több értéken (SIMD). A HotSpot JIT fordítónál elérhető automatikus vektorizálási lehetőségektől eltérően, az új API lehetőséget ad a vektorizáció kifejezett kezelésére párhuzamos adatfeldolgozás céljából.

Ezen kívül az Oracle bejelentette a Detroit projektet, amely az OpenJDK részeként fog fejlődni, célja pedig a Java, JavaScript és Python közötti hordozhatóság javítása. A projekt keretében lehetőséget kívánnak biztosítani a JVM runtime JavaScript motorral, V8 és CPython értelmező beágyazására. Az Oracle korábban már fejlesztette a Nashorn JavaScript motort, amely a JVM virtuális gép fölött működött, de leállította a projektet, mert problémás volt különálló JavaScript megvalósítást fejleszteni, amikor a fő ökoszisztéma a V8 motorra támaszkodott.

További megjegyzés, hogy közzétették a JavaFX 26-os verzióját, a grafikus felhasználói alkalmazások fejlesztésének platformját. A közeljövőben várhatóan kiadják a GraalVM 26-os univerzális virtuális gépet is, amely támogatja a JavaScript (Node.js), Python, Ruby, R, JVM-en futó nyelvek (Java, Scala, Clojure, Kotlin) és olyan nyelvek alkalmazásainak futtatását, amelyekből LLVM bitkód generálható (C, C++, Rust).

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster