Izdaja Java SE 20

Po šestih mesecih razvoja je Oracle izdal platformo Java SE 20 (Java Platform, Standard Edition 20), ki kot referenčno izvedbo uporablja odprtokodni projekt OpenJDK. Z izjemo odstranitve nekaterih zastarelih funkcij Java SE 20 ohranja povratno združljivost s prejšnjimi izdajami platforme Java – večina predhodno napisanih projektov Java bo še vedno delovala brez sprememb, ko se izvajajo v novi različici. Za namestitev pripravljene različice Java SE 20 (JDK, JRE in Server JRE) so pripravljene za Linux (x86_64, AArch64), Windows (x86_64) in macOS (x86_64, AArch64). Referenčna izvedba Java 20, ki jo je razvil projekt OpenJDK, je popolnoma odprtokodna pod licenco GPLv2 z izjemami GNU ClassPath, ki omogočajo dinamično povezovanje s komercialnimi izdelki.

Java SE 20 je kategorizirana kot izdaja redne podpore, s posodobitvami, ki bodo izdane pred naslednjo izdajo. Veja dolgoročne podpore (LTS) bi morala biti Java SE 17, ki bo prejemala posodobitve do leta 2029. Spomnimo se, da je projekt z izdajo Jave 10 prešel na nov razvojni proces, kar pomeni krajši cikel za oblikovanje novih izdaj. Nova funkcionalnost se zdaj razvija v eni stalno posodobljeni glavni veji, ki vključuje že dokončane spremembe in iz katere se veje razvejajo vsakih šest mesecev za stabilizacijo novih izdaj.

Nove funkcije v Javi 20 vključujejo:

  • Obstaja predhodna podpora za obsegane vrednosti, ki omogoča skupno rabo nespremenljivih podatkov med nitmi in učinkovito izmenjavo podatkov med podrejenimi nitmi (vrednosti so podedovane). Scoped Values ​​​​se razvijajo za nadomestitev mehanizma lokalnih spremenljivk niti in so učinkovitejše pri uporabi zelo velikega števila navideznih niti (na tisoče ali milijone niti). Glavna razlika med obsegajočimi vrednostmi in lokalnimi spremenljivkami niti je v tem, da so prve zapisane enkrat, jih ni mogoče spremeniti v prihodnosti in ostanejo na voljo samo v času izvajanja niti. class Server { končna statična ScopedValue CURRENT_USER = nova ScopedValue(); void serve(Zahteva za zahtevo, odgovor odgovora) { var level = (request. isAuthorized()? ADMIN : GUEST); var uporabnik = nov uporabnik (raven); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); if (!user.canOpen()) vrže novo InvalidUserException(); vrni novo DBConnection(...); }}
  • Dodan je bil drugi predogled vzorcev zapisov, ki razširja funkcijo ujemanja vzorcev, predstavljeno v Javi 16 za razčlenitev vrednosti razredov zapisov. Na primer: zapis 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 bila četrta predhodna izvedba ujemanja vzorcev v stavkih »switch«, ki omogoča, da oznake »case« ne uporabljajo natančnih vrednosti, ampak prilagodljive vzorce, ki pokrivajo vrsto vrednosti hkrati, za kar je bilo prej treba uporabljati okorne verige izrazov »če ... drugače«. statični String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format("int %d", i); case Long l -> String.format("dolg %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("Niz %s", s); privzeto -> o.toString(); }; }
  • Dodana je bila druga predhodna izvedba API-ja FFM (Foreign Function & Memory), ki omogoča organiziranje interakcije programov Java z zunanjo kodo in podatki prek klicanja funkcij iz zunanjih knjižnic in dostopa do pomnilnika zunaj JVM.
  • Dodan je bil drugi predogled navideznih niti, ki so lahke niti, ki močno poenostavijo pisanje in vzdrževanje visoko zmogljivih večnitnih aplikacij.
  • Dodan je drugi eksperimentalni API za strukturiran paralelizem, ki poenostavi razvoj večnitnih aplikacij tako, da obravnava več opravil, ki se izvajajo v različnih nitih, kot en blok.
  • Dodan je bil peti predogled vektorskega API-ja, ki zagotavlja funkcije za vektorske izračune, ki se izvajajo z vektorskimi navodili na procesorjih x86_64 in AArch64 in omogočajo hkratno uporabo operacij za več vrednosti (SIMD). Za razliko od zmožnosti prevajalnika HotSpot JIT za samodejno vektorizacijo skalarnih operacij novi API omogoča izrecno nadzorovanje vektorizacije za vzporedno obdelavo podatkov.

Vir: opennet.ru

Dodaj komentar