Izdaja Java SE 18

Po šestih mesecih razvoja je Oracle izdal platformo Java SE 18 (Java Platform, Standard Edition 18), ki kot referenčno izvedbo uporablja odprtokodni projekt OpenJDK. Z izjemo odstranitve nekaterih zastarelih funkcij Java SE 18 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 18 (JDK, JRE in Server JRE) so pripravljene za Linux (x86_64, AArch64), Windows (x86_64) in macOS (x86_64, AArch64). Referenčna izvedba Java 18, 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 18 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 18 vključujejo:

  • Privzeto je kodiranje UTF-8. API-ji Java, ki obdelujejo besedilne podatke na podlagi kodiranja znakov, bodo zdaj privzeto uporabljali UTF-8 na vseh platformah, ne glede na sistemske in področne nastavitve. Če se želite vrniti na staro vedenje, kjer je kodiranje izbrano na podlagi področne nastavitve sistema, lahko uporabite možnost "-Dfile.encoding=COMPAT".
  • Paket vključuje paket com.sun.net.httpserver, ki vključuje pripomoček jwebserver in knjižnični API z implementacijo enostavnega http strežnika za serviranje statične vsebine (CGI in servlet podobni upravljalniki niso podprti). Vgrajeni HTTP strežnik ni optimiziran za delovne obremenitve in ne podpira nadzora dostopa in avtentikacije, saj je namenjen predvsem uporabi v razvojnem procesu za izdelavo prototipov, odpravljanje napak in testiranje projektov.
  • JavaDoc nudi podporo za oznako "@snippet" za vdelavo delujočih primerov in izrezkov kode v dokumentacijo API-ja, kjer lahko uporabite orodja za preverjanje, označevanje sintakse in integracijo IDE.
  • Prenovljena je implementacija API-ja java.lang.reflect (Core Reflection), namenjenega pridobivanju informacij o metodah, poljih in konstruktorjih razredov ter dostopu do notranje strukture razredov. Sam API java.lang.reflect ostaja nespremenjen, vendar je zdaj implementiran z ročaji metod, ki jih zagotavlja modul java.lang.invoke, namesto z uporabo generatorjev bajtne kode. Sprememba nam je omogočila poenotenje implementacij java.lang.reflect in java.lang.invoke ter poenostavitev njunega vzdrževanja.
  • Predlagan je bil tretji 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.
  • Dodan vmesnik SPI (vmesnik ponudnika storitev) za razreševanje imen gostiteljev in naslovov IP, kar vam omogoča uporabo alternativnih razreševalcev v java.net.InetAddress, ki niso vezani na upravljalnike, ki jih ponuja operacijski sistem.
  • Na voljo je drugi predogled API-ja Foreign Function & Memory, ki aplikacijam omogoča interakcijo s kodo in podatki zunaj izvajalnega okolja Jave. Novi API vam omogoča učinkovito klicanje funkcij, ki niso JVM, in dostop do pomnilnika, ki ga ne upravlja JVM. Na primer, lahko pokličete funkcije iz zunanjih knjižnic v skupni rabi in dostopate do podatkov procesa brez uporabe JNI.
  • Dodana je bila druga eksperimentalna izvedba ujemanja vzorcev v izrazih »switch«, ki omogoča uporabo prilagodljivih vzorcev v oznakah »case« namesto natančnih vrednosti, ki pokrivajo niz vrednosti hkrati, za katere je bilo prej treba uporabiti okorne verige izrazov »če ... drugače«. Objekt o = 123L; String formatted = switch (o) { 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(); };
  • Mehanizem za finalizacijo in z njim povezane metode, kot so Object.finalize(), Enum.finalize(), Runtime.runFinalisation() in System.runFinalisation(), so zastareli in bodo v prihodnji izdaji onemogočeni.
  • ZGC (Z Garbage Collector), SerialGC in ParallelGC zbiralniki smeti podpirajo deduplikacijo vrstic.

Vir: opennet.ru

Dodaj komentar