UtgÄvan av Java SE 25 LTS och OpenJDK 25

Efter sex mĂ„naders utveckling publicerade Oracle plattformen Java SE 25 (Java Platform, Standard Edition 24), dĂ€r den referensimplementation som anvĂ€nds Ă€r det öppna projektet OpenJDK. Förutom att vissa förĂ„ldrade funktioner togs bort, bevarades bakĂ„tkompatibiliteten med tidigare versioner av Java-plattformen i Java SE 25 — de flesta tidigare skrivna Java-projekt kommer att fungera utan Ă€ndringar under den nya versionen. FĂ€rdiga installationspaket för Java SE 25 (JDK, JRE och Server JRE) har förberetts för Linux (x86_64, AArch64), Windows (x86_64) och macOS (x86_64, AArch64). Den referensimplementation som utvecklats inom ramen för OpenJDK för Java SE 25 Ă€r helt öppen under GPLv2-licensen med undantag för GNU ClassPath, som tillĂ„ter dynamisk lĂ€nkning med kommersiella produkter.

Java SE 25 klassificeras som en version med utökat stöd, med uppdateringar som kommer att slÀppas fram till 2033 (offentliga uppdateringar kommer att slÀppas fram till september 2030). Versionerna Java SE 17 och 21 fortsÀtter ocksÄ att stödjas som LTS-versioner, med uppdateringar som kommer att slÀppas fram till 2029 respektive 2031 (offentliga uppdateringar fram till 2026 och 2028). Utvidgat LTS-stöd för Java SE 8 och 11 kommer att pÄgÄ till 2030 respektive 2032.

Bland de nya funktioner som erbjuds i Java SE 25 (1, 2, 3, 4):

  • En experimentell API, StableValue, har lagts till för att arbeta med objekt som innehĂ„ller oförĂ€nderliga data och hanteras i JVM som konstanter. SĂ„dana objekt fĂ„r prestationsoptimeringar som liknar fĂ€lt med nyckelordet "final". StableValue API separerar skapandet av permanenta vĂ€rden och deras initialisering, sĂ€kerstĂ€ller att vĂ€rdet endast kan initialiseras en gĂ„ng, minskar programstarttiden och möjliggör anvĂ€ndning av konstantutfĂ€llning (constant-folding) i anvĂ€ndarkod, vilket tidigare endast anvĂ€ndes i intern JDK-kod. class Application { // Tidigare: // static final UserService USERS = new UserService(); // Nu: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • En experimentell API har lagts till för att koda och avkoda objekt med kryptografiska nycklar, certifikat och listor över Ă„terkallade certifikat, med hjĂ€lp av PEM-formatet (Pivacy-Enhanced Mail).
  • Stödet för Scoped Values har lagts till, vilket möjliggör delning av oförĂ€nderliga data mellan trĂ„dar och effektiv datadelning mellan undertrĂ„dar (vĂ€rdena Ă€rvs). Scoped Values utvecklas för att ersĂ€tta mekanismen för trĂ„d-lokala variabler och Ă€r mer effektiva nĂ€r ett mycket stort antal virtuella trĂ„dar anvĂ€nds (tusentals och miljoner trĂ„dar). Huvudskillnaden mellan Scoped Values och trĂ„d-lokala variabler Ă€r att de senare skrivs en gĂ„ng, kan inte Ă€ndras och Ă€r endast tillgĂ€ngliga under körning av trĂ„den.
  • Ett API för anvĂ€ndning av kryptografiska nyckelgenereringsfunktioner (KDF, key derivation function) har lagts till, vilket möjliggör skapandet av ytterligare nycklar av nödvĂ€ndig lĂ€ngd baserat pĂ„ en hemlig nyckel (t.ex. ett lösenord) och en godtycklig mĂ€ngd data.
  • Koden och byggscenarierna för stöd av 32-bitars x86-system har tagits bort. Avvecklingen av stödet för 32-bitars x86-system har förenklat infrastrukturen för byggande och testning av JDK samt möjliggjort implementering av funktioner kopplade till plattformar utan att skapa fallback-hanterare för 32-bitars x86-system.
  • Möjligheten att anvĂ€nda ett enda uttryck "import module M" för att importera alla paket som exporteras av den angivna modulen har lagts till. Ändringen förenklar avsevĂ€rt Ă„teranvĂ€ndningen av modulĂ€ra bibliotek, vilket gör det möjligt att ansluta bibliotek och klasser utan att definiera deras plats i paketstrukturen. Till exempel kommer "import module java.base" att importera alla 54 paket som ingĂ„r i modulen java.base, vilket tidigare skulle ha krĂ€vt att de nĂ€mndes separat ("import java.io.*", "import java.util.*" etc.).
  • Ett kompakt alternativ för programmeringsformat har föreslagits, vilket kan vara anvĂ€ndbart för undervisning och utveckling av smĂ„ applikationer. I den kompakta formen krĂ€vs ingen definition av överskottiga klasser, typiska API:er importeras automatiskt och förenklade in-/utdata-metoder Ă€r tillgĂ€ngliga. Till exempel kan applikationen "Hello, World!" reduceras till: void main() { IO.println("Hello, World!"); }
  • Det Ă€r tillĂ„tet att ange uttryck i konstruktörer före anropet av super(
), som anvĂ€nds för att explicit anropa konstruktören av förĂ€ldraklassen frĂ„n konstruktören av den Ă€rvda klassen, om dessa uttryck inte refererar till den instans som skapas av konstruktören. class Outer { void hello() { System.out.println("Hello"); } class Inner { Inner() { hello(); super(); } } }
  • Den generativa driftsmoden för skrĂ€psamlaren Shenandoah har lagts till, vilket innebĂ€r att gamla och nyligen skapade objekt hanteras separat för att öka effektiviteten vid rensning av objekt med kort livslĂ€ngd. Den nya driftsmoden ger mer förutsĂ€gbar genomströmning, motstĂ„ndskraft mot förĂ€ndrad belastning och minskat minnesanvĂ€ndning vid skrĂ€psamling. Shenadoah-schemalĂ€ggaren syftar till att minska stopp-tiden under skrĂ€psamling genom att utföra ett större arbete parallellt med körningen av Java-applikationer.
  • Det har förenklats att skapa cache för Ahead-of-Time-laddning och kompilering av klasser, vilket gör det möjligt att snabba upp starten av HotSpot JVM genom att anvĂ€nda klasser i ett redan laddat och kompilerat tillstĂ„nd. Vid start krĂ€vs inte lĂ€ngre separata operationer för att registrera aktiviteter och skapa cache, utan det rĂ€cker med ett enda kommando: java -XX:AOTCacheOutput=app.aot -cp app.jar com.example.App 

  • Vid start av HotSpot Java VM har möjligheten att anvĂ€nda metodernas körningsprofiler, som samlades in under den föregĂ„ende körningen av applikationen, implementerats. Ändringen gör det möjligt för JIT-kompilatorn att undvika att samla in statistik och omedelbart börja generera nativ kod utan att vĂ€nta pĂ„ profilens bildande.
  • I HotSpot JVM har stöd för kompakta objekt-headerar implementerats, vars storlek pĂ„ 64-bitars system har minskats frĂ„n 96 till 64 bitar (frĂ„n 12 till 8 byte). Minskat header-storlek gör att heap-storleken kan reduceras och effektiviteten i cachen kan förbĂ€ttras.
  • En föreslagen testimplementering av Vector-API:et erbjuder funktioner för vektorberĂ€kningar, som utförs med hjĂ€lp av vektorinstruktioner för x86_64- och AArch64-processorer. Det möjliggör tillĂ€mpning av operationer samtidigt pĂ„ flera vĂ€rden (SIMD). Till skillnad frĂ„n de auto-vektoriseringsmöjligheter som erbjuds i JIT-kompilatorn HotSpot ger det nya API:et möjlighet att explicit styra vektorisering för parallell databehandling.
  • En femte preliminĂ€ra version av API:et för strukturerad parallellism (Structured Concurrency) har föreslagits för testning. Denna version förenklar utvecklingen av flertrĂ„diga applikationer genom att hantera flera uppgifter som körs i olika trĂ„dar som en enhetlig block.
  • I mönstermatchningsmekanismen har den tredje preliminĂ€ra versionen föreslagits, vilket möjliggör anvĂ€ndning av primitiva typer (int, byte, char och andra grundlĂ€ggande typer som inte Ă€r objekt) i alla typer av mallar, i operatorn «instanceof» och i «switch»-block. switch (x.getStatus()) { case 0 -> «okay»; case 1 -> «warning»; case 2 -> «error»; case int i -> «unknown status: » + i; } if (i instanceof byte b) { 
 b 
 }
  • I JDK Flight Recorder (JFR) har experimentellt stöd för profileringsfunktioner med mer exakt spĂ„rning av CPU-resursanvĂ€ndning pĂ„ Linux-plattformen lagts till. Information om körning av olika konstruktioner kan visualiseras tydligt med hjĂ€lp av fĂ€rgade diagram kallade «FlameGraph».
  • Stabiliteten hos JDK Flight Recorder (JFR) har ökat vid asynkron sampling av Java-trĂ„dstackar genom att endast göra en genomgĂ„ng av samtalsstackar vid sĂ„ kallade «safepoints».
  • I JDK Flight Recorder (JFR) har verktyg för spĂ„rning och utvĂ€rdering av metoder lagts till. Stöd ges för spĂ„rning av samtalsstackar för specifika metoder samt för att spela in exakt statistik över metodanrop, inklusive metrik som körningstid och antalet anrop.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster