
A Java közösség számára nagy mérföldkő a JDK 25 hivatalos megjelenése, amely hosszú távú támogatást (LTS – Long-Term Support) kapott. Ez a kiadás éveken át meghatározza majd a vállalati rendszerek és fejlesztőkörnyezetek alapját. A hangsúly ezúttal különösen a biztonságon és a korszerűsítésen van, miközben a fejlesztők kényelmét szolgáló új könyvtári és nyelvi funkciók is bővültek.
Fokozott biztonsági funkciók
A JDK 25 jelentős újítása, hogy TLS-protokollhoz kötött korlátozásokat vezet be a jdk.tls.disabledAlgorithms tulajdonságon keresztül, lehetővé téve az adminisztrátorok számára, hogy részletesebben szabályozzák a kézfogási és tanúsítvány-aláírási algoritmusokat.
Emellett a TLS Keying Material Exporter támogatás megjelent a JSSE és SunJSSE komponensekben az RFC 5705 és RFC 8446 szabványok alapján.
A kriptográfiai modulokban is bővült a támogatás:
- Új SHAKE128-256 és SHAKE256-512 algoritmusok érkeztek a MessageDigest-hez.
- A SunPKCS11 modul mostantól támogatja a HKDF kulcsszármaztatást.
- Az XML aláírás implementációja a Santuario 3.0.5 verzióra frissült, immár támogatva a SHA-3-alapú ECDSA aláírásokat.
Könyvtári és API-fejlesztések
A fejlesztők számos kényelmi funkcióval találkozhatnak:
- Új, egyszerűbb szövegbeolvasási lehetőségek: Reader.readAllAsString() és Reader.readAllLines().
- A stdin.encoding tulajdonság szabványos módot biztosít a System.in karakterkészletének lekérdezésére vagy felülírására.
- A CharSequence és CharBuffer osztályok új getChars(int, int, char[], int) metódust kaptak, amely hatékonyabb tömbbeolvasást tesz lehetővé.
- A HttpClient API korlátozhatja a választest méretét, valamint új connectionLabel metódust kínál a kapcsolatok azonosítására.
- A ZIP fájlrendszer-szolgáltató mostantól képes csak olvasható módban csatolni archívumokat.
Hibakeresés és teljesítmény
A java.security.debug kimenete megújult: immár alapértelmezetten megjeleníti a szál-azonosítót, szálnév-információt, a hívó helyét és az időbélyegeket, miközben a régi +thread és +timestamp opciók hatása megszűnt.
A G1 Garbage Collector csökkenti a memóriahasználatot azzal, hogy régiókat közös kártyakészletekbe (card set) csoportosít, ezzel rövidítve a kevert gyűjtési szüneteket. A kompakt objektumfejlécek (amelyek a JDK 24-ben jelentek meg) mostantól hivatalos termékfunkciónak számítanak, ami kisebb heap-méretet eredményezhet.
A Java Flight Recorder (JFR) új @Contextual annotációt kínál, amely lehetővé teszi, hogy magasabb szintű kérések – például trace ID-k – társíthatók legyenek alacsony szintű eseményekhez, mint például zárolási versenyhelyzetek. A szál-dumpok immár zárolási információkat is tartalmaznak, és JSON-sémával egészülnek ki a jobb eszköztámogatás érdekében.
Eltávolított és elavult elemek
Az LTS kiadás során több régi komponens is nyugdíjba vonult:
- Néhány elavult gyökértanúsítvány (például Baltimore CyberTrust, Camerfirma) kikerült.
- A datagram socket régi konstruktoraival kapcsolatos támogatás megszűnt.
- A ritkán használt PerfData mintavételezés eltávolításra került.
- Számos, a régi Security Managerhez kötődő jogosultság-osztály deprecált lett, jelezve a modell felhagyását.
- A UseCompressedClassPointers opció szintén elavult, mivel a tömörített mutatók immár alapértelmezettek.
32 bites x86 támogatás megszűnése
Fontos változás, hogy a JDK 25-tel a Java hivatalosan is megszüntette a 32 bites x86 architektúra támogatását (JEP 503). A forráskód és a build-folyamat eltávolítása az előző, JDK 24-ben (JEP 501) történt deprecálás logikus folytatása. Bár a Zero interpreter továbbra is elérhető egyes kevésbé elterjedt 32 bites platformokon, a fővonalú támogatás mostantól teljesen a 64 bites rendszerekre koncentrál.
Támogatás és elérhetőség
A JDK 25 a 2023-as JDK 21 és a 2021-es JDK 17 után a legújabb hosszú távú támogatású kiadás, várhatóan legalább nyolc évig támogatott lesz. A teljes újdonságlista és a hibajavítások a hivatalos kiadási megjegyzésekben olvashatók, a telepítőcsomagok pedig már elérhetők a letöltési oldalakon.
- OpenJDK Java 21 letöltés
- OpenJDK Java 21 kiadási jegyzetek
- OpenJDK Java 21 API Javadoc
- OpenJDK java 21-gyel kapcsolatos cikkek
A JDK 25 LTS tehát nemcsak új biztonsági és fejlesztői funkciókkal érkezik, hanem egyértelműen a modern, 64 bites Java-ökoszisztéma megerősítését célozza, tisztább, karcsúbb alapot adva a következő évtized Java-alkalmazásaihoz.
Újdonságok:
- JEP 470: PEM Encodings of Cryptographic Objects (Preview)
- JEP 502: Stable Values (Preview)
- JEP 503: Remove the 32-bit x86 Port
- JEP 505: Structured Concurrency (Fifth Preview)
- JEP 506: Scoped Values
- JEP 507: Primitive Types in Patterns, instanceof, and switch (Third Preview)
- JEP 508: Vector API (Tenth Incubator)
- JEP 509: JFR CPU-Time Profiling (Experimental)
- JEP 510: Key Derivation Function API
- JEP 511: Module Import Declarations
- JEP 512: Compact Source Files and Instance Main Methods
- JEP 513: Flexible Constructor Bodies
- JEP 514: Ahead-of-Time Command-Line Ergonomics
- JEP 515: Ahead-of-Time Method Profiling
- JEP 518: JFR Cooperative Sampling
- JEP 519: Compact Object Headers
- JEP 520: JFR Method Timing & Tracing
- JEP 521: Generational Shenandoah
JFR Method Timing & Tracing
JEP 520, JFR Method Timing & Tracing, proposes to extend the JFR with facilities for method timing and tracing via the bytecode Instrumentation interface. Two new JFR events, jdk.MethodTiming and jdk.MethodTrace, used in the MethodTimingEvent and MethodTraceEvent classes, respectively, accept a filter to select the appropriate methods for timing and tracing.
Compact Object Headers
JEP 519, Compact Object Headers, proposes to promote this feature from experimental to product. Inspired by Project Lilliput, this feature "reduces the size of object headers in the HotSpot JVM from between 96 and 128 bits down to 64 bits on 64-bit architectures." More details on JEP 519.
JFR Cooperative Sampling
JEP 518, JFR Cooperative Sampling, proposes to "improve the stability of the JDK Flight Recorder (JFR) when it asynchronously samples Java thread stacks." This is accomplished by traversing call stacks at safepoints, i.e., a point where a thread is suspended at a well-defined code location.
Ahead-of-Time Method Profiling
JEP 515, Ahead-of-Time Method Profiling, proposes to improve application warmup time by "making method-execution profiles from a previous run of an application instantly available, when the HotSpot JVM starts." This allows the JIT compiler to immediately generate native code upon application startup as opposed to waiting for profiles to be collected.
Ahead-of-Time Command-Line Ergonomics
JEP 514, Ahead-of-Time Command-Line Ergonomics, proposes to simplify the process of creating ahead-of-time caches, as described in JEP 483, Ahead-of-Time Class Loading & Linking, that may accelerate Java application startup by "simplifying the commands required for common use cases."
JFR CPU-Time Profiling (Experimental)
JEP 509, JFR CPU-Time Profiling (Experimental), the only new experimental feature in this release, proposes to enhance the JFR to utilize the Linux kernel CPU timer that accurately measures CPU-cycle consumption. This will provide the ability to capture CPU-time profiling information on Java applications.
További részletek: OpenJDK.Java.net.
