Java SE 18 -julkaisu

Kuuden kuukauden kehitystyön jälkeen Oracle julkaisi Java SE 18:n (Java Platform, Standard Edition 18), joka käyttää OpenJDK avoimen lähdekoodin projektia referenssitoteutuksena. Joidenkin vanhentuneiden ominaisuuksien poistamista lukuun ottamatta Java SE 18 säilyttää taaksepäin yhteensopivuuden Java-alustan aikaisempien julkaisujen kanssa - useimmat aiemmin kirjoitetut Java-projektit toimivat ilman muutoksia, kun ne suoritetaan uudessa versiossa. Java SE 18:n (JDK, JRE ja Server JRE) asennusvalmiit koontiversiot on valmistettu Linuxille (x86_64, AArch64), Windowsille (x86_64) ja macOS:lle (x86_64, AArch64). OpenJDK-projektin kehittämä Java 18 -viitetoteutus on täysin avoimen lähdekoodin GPLv2-lisenssin alainen GNU ClassPath -poikkeuksilla, jotka mahdollistavat dynaamisen linkityksen kaupallisiin tuotteisiin.

Java SE 18 on luokiteltu yleiseksi tukijulkaisuksi, ja se saa päivityksiä seuraavaan julkaisuun saakka. Long Term Support (LTS) -haara pitäisi olla Java SE 17, joka saa päivityksiä vuoteen 2029 asti. Muistutetaan, että Java 10:n julkaisusta lähtien projekti siirtyi uuteen kehitysprosessiin, mikä merkitsi lyhyempää sykliä uusien julkaisujen muodostukselle. Uusi toiminnallisuus on nyt kehitetty yhteen jatkuvasti päivitettävään päähaaraan, joka sisältää valmiita muutoksia ja josta haarat haarautuvat puolen vuoden välein uusien julkaisujen vakauttamiseksi.

Java 18:n uusia ominaisuuksia ovat:

  • Oletuskoodaus on UTF-8. Java-sovellusliittymät, jotka käsittelevät tekstidataa merkkikoodauksen perusteella, käyttävät nyt oletusarvoisesti UTF-8:aa kaikilla alustoilla järjestelmä- ja kieliasetuksista riippumatta. Voit palata vanhaan toimintaan, jossa koodaus valitaan järjestelmän kielen perusteella, käyttämällä vaihtoehtoa "-Dfile.encoding=COMPAT".
  • Paketti sisältää paketin com.sun.net.httpserver, joka sisältää jwebserver-apuohjelman ja kirjastorajapinnan sekä yksinkertaisen http-palvelimen toteutuksen staattisen sisällön palvelemiseen (CGI- ja servlet-käsittelijöitä ei tueta). Sisäänrakennettu HTTP-palvelin ei ole optimoitu työkuormille eikä tue kulunvalvontaa ja todennusta, koska se on tarkoitettu ensisijaisesti prototyyppien, virheenkorjauksen ja testausprojektien kehitysprosessiin.
  • JavaDoc tukee "@snippet"-tunnistetta toimivien esimerkkien ja koodinpätkien upottamiseksi API-dokumentaatioon, jossa voit käyttää vahvistustyökaluja, syntaksin korostusta ja IDE-integraatiota.
  • Java.lang.reflect API (Core Reflection) toteutus, joka on suunniteltu hankkimaan tietoa menetelmistä, kentistä ja luokkakonstruktoreista sekä pääsystä luokkien sisäiseen rakenteeseen, on suunniteltu uudelleen. Itse java.lang.reflect API pysyy muuttumattomana, mutta se on nyt toteutettu java.lang.invoke-moduulin tarjoamilla menetelmäkahvoilla tavukoodigeneraattoreiden sijaan. Muutoksen ansiosta pystyimme yhdistämään java.lang.reflectin ja java.lang.invoken toteutukset ja yksinkertaistamaan niiden ylläpitoa.
  • Vector API:lle on ehdotettu kolmatta esikatselua, joka tarjoaa toimintoja vektorilaskelmille, jotka suoritetaan käyttämällä vektorikäskyjä x86_64- ja AArch64-prosessoreissa ja mahdollistavat toimintojen soveltamisen samanaikaisesti useisiin arvoihin (SIMD). Toisin kuin HotSpot JIT -kääntäjän tarjoamat ominaisuudet skalaarioperaatioiden automaattiseen vektorointiin, uusi API mahdollistaa vektorisoinnin eksplisiittisen ohjauksen rinnakkaista tietojenkäsittelyä varten.
  • Lisätty SPI-liitäntä (palveluntarjoajan käyttöliittymä) isäntänimien ja IP-osoitteiden selvittämiseen, jolloin voit käyttää vaihtoehtoisia java.net.InetAddress-selvittäjiä, joita ei ole sidottu käyttöjärjestelmän tarjoamiin käsittelijöihin.
  • Toinen ulkoisen funktion ja muistin API:n esikatselu on saatavilla, jolloin sovellukset voivat olla vuorovaikutuksessa koodin ja tiedon kanssa Java-ajonaikaisen ulkopuolella. Uuden API:n avulla voit kutsua tehokkaasti muita kuin JVM-funktioita ja käyttää ei-JVM-hallittua muistia. Voit esimerkiksi kutsua toimintoja ulkoisista jaetuista kirjastoista ja käyttää prosessitietoja ilman JNI:tä.
  • Toinen kokeellinen mallisovituksen toteutus "kytkin"-lausekkeissa on lisätty, mikä mahdollistaa joustavien kuvioiden käytön "case"-tunnisteissa tarkkojen arvojen sijaan, kattaa useita arvoja kerralla, joita varten aiemmin oli tarpeen käyttää hankalia "jos...muuta"-ilmaisujen ketjuja. Kohde o = 123L; Merkkijono muotoiltu = kytkin (o) { case Integer i -> String.format("int %d", i); case Long l -> String.format("pitkä %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); oletus -> o.toString(); };
  • Viimeistelymekanismi ja siihen liittyvät menetelmät, kuten Object.finalize(), Enum.finalize(), Runtime.runFinalization() ja System.runFinalization() on vanhentunut ja ne poistetaan käytöstä tulevassa julkaisussa.
  • ZGC (Z Garbage Collector), SerialGC ja ParallelGC roskakeräimet tukevat rivien päällekkäisyyttä.

Lähde: opennet.ru

Lisää kommentti