Java SE 18 väljalase

Pärast kuuekuulist arendustööd on Oracle välja andnud Java SE 18 (Java Platform, Standard Edition 18) platvormi, mis kasutab OpenJDK avatud lähtekoodiga projekti referentsrakendusena. Välja arvatud mõnede aegunud funktsioonide eemaldamine, säilitab Java SE 18 tagasiühilduvuse Java platvormi eelmiste väljalasetega – enamik varem kirjutatud Java-projekte töötab uue versiooniga käivitamisel endiselt ilma muudatusteta. Java SE 18 (JDK, JRE ja Server JRE) installitavad järgud on ette valmistatud Linuxi (x86_64, AArch64), Windowsi (x86_64) ja macOS-i (x86_64, AArch64) jaoks. OpenJDK projekti poolt välja töötatud Java 18 viiterakendus on täielikult avatud lähtekoodiga GPLv2 litsentsi alusel koos GNU ClassPathi eranditega, et võimaldada dünaamilist linkimist kommertstoodetega.

Java SE 18 liigitatakse tavapäraseks tugiväljalaseks, mille värskendused avaldatakse enne järgmist väljalaset. Pikaajalise toe (LTS) haru peaks olema Java SE 17, mis saab värskendusi kuni 2029. aastani. Tuletame meelde, et alates Java 10 väljalaskmisest lülitus projekt üle uuele arendusprotsessile, mis tähendab lühemat tsüklit uute väljaannete moodustamiseks. Uut funktsionaalsust arendatakse nüüd ühes pidevalt uuendatavas põhiharus, mis sisaldab juba tehtud muudatusi ja millest hargnevad harud iga kuue kuu tagant uute väljaannete stabiliseerimiseks.

Java 18 uute funktsioonide hulka kuuluvad:

  • Vaikekodeering on UTF-8. Java API-d, mis töötlevad tekstiandmeid märgikodeeringu alusel, kasutavad nüüd kõigil platvormidel vaikimisi UTF-8, olenemata süsteemi- ja lokaadiseadetest. Vana käitumise juurde naasmiseks, kus kodeering valitakse süsteemi lokaadi alusel, saate kasutada suvandit "-Dfile.encoding=COMPAT".
  • Pakett sisaldab paketti com.sun.net.httpserver, mis sisaldab utiliiti jwebserver ja teegi API-t koos lihtsa http-serveri juurutamisega staatilise sisu teenindamiseks (CGI-d ja servletilaadseid töötlejaid ei toetata). Sisseehitatud HTTP-server ei ole töökoormuste jaoks optimeeritud ega toeta juurdepääsu kontrolli ja autentimist, kuna see on mõeldud eelkõige kasutamiseks prototüüpimise, silumise ja testimisprojektide arendusprotsessis.
  • JavaDoc toetab märgendit "@snippet", et manustada töönäiteid ja koodilõike API dokumentatsiooni, kus saate kasutada valideerimistööriistu, süntaksi esiletõstmist ja IDE integreerimist.
  • Uuendatud on java.lang.reflect API (Core Reflection) juurutamine, mis on mõeldud teabe hankimiseks meetodite, väljade ja klassikonstruktorite kohta ning juurdepääsuks klasside sisemisele struktuurile. API java.lang.reflect ise jääb muutumatuks, kuid seda rakendatakse nüüd baitkoodigeneraatorite asemel mooduli java.lang.invoke pakutavate meetodikäepidemetega. Muudatus võimaldas meil ühendada java.lang.reflecti ja java.lang.invoke'i juurutused ning lihtsustada nende hooldust.
  • Välja on pakutud Vector API kolmas eelvaade, mis pakub funktsioone vektoriarvutuste jaoks, mida täidetakse vektorkäskude abil x86_64 ja AArch64 protsessoritel ning mis võimaldab toiminguid üheaegselt rakendada mitmele väärtusele (SIMD). Erinevalt HotSpot JIT kompilaatoris pakutavatest võimalustest skalaaroperatsioonide automaatseks vektoriseerimiseks võimaldab uus API paralleelse andmetöötluse vektoriseerimist selgesõnaliselt juhtida.
  • Lisatud SPI-liides (teenusepakkuja liides) hostinimede ja IP-aadresside lahendamiseks, mis võimaldab teil saidis java.net.InetAddress kasutada alternatiivseid lahendajaid, mis ei ole seotud operatsioonisüsteemi pakutavate töötlejatega.
  • Pakutakse välisfunktsiooni ja mälu API teist eelvaadet, mis võimaldab rakendustel koodi ja andmetega suhelda väljaspool Java käitusaega. Uus API võimaldab teil tõhusalt kutsuda mitte-JVM-i funktsioone ja pääseda juurde JVM-i mittehallatavale mälule. Näiteks saate kutsuda funktsioone välistest jagatud teegidest ja pääseda juurde protsessiandmetele ilma JNI-d kasutamata.
  • Lisatud on "lüliti" avaldistes mustrite sobitamise teine ​​eksperimentaalne teostus, mis võimaldab kasutada "case" siltides pigem paindlikke mustreid kui täpseid väärtusi, hõlmates korraga mitmeid väärtusi, mille jaoks varem oli vaja kasutada tülikad "kui...muidu" väljendite ahelad. Objekt o = 123L; String vormindatud = switch (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("pikk %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); vaikimisi -> o.toString(); };
  • Lõpetamismehhanism ja sellega seotud meetodid, nagu Object.finalize(), Enum.finalize(), Runtime.runFinalization() ja System.runFinalization() on aegunud ja keelatakse tulevases versioonis.
  • Prügikogujad ZGC (Z Garbage Collector), SerialGC ja ParallelGC toetavad ridade dubleerimist.

Allikas: opennet.ru

Lisa kommentaar