Izdanje Java SE 20

Nakon šest mjeseci razvoja, Oracle je izdao Java SE 20 (Java Platform, Standard Edition 20), koja koristi OpenJDK projekt otvorenog koda kao referentnu implementaciju. Uz iznimku uklanjanja nekih zastarjelih značajki, Java SE 20 održava kompatibilnost s prethodnim izdanjima Java platforme - većina prethodno napisanih Java projekata radit će bez promjena kada se pokreću pod novom verzijom. Spremne za instalaciju 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 u okviru projekta OpenJDK, referentna implementacija Java 20 potpuno je otvorenog koda pod GPLv2 licencom, s GNU ClassPath iznimkama koje dopuštaju dinamičko povezivanje s komercijalnim proizvodima.

Java SE 20 klasificirana je kao redovita verzija podrške i nastavit će primati ažuriranja do sljedećeg izdanja. Grana dugoročne podrške (LTS) trebala bi biti Java SE 17, koja će nastaviti primati ažuriranja do 2029. godine. Podsjetimo, počevši od izdanja Jave 10, projekt je prešao na novi razvojni proces, koji podrazumijeva kraći ciklus za formiranje novih izdanja. Nova funkcionalnost sada je razvijena u jednoj stalno ažuriranoj glavnoj grani, koja uključuje gotove promjene i iz koje se grane granaju svakih šest mjeseci kako bi se stabilizirala nova izdanja.

Nove značajke u Javi 20 uključuju:

  • Postoji preliminarna podrška za Scoped Values, koja omogućuje dijeljenje nepromjenjivih podataka među nitima i učinkovitu razmjenu podataka između podređenih niti (vrijednosti se nasljeđuju). Scoped Values ​​​​se razvijaju kako bi zamijenili mehanizam lokalnih varijabli niti i učinkovitije su pri korištenju vrlo velikog broja virtualnih niti (tisuće ili milijune niti). Glavna razlika između Scoped Values ​​​​i lokalnih varijabli niti je u tome što se prve pišu jednom, ne mogu se mijenjati u budućnosti i ostaju dostupne samo tijekom trajanja izvršavanja niti. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void serve(Request request, Response response) { var level = (request. isAuthorized()? ADMIN : GUEST); var korisnik = novi korisnik(razina); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) izbaci novu iznimku InvalidUserException(); vrati novu DBConnection(...); }}
  • Dodan je drugi pregled uzoraka zapisa, proširujući značajku podudaranja uzoraka uvedenu u Javi 16 za raščlanjivanje 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" izjavama, dopuštajući "case" oznakama da koriste ne točne vrijednosti, već fleksibilne obrasce koji pokrivaju niz vrijednosti odjednom, za što je prije bilo potrebno koristiti glomazne lanci "if...else" izraza. static String formatterPatternSwitch(Object obj) { return switch (obj) { 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("Niz %s", s); zadano -> o.toString(); }; }
  • Dodana je druga preliminarna implementacija FFM (Foreign Function & Memory) API-ja, koja vam omogućuje organiziranje interakcije Java programa s vanjskim kodom i podacima putem pozivanja funkcija iz vanjskih biblioteka i pristupa memoriji izvan JVM-a.
  • Dodan je drugi pregled virtualnih 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 izvode u različitim nitima kao jedan blok.
  • Dodan je peti pregled Vector API-ja, pružajući funkcije za vektorske izračune koji se izvode korištenjem vektorskih instrukcija na x86_64 i AArch64 procesorima i omogućuju simultanu primjenu operacija na višestruke vrijednosti (SIMD). Za razliku od mogućnosti koje pruža HotSpot JIT kompajler za automatsku vektorizaciju skalarnih operacija, novi API omogućuje eksplicitnu kontrolu vektorizacije za paralelnu obradu podataka.

Izvor: opennet.ru

Dodajte komentar