Izdanje Java SE 20

Nakon šest mjeseci razvoja, Oracle je izdao platformu Java SE 20 (Java Platform, Standard Edition 20), koja koristi projekt otvorenog koda OpenJDK kao referentnu implementaciju. Uz izuzetak uklanjanja nekih zastarjelih značajki, Java SE 20 održava unatrag kompatibilnu s prethodnim izdanjima Java platforme - većina prethodno napisanih Java projekata radit će nepromijenjena kada se pokrene u novoj verziji. 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 od strane projekta OpenJDK, referentna implementacija Java 20 je u potpunosti otvorenog koda pod GPLv2 licencom s GNU ClassPath iznimkom, koja omogućuje 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:

  • Predlaže se preliminarna podrška za Scoped Values ​​​​(vrijednosti s ograničenim opsegom), koja omogućuje dijeljenje nepromjenjivih podataka između niti i učinkovitu razmjenu podataka između podređenih niti (vrijednosti se nasljeđuju). Scoped Values ​​​​namijenjene su zamjeni mehanizma varijabli lokalnih za niti i učinkovitije su pri korištenju vrlo velikog broja virtualnih niti (tisuće i milijuni niti). Glavna razlika između Scoped Values ​​​​(vrijednosti s ograničenim opsegom) i varijabli lokalnih za niti je u tome što se prve zapisuju jednom, ne mogu se naknadno mijenjati i ostaju dostupne samo za vrijeme 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 user = new User(level); ScopedValue.where(CURRENT_USER, user) .run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); ako (!user.canOpen()) bacaj novi InvalidUserException(); vrati novi DBConnection(...); } }
  • Dodana je druga preliminarna implementacija obrazaca zapisa, proširujući značajku podudaranja uzoraka uvedenu u Javi 16 kako bi se parsirale 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 pregledna implementacija podudaranja uzoraka u switch izrazima, koja omogućuje oznakama slučajeva korištenje fleksibilnih uzoraka koji obuhvaćaju niz vrijednosti, a ne preciznih vrijednosti, što je prije zahtijevalo glomazne lance if-else naredbi. 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("String %s", s); default -> o.toString(); }; }
  • Dodana je druga preliminarna implementacija FFM (Foreign Function & Memory) API-ja, koja omogućuje Java programima interakciju s vanjskim kodom i podacima pozivanjem funkcija iz vanjskih biblioteka i pristupom memoriji izvan JVM-a.
  • Dodana je druga preliminarna implementacija virtualnih niti, koje su lagane niti koje uvelike pojednostavljuju pisanje i održavanje visokoučinkovitih višenitnih aplikacija.
  • Dodana je druga verzija eksperimentalnog API-ja za strukturirani paralelizam, pojednostavljujući razvoj višenitnih aplikacija tretiranjem više zadataka koji se izvršavaju na različitim nitima kao jedne cjeline.
  • Dodana je peta preliminarna implementacija Vector API-ja. Ovaj API pruža funkcije za vektorske izračune izvedene pomoću vektorskih instrukcija procesora x86_64 i AArch64 te omogućuje istovremeni rad na više vrijednosti (SIMD). Za razliku od automatske vektorizacije skalarnih operacija HotSpot JIT kompajlera, novi API omogućuje eksplicitnu kontrolu nad vektorizacijom za paralelnu obradu podataka.

Izvor: opennet.ru

Kupite pouzdan hosting za stranice s DDoS zaštitom, VPS VDS poslužiteljima 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster