Hat hónap fejlesztés után az Oracle kiadta a Java SE 19 (Java Platform, Standard Edition 19) platformot, amelynek referencia implementációja az OpenJDK nyílt projekt. Kivéve néhány elavult funkció eltávolítását, a Java SE 19 megőrzi a régebbi Java platform kiadásokkal való visszafelé kompatibilitást — a korábban írt Java projektek többsége változtatás nélkül működni fog az új verzió alatt. Az installálásra kész Java SE 19 (JDK, JRE és Server JRE) kiadások a Linux (x86_64, AArch64), Windows (x86_64) és macOS (x86_64, AArch64) platformokhoz készültek. Az OpenJDK keretében kifejlesztett Java 19 referencia implementáció teljesen nyílt, a GPLv2 licenc alatt, GNU ClassPath kivételekkel, amelyek lehetővé teszik a dinamikus linkelést kereskedelmi termékekkel.
A Java SE 19 a normál támogatási időszakkal rendelkező kiadások közé tartozik, amelynek frissítései a következő kiadásig fognak megjelenni. Hosszú távú támogatással (LTS) rendelkező ágnak a Java SE 17-et kell használni, amelynek frissítései 2029-ig fognak megjelenni. Emlékezzünk, hogy a Java 10 kiadástól kezdve a projekt új fejlesztési folyamatra váltott, amely rövidebb új kiadási ciklusokat jelentett. Az új funkcionalitások mostantól egy folyamatosan frissített master ágon fejlődnek, amelybe már kész változtatások kerülnek be, és amelyből hat havonta stabilizáló ágak ágaznak ki az új kiadásokhoz.
A Java 19 újdonságai közül érdemes megemlíteni:
- Előzetes támogatás javasolt a rekord mintákhoz (record pattern), amely kiterjeszti a Java 16-ban megjelent mintázás lehetőségét a record típusú osztályok értékeinek elemzésére. Például: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
- A Linux kiadásokban támogatást nyújtanak a RISC-V architektúrához.
- Előzetes támogatás került bevezetésre az FFM (Foreign Function & Memory) API-hoz, amely lehetővé teszi a Java programok számára a külső kódokkal és adatokkal való interakciót külső könyvtárak függvényhívásaival és a JVM-en kívüli memória elérésével.
- Bevezetésre került a virtuális szálak támogatása, amelyek könnyű szálak, jelentősen megkönnyítve a nagy teljesítményű, több szálú alkalmazások írását és karbantartását.
- Javaslatot tettünk a Vector API negyedik előzetes megvalósítására, amely vektorszámítási funkciókat biztosít, amiket az x86_64 és AArch64 processzorok vektoreltérési utasításainak felhasználásával hajtanak végre, és lehetővé teszik, hogy egyszerre végezzünk műveleteket több értéken (SIMD). Ezzel szemben a HotSpot JIT-kompiler által nyújtott autovektorizálás lehetőségeivel, az új API kifejezett irányítást ad a vektorizáció felett az adatok párhuzamos feldolgozásához.
- A "switch" kifejezésekben megjelent a harmadik kísérleti sablon-illesztés megvalósítása, amely lehetővé teszi, hogy a "case" címkékben ne pontos értékeket, hanem rugalmas sablonokat használjunk, amelyek egy sor értéket ölelnek fel, amikhez korábban terjedelmes "if…else" láncokat kellett használni. Object o = 123L; String formatted = 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); default -> o.toString(); };
- Kísérleti API került hozzáadásra a strukturált párhuzamossághoz, amely megkönnyíti a több szálon futó alkalmazások fejlesztését azáltal, hogy több, különböző szálon végrehajtott feladatot egyetlen blokkként kezel.
Forrás: opennet.ru
