Java SE 27 og OpenJDK 27 utgitt

Etter seks måneder med utvikling har Oracle gitt ut Java SE 27 (Java Platform, Standard Edition 27), som bruker OpenJDK-prosjektet med åpen kildekode som referanseimplementering. Med unntak av fjerning av noen utdaterte funksjoner, opprettholder Java SE 27 bakoverkompatibilitet med tidligere utgivelser av Java-plattformen – de fleste tidligere skrevne Java-prosjekter vil kjøre uendret når de kjører under den nye versjonen. Installeringsklare versjoner av Java SE 27 (JDK, JRE og Server JRE) er forberedt for Linux (x86_64, AArch64), Windows (x86_64) og macOS (x86_64, AArch64). Java SE 27-referanseimplementeringen, som er utviklet av OpenJDK-prosjektet, er fullstendig åpen kildekode under GPLv2-lisensen med GNU ClassPath Exception, som tillater dynamisk kobling med kommersielle produkter.

Java SE 27 er kategorisert som en vanlig støtteutgivelse, med oppdateringer som utgis frem til neste utgivelse. Langtidsstøttegrenen (LTS) bør være Java SE 25, Java SE 21 eller Java SE 17, med oppdateringer som utgis frem til henholdsvis 2033, 2031 og 2029 (generelt tilgjengelig frem til september 2030, 2028 og 2026). Utvidet støtte for Java SE 8 LTS-grenen vil fortsette frem til 2030, og for Java SE 11 frem til 2032.

Endringer i Java SE 27 (1, 2, 3, 4) inkluderer:

  • Som standard bruker alle miljøer søppelinnsamleren G1 (Garbage-First), som tidligere ble brukt for serversystemer. G1 er optimalisert for bruk på flerprosessorsystemer med stor minnekapasitet og for å balansere forutsigbar ventetid med høy gjennomstrømning. Under drift deler G1 minnet inn i mange små områder og prioriterer de områdene med flere ubrukte objekter og mindre aktivt tilgjengelige data.
  • HotSpot JVM bruker kompakte objektoverskrifter som standard. På 64-bits systemer er overskriftsstørrelsen redusert fra 96 ​​til 64 bits, noe som reduserer minneforbruket og øker sannsynligheten for at data treffer prosessorbufferen. I SPECjbb2015-benchmarktester ble minneforbruket redusert med 22 %, CPU-belastningen redusert med 8 %, og antallet søppelinnsamlingsoperasjoner redusert med 15 %. Testkjøringstidene for JSON-parseren ble redusert med 10 %.
  • TLS 1.3-implementeringen legger til støtte for hybride nøkkelavtaleordninger som kombinerer den kvanteresistente ML-KEM (CRYSTALS-Kyber)-algoritmen med klassiske ECDHE elliptiske kurvealgoritmer: X25519MLKEM768 (ECDHE med X25519-kurven + ML-KEM-768), SecP256r1MLKEM76 (ECDHE med secp256r1-kurven + ML-KEM-768) og SecP384r1MLKEM1024 (ECDHE med secp384r1-kurven + ML-KEM-1024). I javax.net API.ssl Disse ordningene er aktivert som standard og krever ingen endringer i programmet for å brukes.
  • JDK Flight Recorder (JFR), et verktøy som brukes til ytelsesovervåking, profilering og diagnostikk, støtter nå rensing av kommandolinjeargumenter, startverdier for miljøvariabler og systemegenskaper i lagret diagnostisk informasjon. Denne endringen forhindrer lekkasje av sensitive data behandlet av den profilerte prosessen, for eksempel autorisasjonstokener og API-tilgangsnøkler som sendes via miljøvariabler.
  • Den tredje forhåndsvisningen av Lazy Constants API er implementert for arbeid med objekter som inneholder uforanderlige data og behandles som konstanter i JVM. Ytelsesoptimaliseringer som ligner på de for felt med nøkkelordet "final" brukes på slike objekter. I motsetning til "final" skiller det nye API-et opprettelsen av konstante verdier fra initialiseringen av dem, garanterer at en verdi bare kan initialiseres én gang, reduserer programoppstartstiden og muliggjør bruk av konstantfoldingsoptimaliseringer, som tidligere bare ble brukt i JDK-intern kode, i brukerkode. class Application { // Tidligere: // static final UserService USERS = new UserService(); // Nå: static final StableValue BRUKERE = StabilVerdi.av(); public static BrukerTjeneste brukere() { return BRUKERE.ellerElleSett(BrukerTjeneste::ny); } }
  • Mønstermatchingsmotoren introduserer et femte utkast av muligheten til å bruke primitive typer (int, byte, char og andre ikke-objektbaserte basetyper) i alle slags mønstre, i instanceof-operatoren og i switch-blokker. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b … }
  • Det syvende utkastet av Structured Concurrency API, som forenkler utviklingen av flertrådete applikasjoner ved å behandle flere oppgaver som kjører på forskjellige tråder som én enhet, har blitt utgitt for testing.
  • Den tolvte testimplementeringen av Vector API-et er implementert. Dette API-et tilbyr funksjoner for vektorberegninger utført ved hjelp av x86_64- og AArch64-prosessorvektorinstruksjoner og tillater samtidige operasjoner på flere verdier (SIMD). I motsetning til HotSpot JIT-kompilatorens automatiske vektorisering av skalare operasjoner, tillater det nye API-et eksplisitt kontroll over vektorisering for parallell databehandling.
  • Et tredje utkast av API-et er nå tilgjengelig for koding og dekoding av objekter som inneholder kryptografiske nøkler, sertifikater og sertifikattilbakekallingslister ved hjelp av PEM-formatet (Pivacy-Enhanced Mail).

I tillegg er vi glade for å kunne kunngjøre lanseringen av en oppdatering til JavaFX 27-plattformen for å lage grafiske brukergrensesnittapplikasjoner. Lanseringen av den universelle virtuelle maskinen GraalVM 27, som støtter kjøring av applikasjoner i JavaScript (Node.js), Python, Ruby, R, alle JVM-språk (Java, Scala, Clojure, Kotlin) og språk som LLVM-bitkode kan genereres for (C, C++, Rust), forventes også i løpet av de kommende timene.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster