Java SE 27 ja OpenJDK 27 julkaistiin

Kuuden kuukauden kehitystyön jälkeen Oracle on julkaissut Java SE 27:n (Java Platform, Standard Edition 27), joka käyttää avoimen lähdekoodin OpenJDK-projektia referenssitoteutuksenaan. Joidenkin vanhentuneiden ominaisuuksien poistamista lukuun ottamatta Java SE 27 säilyttää taaksepäin yhteensopivuuden Java-alustan aiempien versioiden kanssa – useimmat aiemmin kirjoitetut Java-projektit toimivat muuttumattomina uudessa versiossa. Java SE 27:n (JDK, JRE ja Server JRE) asennusvalmiit koontiversiot on valmisteltu seuraaviin tarkoituksiin: Linux (x86_64, AArch64), Windows (x86_64) ja macOS (x86_64, AArch64). OpenJDK-projektin kehittämä Java SE 27 -referenssitoteutus on täysin avoimen lähdekoodin GPLv2-lisenssillä ja sisältää GNU ClassPath -poikkeuksen, joka sallii dynaamisen linkityksen kaupallisiin tuotteisiin.

Java SE 27 luokitellaan normaalin tuen julkaisuksi, jonka päivityksiä julkaistaan ​​seuraavaan julkaisuun asti. Pitkäaikaisen tuen (LTS) haaran tulisi olla Java SE 25, Java SE 21 tai Java SE 17, joiden päivityksiä julkaistaan ​​vastaavasti vuosiin 2033, 2031 ja 2029 asti (yleisesti saatavilla syyskuuhun 2030, 2028 ja 2026 asti). Java SE 8 LTS -haaran laajennettu tuki jatkuu vuoteen 2030 asti ja Java SE 11:n vuoteen 2032 asti.

Java SE 27:n (1, 2, 3, 4) muutokset:

  • Oletusarvoisesti kaikki ympäristöt käyttävät G1 (Garbage-First) -roskienkerääjää, jota aiemmin käytettiin palvelinjärjestelmissä. G1 on optimoitu käytettäväksi moniprosessorijärjestelmissä, joissa on suuri muistikapasiteetti, ja tasapainottamaan ennustettavaa latenssia suuren läpimenon kanssa. Käytön aikana G1 jakaa muistin useisiin pieniin alueisiin ja priorisoi ne alueet, joissa on enemmän käyttämättömiä objekteja ja vähemmän aktiivisesti käytettyä dataa.
  • HotSpot JVM käyttää oletusarvoisesti kompakteja objektiotsikoita. 64-bittisissä järjestelmissä otsikon kokoa on pienennetty 96 bittiin 64 bittiin, mikä vähentää muistin kulutusta ja lisää todennäköisyyttä, että tiedot osuvat suorittimen välimuistiin. SPECjbb2015-vertailuarvoissa muistin kulutus laski 22 %, suorittimen kuormitus laski 8 % ja roskienkeruutoimintojen määrä laski 15 %. JSON-jäsentimen testiajoajat lyhenivät 10 %.
  • TLS 1.3 -toteutus lisää tuen hybridi-avainsopimusmenetelmille, jotka yhdistävät kvanttiresistentin ML-KEM (CRYSTALS-Kyber) -algoritmin klassisiin ECDHE-elliptisten käyrien algoritmeihin: X25519MLKEM768 (ECDHE ja X25519-käyrä + ML-KEM-768), SecP256r1MLKEM76 (ECDHE ja secp256r1-käyrä + ML-KEM-768) ja SecP384r1MLKEM1024 (ECDHE ja secp384r1-käyrä + ML-KEM-1024). javax.net-sovellusliittymässä.ssl Nämä järjestelmät ovat oletusarvoisesti käytössä, eivätkä ne vaadi sovellusmuutoksia niiden käyttämiseksi.
  • JDK Flight Recorder (JFR), suorituskyvyn seurantaan, profilointiin ja diagnostiikkaan käytetty työkalu, tukee nyt komentoriviargumenttien, ympäristömuuttujien alkuarvojen ja järjestelmäominaisuuksien puhdistamista tallennetuissa diagnostiikkatiedoissa. Tämä muutos estää profiloidun prosessin käsittelemien arkaluonteisten tietojen, kuten ympäristömuuttujien kautta välitettyjen valtuutustunnusten ja API-käyttöavainten, vuotamisen.
  • Lazy Constants -rajapinnan kolmas esikatselu on toteutettu muuttumatonta dataa sisältävien ja JVM:ssä vakioina käsiteltyjen objektien käsittelyyn. Tällaisiin objekteihin sovelletaan samanlaisia ​​suorituskyvyn optimointeja kuin "final"-avainsanalla varustettuihin kenttiin. Toisin kuin "final", uusi API erottaa vakioarvojen luomisen niiden alustuksesta, takaa, että arvo voidaan alustaa vain kerran, lyhentää ohjelman käynnistysaikaa ja mahdollistaa aiemmin vain JDK:n sisäisessä koodissa käytettyjen vakioiden taitto-optimointien käytön käyttäjäkoodissa. class Application { // Aiemmin: // static final UserService USERS = new UserService(); // Nyt: static final StableValue KÄYTTÄJÄT = StableValue.of(); public static Käyttäjäpalvelu käyttäjät() { return KÄYTTÄJÄT.orElseSet(Käyttäjäpalvelu::new); } }
  • Hahmontunnistusmoottori esittelee viidennen version kyvystä käyttää primitiivisiä tyyppejä (int, byte, char ja muita ei-objektiperustyyppejä) kaikenlaisissa kuvioissa, instanceof-operaattorissa ja switch-lohkoissa. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b … }
  • Structured Concurrency API:n seitsemäs versio on julkaistu testattavaksi. Se yksinkertaistaa monisäikeisten sovellusten kehitystä käsittelemällä useita eri säikeissä suoritettavia tehtäviä yhtenä yksikkönä.
  • Vector API:n kahdestoista testitoteutus on toteutettu. Tämä API tarjoaa funktioita vektorilaskennoille, jotka suoritetaan x86_64- ja AArch64-prosessorin vektorikäskyjen avulla, ja mahdollistaa samanaikaiset operaatiot useilla arvoilla (SIMD). Toisin kuin HotSpot JIT -kääntäjän skalaarioperaatioiden automaattinen vektorisointi, uusi API mahdollistaa vektorisoinnin eksplisiittisen hallinnan rinnakkaisessa tiedonkäsittelyssä.
  • API:n kolmas versio on nyt saatavilla kryptografisia avaimia, varmenteita ja varmenteiden sulkuluetteloita sisältävien objektien koodaamiseen ja dekoodaamiseen PEM (Privacy-Enhanced Mail) -muotoa käyttäen.

Lisäksi meillä on ilo ilmoittaa päivityksen julkaisemisesta JavaFX 27 -alustalle graafisten käyttöliittymäsovellusten luomiseksi. Myös GraalVM 27 -universaalivirtuaalikoneen julkaisua odotetaan lähiaikoina. Se tukee sovellusten suorittamista JavaScriptillä (Node.js), Pythonilla, Rubylla, R:llä, millä tahansa JVM-kielellä (Java, Scala, Clojure, Kotlin) ja kielillä, joille voidaan luoda LLVM-bittikoodia (C, C++, Rust).

Lähde: opennet.ru

Osta luotettava isännöinti sivustoille, joissa on DDoS-suojaus, VPS VDS -palvelimet 🔥 Osta luotettavaa verkkosivustojen hostingia DDoS-suojauksella, VPS VDS -palvelimilla | ProHoster