Java SE 18 laidiens

Pēc sešu mēnešu izstrādes Oracle ir izlaidusi Java SE 18 (Java Platform, Standard Edition 18), kas izmanto OpenJDK atvērtā pirmkoda projektu kā atsauces ieviešanu. Izņemot dažu novecojušu funkciju noņemšanu, Java SE 18 saglabā atpakaļsaderību ar iepriekšējiem Java platformas laidieniem — lielākā daļa iepriekš rakstīto Java projektu joprojām darbosies bez izmaiņām, ja tie darbojas jaunajā versijā. Instalējamās Java SE 18 (JDK, JRE un Server JRE) versijas ir sagatavotas operētājsistēmai Linux (x86_64, AArch64), Windows (x86_64) un macOS (x86_64, AArch64). Izstrādāts OpenJDK projektā, Java 18 atsauces ieviešana ir pilnībā atvērta saskaņā ar GPLv2 licenci ar GNU ClassPath izņēmumiem, lai nodrošinātu dinamisku saiti ar komerciāliem produktiem.

Java SE 18 ir klasificēts kā regulārs atbalsta laidiens, un tas turpinās saņemt atjauninājumus līdz nākamajam laidienam. Ilgtermiņa atbalsta (LTS) filiālei vajadzētu būt Java SE 17, kas turpinās saņemt atjauninājumus līdz 2029. gadam. Atgādinām, ka, sākot ar Java 10 izlaišanu, projekts pārgāja uz jaunu izstrādes procesu, kas nozīmē īsāku ciklu jaunu laidienu veidošanai. Jauna funkcionalitāte tagad ir izstrādāta vienā pastāvīgi atjauninātajā galvenajā filiālē, kas ietver gatavas izmaiņas un no kuras filiāles tiek atzarotas ik pēc sešiem mēnešiem, lai stabilizētu jaunus izdevumus.

Jaunās Java 18 funkcijas ietver:

  • Noklusējuma kodējums ir UTF-8. Java API, kas apstrādā teksta datus, pamatojoties uz rakstzīmju kodējumu, tagad visās platformās pēc noklusējuma izmantos UTF-8 neatkarīgi no sistēmas iestatījumiem un lokalizācijas iestatījumiem. Lai atgrieztos pie vecās darbības, kur kodējums tiek izvēlēts, pamatojoties uz sistēmas lokalizāciju, varat izmantot opciju "-Dfile.encoding=COMPAT".
  • Pakotnē ir iekļauta pakotne com.sun.net.httpserver, kas ietver utilītu jwebserver un bibliotēkas API ar vienkārša http servera ieviešanu statiskā satura apkalpošanai (CGI un servletam līdzīgi apstrādātāji netiek atbalstīti). Iebūvētais HTTP serveris nav optimizēts darba slodzēm un neatbalsta piekļuves kontroli un autentifikāciju, jo tas galvenokārt ir paredzēts izmantošanai prototipēšanas, atkļūdošanas un testēšanas projektu izstrādes procesā.
  • JavaDoc nodrošina atbalstu tagam "@snippet", lai API dokumentācijā iegultu darba piemērus un koda fragmentus, kur varat izmantot validācijas rīkus, sintakses izcelšanu un IDE integrāciju.
  • Pārstrādāta java.lang.reflect API (Core Reflection) ieviešana, kas paredzēta informācijas iegūšanai par metodēm, laukiem un klašu konstruktoriem, kā arī piekļuvei klašu iekšējai struktūrai. Pati java.lang.reflect API paliek nemainīga, taču tagad tā tiek ieviesta, izmantojot moduļa java.lang.invoke nodrošinātos metožu rokturus, nevis baitkoda ģeneratorus. Izmaiņas ļāva mums apvienot java.lang.reflect un java.lang.invoke implementācijas un vienkāršot to apkopi.
  • Ir ierosināts trešais Vector API priekšskatījums, kas nodrošina vektoru aprēķinu funkcijas, kas tiek izpildītas, izmantojot vektoru instrukcijas x86_64 un AArch64 procesoros, un ļauj vienlaikus lietot darbības vairākām vērtībām (SIMD). Atšķirībā no HotSpot JIT kompilatora piedāvātajām iespējām skalāro operāciju automātiskai vektorizācijai, jaunais API ļauj skaidri kontrolēt vektorizāciju paralēlai datu apstrādei.
  • Pievienots SPI interfeiss (pakalpojumu sniedzēja interfeiss) resursdatora nosaukumu un IP adrešu atrisināšanai, ļaujot lietotnē java.net.InetAddress alternatīvus risinātājus, kas nav saistīti ar operētājsistēmas piedāvātajiem apdarinātājiem.
  • Tiek nodrošināts otrs svešfunkciju un atmiņas API priekšskatījums, kas ļauj lietojumprogrammām mijiedarboties ar kodu un datiem ārpus Java izpildlaika. Jaunā API ļauj efektīvi izsaukt funkcijas, kas nav JVM, un piekļūt atmiņai, ko nepārvalda JVM. Piemēram, varat izsaukt funkcijas no ārējām koplietotajām bibliotēkām un piekļūt procesa datiem, neizmantojot JNI.
  • Ir pievienota otrā eksperimentālā modeļu saskaņošanas ieviešana “slēdža” izteiksmēs, kas ļauj izmantot elastīgus modeļus “case” etiķetēs, nevis precīzas vērtības, vienlaikus aptverot virkni vērtību, kurām iepriekš bija jāizmanto apgrūtinošas izteicienu “ja...citādi” ķēdes. Objekts o = 123L; Virkne formatēta = slēdzis (o) { 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); noklusējuma -> o.toString(); };
  • Pabeigšanas mehānisms un ar to saistītās metodes, piemēram, Object.finalize(), Enum.finalize(), Runtime.runFinalization() un System.runFinalization() ir novecojušas un tiks atspējotas nākamajā laidienā.
  • ZGC (Z atkritumu savācējs), SerialGC un ParallelGC atkritumu savācēji atbalsta rindu dublēšanu.

Avots: opennet.ru

Pievieno komentāru