Java SE 25 LTS en OpenJDK 25 Release

Nei seis moannen ûntwikkeling hat Oracle Java SE 25 (Java Platform, Standard Edition 24) útbrocht, dy't it iepen boarne OpenJDK-projekt brûkt as referinsje-ymplemintaasje. Mei útsûndering fan it fuortheljen fan guon ferâldere funksjes, behâldt Java SE 25 efterútkompatibiliteit mei eardere releases fan it Java-platfoarm - de measte earder skreaune Java-projekten sille net feroare wurde as se ûnder de nije ferzje rinne. Klear-om-te-ynstallearjen builds fan Java SE 25 (JDK, JRE, en Server JRE) binne taret op Linux (x86_64, AArch64), Windows (x86_64) en macOS (x86_64, AArch64). Untwikkele troch it OpenJDK-projekt, is de referinsje-ymplemintaasje fan Java SE 25 folslein iepen boarne ûnder de GPLv2-lisinsje mei de GNU ClassPath Exception, dy't dynamyske keppeling mei kommersjele produkten mooglik makket.

Java SE 25 is in útwreide stipeferzje, mei updates dy't trochgean oant 2033 (algemien beskikber oant septimber 2030). Java SE 17 en 21 sille ek trochgean wurde stipe as lange-termyn stipe (LTS) tûken, mei updates dy't trochgean oant respektivelik 2029 en 2031 (algemien beskikber oant 2026 en 2028). Útwreide stipe foar Java SE 8 en 11 LTS tûken sil trochgean oant 2030 en 2032.

