Java SE 18 vÀljalase

PĂ€rast kuue kuu arendust on Oracle vĂ€lja andnud Java SE 18 (Java Platform, Standard Edition 18), mille etalonrakendus on avatud projekt OpenJDK. VĂ€lja arvatud mĂ”ned vananenud funktsioonid, sĂ€ilitab Java SE 18 tagurpidi ĂŒhilduvuse varasemate Java vĂ€ljalastega – enamik varem kirjutatud Java-projekte töötab uue versiooniga muutusteta. Java SE 18 (JDK, JRE ja Server JRE) installimiseks valmistatud paketid on saadaval Linuxile (x86_64, AArch64), Windowsile (x86_64) ja macOSile (x86_64, AArch64). OpenJDK projekti raames arendatud Java 18 etalonrakendus on tĂ€ielikult avatud GPLv2 litsentsi ja GNU ClassPathi erandite alusel, mis lubavad dĂŒnaamilist sidumist kommertstoodetega.

Java SE 18 kuulub tavalise toe poolse vĂ€ljalaske kategooriasse, mille vĂ€rskendused vĂ€lja antakse jĂ€rgmise versioonini. Pikaajalise toe (LTS) jaoks tuleks kasutada Java SE 17, mille vĂ€rskendusi antakse vĂ€lja kuni 2029. aastani. Meeldetuletuseks, Java 10 vĂ€ljalaskest alates on projekt lĂ€inud uuele arendusprotsessile, mis hĂ”lmab lĂŒhemaid uute vĂ€ljalaskede tsĂŒkleid. Uus funktsionaalsus areneb nĂŒĂŒd pidevalt uuendatavates master-haru, kuhu lisatakse juba valmis muudatused ja millelt eraldatakse iga kuue kuu jĂ€rel stabiliseerimise harud uute vĂ€ljalaste jaoks.

Java 18 uuendustest vÔib mÀrkida:

  • VaikesĂ€tetena on kasutusel UTF-8 kodeering. Java API-d, mis töötlevad tekstilisi andmeid arvestades sĂŒmbolite kodeeringut, kasutavad nĂŒĂŒd kĂ”ikidel platvormidel vaikimisi UTF-8, sĂ”ltumata sĂŒsteemi seadistustest ja keelevalikutest. Vanade kĂ€itumiste taastamiseks, kus kodeering valitakse sĂŒsteemi lokaadi pĂ”hjal, saab kasutada parameetrit „-Dfile.encoding=COMPAT“.
  • Paketti com.sun.net.httpserver sisaldab tööriista jwebserver ja API-d, mille kaudu on vĂ”imalik implementeerida lihtsat HTTP-serverit staatilise sisu edastamiseks (CGI ja servlet-sarnaseid kĂ€sitlejaid ei toetata). Sisseehitatud HTTP-server ei ole optimeeritud tööhĂ”ive jaoks ja ei toeta juurdepÀÀsu juhtimist ega autentimist, kuna on peamiselt mĂ”eldud arendamise protsessis prototĂŒĂŒpide loomiseks, tĂ”rkeotsinguks ja projektide testimiseks.
  • JavaDoc-s on realiseeritud toe tag kasutamiseks, et sisestada töökohti ja koodilĂ”ike API dokumentatsiooni, mida saab kasutada, et kontrollida Ă”igustatust, sĂŒntaksivĂ€rvimist ja integreerimist IDE-dega.
  • Muudetud on API-d java.lang.reflect (Core Reflection), mis on mĂ”eldud klasside meetodite, vĂ€ljade ja konstruktorite kohta teabe saamiseks ning sisemise struktuuri juurde pÀÀsemiseks. Endine API java.lang.reflect on jÀÀnud samaks, kuid nĂŒĂŒd on see rakendatud meetodite deskriptorite (method handles) abil, mida pakub moodul java.lang.invoke, selle asemel, et kasutada bahkoodigeneraatorite. See muudatus vĂ”imaldas ĂŒhtlustada java.lang.reflect ja java.lang.invoke rakendusi ning lihtsustada nende hooldust.
  • Pakutud on kolmas eelversioon API Vector, mis pakub funktsioone vektorkalkulatsioonide jaoks, mida teostatakse x86_64 ja AArch64 protsessorite vektori juhiste abil ja mis vĂ”imaldavad operatsioone korraga mitme vÀÀrtusega rakendada (SIMD). Erinevalt JIT-kompilaatori HotSpot pakutavatest skalaari operatsioonide automaatvektoriseerimise vĂ”imalustest, annab uus API vĂ”imaluse selgelt hallata vektoreid paralleelse andmete töötlemise jaoks.
  • Lisatud on SPI liides (service-provider interface) hostinimede lahendamiseks ja IP-aadresse, mis vĂ”imaldab kasutada java.net.InetAddress alternatiivseid resolver'eid, mis ei ole seotud operatsioonisĂŒsteemi pakutud töötlejate kasutamisega.
  • Pakutud on teise eelnĂ”u rakenduste liidese Foreign Function & Memory, mille abil saavad rakendused suhelda koodiga ja andmetega, mis asuvad Java runtime'ist vĂ€ljaspool. Uus liides vĂ”imaldab tĂ”husalt kutsuda ĂŒles funktsioone, mis ei tööta JVM-is, ja pÀÀseda ligi JVM-ist mittehaldatud mĂ€lule. NĂ€iteks on vĂ”imalik kutsuda vĂ€liseid jagatud teeke ja pÀÀseda ligi protsessi andmetele ilma JNI kasutamata.
  • Lisatud on teine katseversioon mustrimugavustuste rakendamiseks "switch" vĂ€ljendites, mis vĂ”imaldab "case" silmustes kasutada mitte tĂ€pseid vÀÀrtusi, vaid paindlikke mustreid, mis hĂ”lmavad kohe mitmeid vÀÀrtusi, mille jaoks varem tuli kasutada mahukaid "if...else" lauseid. Object 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("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); };
  • On kuulutatud aegunuks ja see eemaldatakse ĂŒhes jĂ€rgmistest vĂ€ljaannetest, mis kĂ€sitlevad mehhanismi finaliseerimise, samuti sellega seotud meetodeid, nagu Object.finalize(), Enum.finalize(), Runtime.runFinalization() ja System.runFinalization().
  • PrĂŒgi kogumise ZGC (Z Garbage Collector), SerialGC ja ParallelGC teostuses on rakendatud stringide deduplikatsiooni tugi.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster