Java SE 20 izdanje

Nakon šest mjeseci razvoja, Oracle je objavio platformu Java SE 20 (Java Platform, Standard Edition 20), koja koristi OpenJDK open source projekat kao referentnu implementaciju. Sa izuzetkom uklanjanja nekih zastarjelih funkcija, Java SE 20 održava kompatibilnost unatrag s prethodnim izdanjima Java platforme—većina prethodno napisanih Java projekata će i dalje raditi bez modifikacija kada se pokrene pod novom verzijom. Instalacijske verzije Java SE 20 (JDK, JRE i Server JRE) pripremljene su za Linux (x86_64, AArch64), Windows (x86_64) i macOS (x86_64, AArch64). Razvijena od strane OpenJDK projekta, Java 20 referentna implementacija je potpuno otvorenog koda pod GPLv2 licencom sa GNU ClassPath izuzecima kako bi se omogućilo dinamičko povezivanje sa komercijalnim proizvodima.

Java SE 20 je kategorizirana kao redovno izdanje podrške, s ažuriranjima koja će biti objavljena prije sljedećeg izdanja. Ogranak za dugoročnu podršku (LTS) bi trebao biti Java SE 17, koji će primati ažuriranja do 2029. godine. Podsjetimo, počevši od izdavanja Jave 10, projekat je prešao na novi razvojni proces, koji podrazumijeva kraći ciklus za formiranje novih izdanja. Nova funkcionalnost se sada razvija u jednoj stalno ažuriranoj glavnoj grani, koja uključuje već završene promjene i iz koje se grane granaju svakih šest mjeseci kako bi se stabilizirala nova izdanja.

Nove funkcije u Javi 20 uključuju:

  • Postoji preliminarna podrška za Scoped Values, omogućavajući nepromjenjive podatke da se dijele između niti i efikasno razmjenjuju podatke između podređenih niti (vrijednosti se nasljeđuju). Vrijednosti opsega se razvijaju kako bi zamijenile mehanizam lokalnih varijabli niti i efikasnije su kada se koristi vrlo veliki broj virtualnih niti (hiljade ili milioni niti). Glavna razlika između vrijednosti opsega i lokalnih varijabli niti je u tome što se prve pišu jednom, ne mogu se mijenjati u budućnosti i ostaju dostupne samo za vrijeme izvršavanja niti. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Zahtjev zahtjeva, Odgovor odgovora) { var level = (zahtjev. isAuthorized()? ADMIN : GOST); var korisnik = novi korisnik(nivo); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(zahtjev, odgovor)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) baci novi InvalidUserException(); vrati novu DBConnection(...); } }
  • Dodan je drugi pregled obrazaca zapisa, koji proširuje funkciju podudaranja uzoraka uvedenu u Javi 16 kako bi se analizirale vrijednosti klasa zapisa. Na primjer: record Point(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • Dodana je četvrta preliminarna implementacija podudaranja uzoraka u “switch” naredbama, omogućavajući oznakama “case” da koriste ne točne vrijednosti, već fleksibilne obrasce koji pokrivaju niz vrijednosti odjednom, za koje je ranije bilo potrebno koristiti glomazne lanci izraza “ako...drugo”. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format("int %d", i); case Dugi l -> String.format("dugi %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; }
  • Dodata je druga preliminarna implementacija FFM (Foreign Function & Memory) API, koja vam omogućava da organizujete interakciju Java programa sa eksternim kodom i podacima putem pozivanja funkcija iz eksternih biblioteka i pristupa memoriji izvan JVM-a.
  • Dodan je drugi pregled virtuelnih niti, koje su lagane niti koje uvelike pojednostavljuju pisanje i održavanje višenitnih aplikacija visokih performansi.
  • Dodan je drugi eksperimentalni API za strukturirani paralelizam, koji pojednostavljuje razvoj aplikacija s više niti tretirajući više zadataka koji se pokreću u različitim nitima kao jedan blok.
  • Dodan je peti pregled Vector API-ja koji pruža funkcije za vektorske proračune koje se izvode pomoću vektorskih instrukcija na x86_64 i AArch64 procesorima i omogućavaju da se operacije istovremeno primjenjuju na više vrijednosti (SIMD). Za razliku od mogućnosti koje pruža HotSpot JIT kompajler za auto-vektorizaciju skalarnih operacija, novi API omogućava eksplicitnu kontrolu vektorizacije za paralelnu obradu podataka.

izvor: opennet.ru

Dodajte komentar