Under de 25 nije funksjes dy't foarsteld binne yn Java SE (1, 2, 3, 4):

  • In eksperimintele StableValue API is tafoege foar it wurkjen mei objekten dy't ûnferoarlike gegevens befetsje en as konstanten behannele wurde yn 'e JVM. Prestaasjeoptimalisaasjes fergelykber mei dy foar fjilden mei it kaaiwurd "final" wurde tapast op sokke objekten. De StableValue API skiedt it meitsjen fan konstante wearden fan har inisjalisaasje, soarget derfoar dat in wearde mar ien kear ynisjalisearre wurde kin, ferminderet de opstarttiid fan it programma, en makket it mooglik om konstante-folding-optimalisaasjes dy't earder allinich brûkt waarden yn JDK-ynterne koade, ta te passen op brûkerskoade. class Application { // Foar: // static final UserService USERS = new UserService(); // No: static final StableValue BRÛKERS = StableValue.of(); public static Brûkerstsjinst brûkers() { return BRÛKERS.orElseSet(Brûkerstsjinst::nij); } }
  • In eksperimintele API tafoege foar it kodearjen en dekodearjen fan objekten mei kryptografyske kaaien, sertifikaten en sertifikaatynlûkingslisten mei it PEM (Pivacy-Enhanced Mail) formaat.
  • Stipe foar scoped-wearden is tafoege, wêrtroch't ûnferoarlike gegevens oer threads dield wurde kinne en gegevens effisjint útwiksele wurde kinne tusken bernthreads (wearden wurde erfd). Scoped-wearden binne ûntworpen om thread-lokale fariabelen te ferfangen en binne effisjinter by it brûken fan heul grutte oantallen firtuele threads (tûzenen of miljoenen threads). It wichtichste ferskil tusken scoped-wearden en thread-lokale fariabelen is dat se ien kear skreaun wurde, net oanpast wurde kinne en allinich beskikber bliuwe foar de doer fan 'e útfiering fan' e thread.
  • In API is tafoege foar it brûken fan kryptografyske kaai-ôfliedingsfunksjes (KDF's), dy't it mooglik meitsje om ekstra kaaien fan 'e fereaske lingte te generearjen op basis fan in geheime kaai (bygelyks in wachtwurd) en in willekeurige set gegevens.
  • Koade en buildskripts foar it stypjen fan 32-bit x86-systemen binne fuorthelle. It fuortheljen fan stipe foar 32-bit x86-systemen hat de JDK-bou- en testynfrastruktuer ferienfâldige en it mooglik makke om platfoarmspesifike funksjes te ymplementearjen sûnder fallback-handlers te meitsjen foar 32-bit x86-systemen.
  • De mooglikheid om ien "import module M"-opdracht te brûken om alle pakketten te ymportearjen dy't troch in bepaalde module eksportearre binne, is tafoege. Dizze feroaring ferienfâldiget it werbrûk fan modulêre bibleteken signifikant, wêrtroch bibleteken en klassen opnommen wurde kinne sûnder har posysje yn 'e pakkethiërargy te spesifisearjen. Bygelyks, it spesifisearjen fan "import module java.base" sil alle 54 pakketten ymportearje dy't befette binne yn 'e java.base-module, dy't earder yndividuele ferwizings fereaske hiene ("import java.io.*," "import java.util.*," ensfh.).
  • In kompakte programma-opmaakoanpak wurdt foarsteld dy't nuttich kin wêze foar it learen en ûntwikkeljen fan lytse applikaasjes. It kompakte formaat elimineert de needsaak om ûnnedige klassen te definiearjen, ymportearret automatysk standert API's en leveret ferienfâldige ynfier-/útfiermetoaden. Bygelyks, de "Hallo, Wrâld!" applikaasje kin wurde werombrocht ta: void main() { IO.println("Hallo, Wrâld!"); }
  • Útdrukkings binne tastien yn konstruktors foar de oprop nei super(...) dy't brûkt wurdt om in âlderklassekonstruktor eksplisyt oan te roppen fanút in ôflaatklassekonstruktor, salang't dy útdrukkings net ferwize nei it eksimplaar dat troch de konstruktor makke wurdt. class Outer { void hello() { System.out.println("Hallo"); } class Inner { Inner() { hello(); super(); } } }
  • In generative garbage collector-modus is tafoege foar de Shenandoah garbage collector, dy't âlde en koartlyn oanmakke objekten apart ferwurket om de effisjinsje fan it sammeljen fan objekten mei koarte libbensdoer te ferbetterjen. Dizze nije modus soarget foar in foarsisberdere trochfier, wjerstân tsjin loadfluktuaasjes en fermindere ûnthâldferbrûk by it sammeljen fan garbage. De Shenandoah-scheduler hat as doel om downtime by it sammeljen fan garbage te ferminderjen troch mear wurk út te fieren parallel mei de útfiering fan Java-applikaasjes.
  • It laden en keppeljen fan cache-oanmeitsjen fan klassen foarôfgeand oan 'e tiid is ferienfâldige, wêrtroch't it opstarten fan HotSpot JVM fersnelt wurdt troch klassen te brûken dy't al laden en keppele binne. Separate operaasjes foar it opnimmen fan aktiviteit en it oanmeitsjen fan 'e cache binne net mear fereaske by it opstarten; ien kommando is genôch: java -XX:AOTCacheOutput=app.aot -cp app.jar com.example.App …
  • By it starten fan 'e HotSpot Java VM is de mooglikheid ymplementearre om metoade-útfieringsprofilen te brûken dy't krigen binne tidens de foarige applikaasjestart. Dizze feroaring lit de JIT-kompiler de opgarjen fan statistiken omgean en direkt begjinne mei it generearjen fan native koade sûnder te wachtsjen oant it profyl generearre is.
  • De HotSpot JVM ymplementearret stipe foar kompakte objektheaders, wêrfan de grutte op 64-bit systemen fermindere is fan 96 nei 64 bits (fan 12 nei 8 bytes). It ferminderjen fan de headergrutte ferminderet de heapgrutte en ferbetteret de cache-effisjinsje.
  • In test-ymplemintaasje fan 'e Vector API wurdt foarsteld. It leveret funksjes foar vektorberekkeningen útfierd mei x86_64- en AArch64-prosessor-vektorynstruksjes en makket simultane operaasje op meardere wearden (SIMD) mooglik. Oars as de automatyske vektorisaasje fan skalêre operaasjes troch de HotSpot JIT-kompiler, makket de nije API eksplisite kontrôle oer vektorisaasje mooglik foar parallelle gegevensferwurking.
  • De fyfde ferzje fan 'e Structured Concurrency API, dy't de ûntwikkeling fan multithreaded-applikaasjes ferienfâldiget troch meardere taken dy't op ferskate threads rinne as ien ienheid te behanneljen, is frijjûn foar testen.
  • De patroanmatching-engine yntrodusearret in tredde ferzje fan 'e funksje om it gebrûk fan primitive typen (int, byte, char, en oare net-objektbasistypen) mooglik te meitsjen yn alle soarten sjabloanen, de instanceof-operator, en switch-blokken. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warskôging"; case 2 -> "flater"; case int i -> "ûnbekende status: " + i; } if (i instanceof byte b) { … b … }
  • JDK Flight Recorder (JFR) foeget stipe foar eksperimintele profilearring ta mei krekter folgjen fan CPU-boarnenferbrûk op it platfoarm. LinuxYnformaasje oer de útfieringstiid fan ferskate struktueren kin dúdlik visualisearre wurde mei help fan kleurige FlameGraph-diagrammen.
  • Ferbettere stabiliteit fan JDK Flight Recorder (JFR) by it asynchrone samplen fan Java-threadstacks troch allinich de opropstack by feilige punten te passearjen.
  • JDK Flight Recorder (JFR) is bywurke mei nije metoaden tracing en timing mooglikheden. It stipet it tracearjen fan 'e opropstapel fan spesifike metoaden en it opnimmen fan krekte metoadeopropstatistiken, ynklusyf metriken lykas útfieringstiid en oproptelling.

Boarne: opennet.ru

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners 🔥 Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster