Java SE 18 vrystelling

Na ses maande se ontwikkeling het Oracle die Java SE 18 (Java Platform, Standard Edition 18) platform vrygestel, wat die OpenJDK oopbronprojek as 'n verwysingsimplementering gebruik. Met die uitsondering van die verwydering van sommige verouderde kenmerke, handhaaf Java SE 18 terugwaartse versoenbaarheid met vorige vrystellings van die Java-platform - die meeste voorheen geskrewe Java-projekte sal steeds sonder verandering werk wanneer dit onder die nuwe weergawe uitgevoer word. Gereed-vir-installeer-geboue van Java SE 18 (JDK, JRE en Server JRE) word voorberei vir Linux (x86_64, AArch64), Windows (x86_64) en macOS (x86_64, AArch64). Ontwikkel deur die OpenJDK-projek, is die Java 18-verwysingsimplementering volledig oopbron onder die GPLv2-lisensie met GNU ClassPath-uitsonderings om dinamiese koppeling met kommersiële produkte toe te laat.

Java SE 18 word gekategoriseer as 'n gereelde ondersteuningsvrystelling, met opdaterings wat voor die volgende vrystelling vrygestel moet word. Die langtermynondersteuningstak (LTS) behoort Java SE 17 te wees, wat opdaterings tot 2029 sal ontvang. Onthou dat die projek begin met die vrystelling van Java 10 oorgeskakel het na 'n nuwe ontwikkelingsproses, wat 'n korter siklus vir die vorming van nuwe vrystellings impliseer. Nuwe funksionaliteit word nou ontwikkel in een voortdurend bygewerkte meestertak, wat reeds voltooide veranderinge insluit en waaruit takke elke ses maande vertak word om nuwe vrystellings te stabiliseer.

Nuwe kenmerke in Java 18 sluit in:

  • Die verstekkodering is UTF-8. Java API's wat teksdata verwerk op grond van karakterkodering, sal nou by verstek UTF-8 op alle platforms gebruik, ongeag stelselinstellings en lokaalinstellings. Om terug te keer na die ou gedrag, waar die enkodering gekies word op grond van die stelsel locale, kan jy die "-Dfile.encoding=COMPAT" opsie gebruik.
  • Die pakket sluit die com.sun.net.httpserver-pakket in, wat die jwebserver-nutsmiddel en biblioteek-API insluit met die implementering van 'n eenvoudige http-bediener om statiese inhoud te bedien (CGI en servlet-agtige hanteerders word nie ondersteun nie). Die ingeboude HTTP-bediener is nie geoptimaliseer vir werkladings nie en ondersteun nie toegangsbeheer en verifikasie nie, aangesien dit hoofsaaklik gemik is op gebruik in die ontwikkelingsproses vir prototipering, ontfouting en toetsprojekte.
  • JavaDoc bied ondersteuning vir die "@snippet"-merker om werkvoorbeelde en kodebrokkies in API-dokumentasie in te sluit, waar jy valideringsnutsmiddels, sintaks-uitlig en IDE-integrasie kan gebruik.
  • Die implementering van die java.lang.reflect API (Core Reflection), wat ontwerp is om inligting oor metodes, velde en klaskonstruktors te bekom, asook toegang tot die interne struktuur van klasse, is herontwerp. Die java.lang.reflect API self bly onveranderd, maar word nou geïmplementeer met behulp van metodehandvatsels wat deur die java.lang.invoke-module verskaf word, in plaas daarvan om greepkode-opwekkers te gebruik. Die verandering het ons in staat gestel om die implementerings van java.lang.reflect en java.lang.invoke te verenig en die instandhouding daarvan te vereenvoudig.
  • 'n Derde voorskou van die Vector API is voorgestel, wat funksies verskaf vir vektorberekeninge wat uitgevoer word met behulp van vektorinstruksies op x86_64- en AArch64-verwerkers en toelaat dat bewerkings gelyktydig op veelvuldige waardes (SIMD) toegepas word. Anders as die vermoëns wat in die HotSpot JIT-samesteller voorsien word vir outo-vektorisering van skalêre bewerkings, maak die nuwe API dit moontlik om vektorisering vir parallelle dataverwerking eksplisiet te beheer.
  • Bygevoeg SPI-koppelvlak (diensverskaffer-koppelvlak) vir die oplos van gasheername en IP-adresse, sodat jy alternatiewe oplossers in java.net.InetAddress kan gebruik wat nie gekoppel is aan hanteerders wat deur die bedryfstelsel aangebied word nie.
  • 'n Tweede voorskou van die Foreign Function & Memory API word verskaf, wat toepassings toelaat om met kode en data buite die Java-looptyd te kommunikeer. Die nuwe API laat jou toe om nie-JVM-funksies doeltreffend op te roep en toegang tot nie-JVM-bestuurde geheue te verkry. Byvoorbeeld, jy kan funksies van eksterne gedeelde biblioteke oproep en toegang tot prosesdata kry sonder om JNI te gebruik.
  • 'n Tweede eksperimentele implementering van patroonpassing in "skakelaar"-uitdrukkings is bygevoeg, wat die gebruik van buigsame patrone in "geval"-etikette moontlik maak eerder as presiese waardes, wat 'n reeks waardes gelyktydig dek, waarvoor dit voorheen nodig was om te gebruik omslagtige kettings van "as ... anders" uitdrukkings. Voorwerp o = 123L; String formatted = switch (o) { case Heelgetal i -> String.format("int %d", i); kas Lang l -> String.format("lang %d", l); geval Dubbel d -> String.format("dubbel %f", d); case String s -> String.format("String %s", s); verstek -> o.toString(); };
  • Die finaliseringsmeganisme en sy geassosieerde metodes soos Object.finalize(), Enum.finalize(), Runtime.runFinalization() en System.runFinalization() is opgeskort en sal in 'n toekomstige vrystelling gedeaktiveer word.
  • Die ZGC (Z Garbage Collector), SerialGC en ParallelGC vullisverwyderaars ondersteun ry-deduplisering.

Bron: opennet.ru

Voeg 'n opmerking