Po šestih mesecih razvoja je podjetje Oracle izdalo platformo Java SE 19 (Java Platform, Standard Edition 19), kjer se kot referenčna izvedba uporablja odprti projekt OpenJDK. Razen odstranitve nekaterih zastarelih funkcionalnosti je Java SE 19 ohranila obstoječo združljivost s prejšnjimi različicami platforme Java — večina prej napisanih Java projektov bo delovala brez sprememb na novi različici. Pripravljene verzije za namestitev Java SE 19 (JDK, JRE in Server JRE) so na voljo za Linux (x86_64, AArch64), Windows (x86_64) in macOS (x86_64, AArch64). Referenčna izvedba Java 19, razvita v okviru projekta OpenJDK, je povsem odprta pod licenco GPLv2 z izjemo GNU ClassPath, ki omogoča dinamično povezovanje s komercialnimi izdelki.
Java SE 19 je razvrščena med različice z običajno podporo, posodobitve za katero bodo izhajale do naslednje izdaje. Kot veja z dolgotrajno podporo (LTS) se priporoča Java SE 17, za katero bodo posodobitve izhajale do leta 2029. Spomnimo, da je s izidom Java 10 projekt prešel na nov razvojni proces, ki predvideva krajši cikel nove izdaje. Nova funkcionalnost se zdaj razvija v eni neprekinjeno posodobljeni master veji, v katero se vključujejo že pripravljene spremembe in od katere se vsakih šest mesecev odcepijo veje za stabilizacijo novih izdaj.
Med novostmi Java 19 lahko izpostavimo:
- Predlagana je bila predhodna podpora za predloge zapisov (record pattern), ki razširja možnost vzorčnega ujemanja s sredstvi za razčlenjevanje vrednosti razredov tipa record, uvedeno v Java 16. Na primer: record Point(int x, int y) {} void printSum(Object o) { if (o instanceof Point(int x, int y)) { System.out.println(x+y); } }
- V različicah za Linux je bila zagotovljena podpora za arhitekturo RISC-V.
- Dodana je bila predhodna podpora za API FFM (Foreign Function & Memory), ki omogoča povezovanje Java programov z zunanjim kodom in podatki preko klicev funkcij iz zunanjih knjižnic in dostop do pomnilnika zunaj JVM.
- Dodana je podpora za virtualne niti, ki so lahke niti, ki močno poenostavljajo pisanje in vzdrževanje visoko zmogljivih večnitnih aplikacij.
- Predlagana je četrta preliminarna realizacija API-ja Vector, ki nudi funkcionalnosti za vektorske izračune, ki se izvajajo s pomočjo vektorskih navodil procesorjev x86_64 in AArch64, ter omogoča hkratno uporabo operacij na več vrednostih (SIMD). V nasprotju z avto-vektorizacijo skalarnih operacij, ki jo ponuja JIT-compiler HotSpot, nov API omogoča izrecno upravljanje z vektorizacijo za paralelno obdelavo podatkov.
- Dodana je tretja eksperimentalna realizacija razpoznavanja vzorcev v izrazih "switch", ki omogoča uporabo fleksibilnih vzorcev v oznakah "case", ki pokrivajo serijo vrednosti, za katere je bilo prej potrebno uporabljati obsežne verige izrazov "if…else". 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(); };
- Dodana je eksperimentalna API za strukturirano paralelizacijo, ki poenostavi razvoj večnitenih aplikacij z obravnavo več nalog, ki se izvajajo v različnih niti, kot enotne enote.
Izvor: opennet.ru
