Java SE 18 release

Nei seis moannen fan ûntwikkeling hat Oracle it platfoarm Java SE 18 (Java Platform, Standard Edition 18) frijlitten, dat it OpenJDK-iepenboarne-projekt brûkt as referinsjeimplementaasje. Mei útsûndering fan it fuortheljen fan guon ferâldere funksjes, behâldt Java SE 18 efterútkompatibiliteit mei eardere releases fan it Java-platfoarm - de measte earder skreaune Java-projekten sille noch wurkje sûnder wiziging as se rinne ûnder de nije ferzje. Ynstalleare builds fan Java SE 18 (JDK, JRE, en Server JRE) binne taret foar Linux (x86_64, AArch64), Windows (x86_64), en macOS (x86_64, AArch64). Ûntwikkele troch it OpenJDK projekt, de Java 18 referinsje ymplemintaasje is folslein iepen ûnder de GPLv2 lisinsje mei GNU ClassPath útsûnderings om dynamyske keppele oan kommersjele produkten.

Java SE 18 is kategorisearre as in reguliere stiperelease, mei updates dy't moatte wurde frijlitten foar de folgjende release. De tûke foar lange termyn stipe (LTS) soe Java SE 17 wêze moatte, dy't updates sil ûntfange oant 2029. Tink derom dat begjinnend mei de frijlitting fan Java 10, it projekt oerstapt nei in nij ûntwikkelingsproses, wat in koartere syklus ymplisearret foar de foarming fan nije releases. Nije funksjonaliteit wurdt no ûntwikkele yn ien konstant bywurke mastertûke, dy't al foltôge wizigingen omfettet en wêrfan tûken elke seis moanne fertakke wurde om nije releases te stabilisearjen.

Nije funksjes yn Java 18 omfetsje:

  • De standert kodearring is UTF-8. Java API's dy't tekstgegevens ferwurkje basearre op karakterkodearring sille no standert UTF-8 brûke op alle platfoarms, nettsjinsteande systeemynstellingen en lokaasjeynstellingen. Om werom te gean nei it âlde gedrach, wêrby't de kodearring keazen wurdt op basis fan de systeemlokaal, kinne jo de opsje "-Dfile.encoding=COMPAT" brûke.
  • It pakket omfettet it pakket com.sun.net.httpserver, dat it jwebserver-hulpprogramma en biblioteek-API omfettet mei de ymplemintaasje fan in ienfâldige http-tsjinner foar it tsjinjen fan statyske ynhâld (CGI- en servlet-like hannelers wurde net stipe). De ynboude HTTP-tsjinner is net optimalisearre foar workloads en stipet gjin tagongskontrôle en autentikaasje, om't it primêr rjochte is op gebrûk yn it ûntwikkelingsproses foar prototyping, debuggen en testen fan projekten.
  • JavaDoc biedt stipe foar de tag "@snippet" om wurkfoarbylden en koadefragmenten yn te lizzen yn API-dokumintaasje, wêr't jo falidaasje-ark, syntaksis-markearring en IDE-yntegraasje kinne brûke.
  • De ymplemintaasje fan 'e java.lang.reflect API (Core Reflection), ûntworpen om ynformaasje te krijen oer metoaden, fjilden en klassekonstruktors, lykas tagong ta de ynterne struktuer fan klassen, is opnij ûntwurpen. De java.lang.reflect API sels bliuwt ûnferoare, mar wurdt no ymplementearre mei help fan metoaden fan 'e java.lang.invoke-module, ynstee fan bytecode-generators te brûken. De feroaring liet ús de ymplemintaasjes fan java.lang.reflect en java.lang.invoke ferienigje, en har ûnderhâld ferienfâldigje.
  • In tredde foarbyld fan 'e Vector API is foarsteld, it leverjen fan funksjes foar fektorberekkeningen dy't wurde útfierd mei fektorynstruksjes op x86_64- en AArch64-processors en kinne operaasjes tagelyk tapast wurde op meardere wearden (SIMD). Oars as de mooglikheden oanbean yn 'e HotSpot JIT-kompiler foar auto-vektorisaasje fan skalêre operaasjes, makket de nije API it mooglik om eksplisyt fektorisaasje te kontrolearjen foar parallelle gegevensferwurking.
  • Added SPI ynterface (tsjinstprovider ynterface) foar in oplossing host nammen en IP adressen, sadat jo brûke alternative resolvers yn java.net.InetAddress dy't net bûn oan handlers oanbean troch it bestjoeringssysteem.
  • In twadde foarbyld fan 'e Foreign Function & Memory API wurdt levere, wêrtroch applikaasjes kinne ynteraksje mei koade en gegevens bûten de Java-runtime. De nije API lit jo net-JVM-funksjes effisjint neame en tagong krije ta net-JVM-beheard ûnthâld. Jo kinne bygelyks funksjes belje fan eksterne dielde bibleteken en tagong krije ta prosesgegevens sûnder JNI te brûken.
  • In twadde eksperimintele ymplemintaasje fan patroan oerienkomst yn "switch" útdrukkingen is tafoege, wêrtroch it gebrûk fan fleksibele patroanen yn "case" labels ynstee fan krekte wearden mooglik makket, dy't in searje wearden tagelyk beslacht, wêrfoar it earder nedich wie om te brûken omslachtige keatlingen fan "as ... oars" útdrukkingen. Objekt o = 123L; String formatted = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("dûbel %f", d); case String s -> String.format("String %s", s); default -> o.toString(); };
  • De finalization meganisme en syn assosjearre metoaden lykas Object.finalize (), Enum.finalize (), Runtime.runFinalization () en System.runFinalization () binne ôfret en sil wurde útskeakele yn in takomstige release.
  • De ZGC (Z Garbage Collector), SerialGC, en ParallelGC garbage collectors stypje rige deduplikaasje.

Boarne: opennet.ru

Add a comment