Java SE 18 kiadás

Hat hónapos fejlesztés után az Oracle kiadta a Java SE 18-et (Java Platform, Standard Edition 18), amely az OpenJDK nyílt forráskódú projektet használja referencia megvalósításként. Néhány elavult szolgáltatás eltávolítása kivételével a Java SE 18 fenntartja a visszamenőleges kompatibilitást a Java platform korábbi kiadásaival – a legtöbb korábban írt Java projekt továbbra is módosítás nélkül működik az új verzió alatt. A Java SE 18 (JDK, JRE és Server JRE) telepíthető buildjei Linux (x86_64, AArch64), Windows (x86_64) és macOS (x86_64, AArch64) számára készültek. Az OpenJDK projekt által kifejlesztett Java 18 referenciaimplementáció teljesen nyitott a GPLv2 licenc alatt, GNU ClassPath kivételekkel, hogy lehetővé tegye a kereskedelmi termékekhez való dinamikus hivatkozást.

A Java SE 18 rendszeres támogatási kiadásként van besorolva, a frissítéseket a következő kiadás előtt kell kiadni. A Long Term Support (LTS) ága a Java SE 17 legyen, amely 2029-ig kap frissítéseket. Emlékezzünk vissza, hogy a Java 10 kiadásától kezdve a projekt új fejlesztési folyamatra váltott, ami rövidebb ciklust jelent az új kiadások kialakításához. Az új funkciók fejlesztése most egy folyamatosan frissített fő ágban történik, amely magában foglalja a már befejezett változtatásokat, és amelyből félévente leágaznak az ágak az új kiadások stabilizálása érdekében.

A Java 18 új funkciói a következők:

  • Alapértelmezés szerint a kódolás UTF-8. A szöveges adatokat karakterkódolás alapján feldolgozó Java API-k mostantól alapértelmezés szerint az UTF-8-at fogják használni minden platformon, függetlenül a rendszer- és terület-beállításoktól. A régi viselkedéshez való visszatéréshez, ahol a kódolást a rendszer területi beállításai alapján választják ki, használhatja a "-Dfile.encoding=COMPAT" opciót.
  • A csomag tartalmazza a com.sun.net.httpserver csomagot, amely tartalmazza a jwebserver segédprogramot és a könyvtár API-t egy egyszerű http szerver megvalósításával a statikus tartalom kiszolgálására (a CGI és szervlet-szerű kezelők nem támogatottak). A beépített HTTP szerver nincs optimalizálva a munkaterhelésre, és nem támogatja a hozzáférés-vezérlést és a hitelesítést, mivel elsősorban prototípus-készítési, hibakeresési és tesztelési projektek fejlesztési folyamatában való felhasználásra szolgál.
  • A JavaDoc támogatja a „@snippet” címkét, amellyel működő példákat és kódrészleteket ágyazhat be az API-dokumentációba, ahol érvényesítési eszközöket, szintaxiskiemelést és IDE-integrációt használhat.
  • Újratervezték a java.lang.reflect API (Core Reflection) megvalósítását, amely a metódusokról, mezőkről és osztálykonstruktorokról, valamint az osztályok belső szerkezetéhez való hozzáférésről hivatott információkat szerezni. Maga a java.lang.reflect API változatlan marad, de most a java.lang.invoke modul által biztosított metódusfogantyúkkal valósítják meg a bájtkód generátorok helyett. A változtatás lehetővé tette számunkra, hogy egyesítsük a java.lang.reflect és a java.lang.invoke implementációit, és egyszerűsítsük karbantartásukat.
  • Javasolták a Vector API harmadik előnézetét, amely funkciókat biztosít a vektorszámításokhoz, amelyeket vektorutasítások segítségével hajtanak végre x86_64 és AArch64 processzorokon, és lehetővé teszi a műveletek egyidejű alkalmazását több értékre (SIMD). A HotSpot JIT fordítóban a skalárműveletek automatikus vektorizálására biztosított képességekkel ellentétben az új API lehetővé teszi a vektorizálás explicit vezérlését párhuzamos adatfeldolgozáshoz.
  • Hozzáadott SPI-interfész (szolgáltatói interfész) a gazdagépnevek és IP-címek feloldásához, lehetővé téve alternatív feloldók használatát a java.net.InetAddress-ben, amelyek nem kapcsolódnak az operációs rendszer által kínált kezelőkhöz.
  • A Foreign Function & Memory API második előnézete is rendelkezésre áll, amely lehetővé teszi az alkalmazások számára, hogy a Java futási környezeten kívül kommunikáljanak kóddal és adatokkal. Az új API lehetővé teszi a nem JVM függvények hatékony meghívását és a nem JVM által kezelt memória elérését. Például meghívhat függvényeket külső megosztott könyvtárakból, és hozzáférhet a folyamatadatokhoz a JNI használata nélkül.
  • A mintaillesztés egy második kísérleti megvalósítása került hozzáadásra a „switch” kifejezésekben, amely lehetővé teszi a rugalmas minták használatát a „case” címkékben a pontos értékek helyett, egyszerre fedve le az értékek sorozatát, amelyekhez korábban használni kellett. nehézkes „ha... másként” kifejezések láncolata. o objektum = 123L; String formázott = switch (o) { 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); alapértelmezett -> o.toString(); };
  • A véglegesítési mechanizmus és a hozzá kapcsolódó metódusok, például az Object.finalize(), az Enum.finalize(), a Runtime.runFinalization() és a System.runFinalization() elavulttá váltak, és egy jövőbeli kiadásban letiltásra kerülnek.
  • A ZGC (Z Garbage Collector), a SerialGC és a ParallelGC szemétgyűjtők támogatják a sor-deduplikációt.

Forrás: opennet.ru

Hozzászólás