Az Oracle bejelentette a Java 27 általános elérhetőségét. A Java platform legújabb funkciókiadása a projekt szokásos kiadási ciklusának részeként, hat hónappal a Java 26 után érkezett meg.
A kiadás kilenc JDK Enhancement Proposal javaslatot tartalmaz, amelyek a JVM-et, a nyelvi funkciókat, a kriptográfiát, a könyvtárakat és a fejlesztőeszközöket érintik. Ezek közül négy előzetes funkció, a Vector API pedig továbbra is inkubátor funkció marad.
Fontos változás, hogy a Java 27-ben a G1 lett az alapértelmezett szemétgyűjtő minden környezetben. Korábban a HotSpot JVM bizonyos konfigurációkban a Serial szemétgyűjtőt is választhatta. A JDK 27-től kezdve a G1-t használják mindig, ha a felhasználók nem adnak meg kifejezetten másik szemétgyűjtőt.
A Compact Object Headers funkciót mostantól alapértelmezetten bekapcsolták. 64 bites architektúrákon ez 96 bitről 64 bitre csökkenti az objektumfejlécek méretét. Az Oracle szerint ez csökkenti a heap használatát, javítja az adatelhelyezés hatékonyságát, és több objektum fér el ugyanabban a memóriában.
A Java 27 emellett hibrid poszt-kvantum kulcscserét vezet be TLS 1.3-hoz. A megvalósítás a hagyományos kriptográfiai algoritmusokat kvantumálló algoritmusokkal kombinálja, és automatikusan elérhető minden olyan alkalmazás számára, amely a Java javax.net.ssl API-jait használja, kódbeli módosítás nélkül.
A nyelvi újdonságok között az alaptípusok (primitive types) mintákban, az instanceof és a switch kifejezésekben ötödik előzetesüknél tartanak. A munka célja, hogy az alaptípusú értékek következetesebben vehessenek részt a Java mintaillesztési funkcióiban, miközben szigorúbb fordítói ellenőrzéseket vezetnek be a switch kifejezésekre.
A Structured Concurrency hetedik előzetesként tér vissza. Az API megkönnyíti az egymással összefüggő párhuzamos feladatok kezelését, mintha egyetlen egységet alkotnának, különösen leállítás, hibakezelés és feladatbefejezés esetén.
A Lazy Constants harmadszor kerül előzetes formában a Java-ba. Olyan API-t ad, amellyel az értékek csak az első használatkor inicializálódnak, és utána változatlanok maradnak.
Közben a Vector API a 12. inkubátor-iterációjához érkezett. Lehetővé teszi, hogy a fejlesztők vektorműveleteket fogalmazzanak meg úgy, hogy a JVM ezeket vektoros CPU utasításokká fordíthassa a támogatott hardveren. Elsősorban olyan terheléseket céloz, ahol az SIMD-jellegű feldolgozás jelentős teljesítménynyereséget hozhat.
Új funkció a JFR In-Process Data Redaction is. A Java Flight Recorder mostantól képes kitakarni a parancssori argumentumokat, a környezeti változók értékeit és a rendszer tulajdonságainak értékeit, mielőtt a diagnosztikai adatok elhagyják a futó Java folyamatot. Így kevésbé valószínű, hogy érzékeny futásidejű információk kerülnek a felvételekbe.
A kilenc JEP mellett a JDK 27 számos kisebb futásidejű és eszközszintű fejlesztést is tartalmaz. Ide tartoznak a G1 heap-méretezési változtatásai, fordítóoptimalizálások, gyorsabb fájl- és natív I/O műveletek, a Vector API optimalizálása, valamint több kriptográfiai algoritmus teljesítményének javítása.
A Java diagnosztikai eszközei is kaptak némi figyelmet. A JSON thread dumpok mostantól a kiválasztott azonosítókat és számlálókat JSON számként ábrázolják, a VM diagnosztika pedig képes jelenteni az éppen megnyitott fájlleírók számát. A jcmd segédprogramhoz bash kiegészítés támogatás is került.
További részletek az hivatalos bejelentésben olvashatók. Az Oracle tervei szerint a JDK 27-hez 2027 márciusáig adnak ki frissítéseket, ekkor várható, hogy a Java 28 váltja majd, mint következő funkciókiadás.

