Utgivning av Java SE 26 och OpenJDK 26. Projektet för att integrera stöd för JavaScript och Python i JVM

Efter sex mĂ„naders utveckling har Oracle publicerat plattformen Java SE 26 (Java Platform, Standard Edition 26), dĂ€r den referensimplementation som anvĂ€nds Ă€r det öppna projektet OpenJDK. Förutom att vissa förĂ„ldrade funktioner tagits bort, har Java SE 26 behĂ„llit bakĂ„tkompatibiliteten med tidigare versioner av Java-plattformen — de flesta tidigare skrivna Java-projekten kommer att fungera utan Ă€ndringar pĂ„ den nya versionen. De fĂ€rdiga installationspaketen för Java SE 26 (JDK, JRE och Server JRE) Ă€r tillgĂ€ngliga för Linux (x86_64, AArch64), Windows (x86_64) och macOS (x86_64, AArch64). Den referensimplementation av Java SE 26 som utvecklats inom ramen för projektet OpenJDK Ă€r helt öppen under GPLv2-licensen med undantag för GNU ClassPath, som möjliggör dynamisk lĂ€nkning med kommersiella produkter.

Java SE 26 klassas som en version med vanlig supportcykel, dĂ€r uppdateringar kommer att slĂ€ppas fram till nĂ€sta release. För en version med lĂ„ngsiktig support (LTS) rekommenderas Java SE 25, Java SE 21 eller Java SE 17, vars uppdateringar kommer att slĂ€ppas fram till 2033, 2031 respektive 2029 (offentliga uppdateringar — fram till september 2030, 2028 och 2026). Den utökade LTS-stöden för Java SE 8 kommer att pĂ„gĂ„ till 2030, medan Java SE 11 kommer att stödjas till 2032.

Bland förÀndringarna i Java SE 26 (1, 2, 3, 4):

  • En varning har implementerats för anvĂ€ndning av djup reflexion för att Ă€ndra fĂ€lt mĂ€rkta med nyckelordet "final". I framtiden planeras det att osĂ€kra sprĂ„kfunktioner som standard ska stĂ€ngas av, och bland annat att fĂ€lt mĂ€rkta som final helt ska bli oförĂ€nderliga genom att eliminera genvĂ€gar för att förĂ€ndra dem via djup reflexion (API Reflection).
  • API Applet (java.applet.Applet*, javax.swing.JApplet) har tagits bort, vilket anvĂ€ndes för att köra Java-applikationer i webblĂ€saren. Detta API blev omodernt efter att stödet för Java-plugin för webblĂ€sare upphört och deklarerades förĂ„ldrat 2021.
  • Möjligheten att anvĂ€nda förkompilerad cache (AOT - ahead-of-time) med alla skrĂ€parcollectorer, inklusive ZGC (Z Garbage Collector), har implementerats. Ändringen innebĂ€r stöd för sekventiell laddning av cachade Java-objekt i minnet, med en universell och skrĂ€parcollector-oberoende format istĂ€llet för direkt mappning till minnet av specifika cache-representationer. AnvĂ€ndningen av AOT-cache minskar starttiden och snabbar upp uppvĂ€rmningen av HotSpot virtuella maskinen.
  • HTTP Client API:t har fĂ„tt stöd för HTTP/3-protokollet, vilket gör det möjligt för applikationer och bibliotek att kommunicera med servrar via HTTP/3 efter minimala kodĂ€ndringar.
  • Prestandan hos G1-skrĂ€parcollectorn har förbĂ€ttrats tack vare minskning av lĂ„s för att synkronisera applikationens trĂ„dar med skrĂ€parcollectorns trĂ„dar.
  • Ett andra preliminĂ€rt API-förslag för kodning och avkodning av objekt med kryptografiska nycklar, certifikat och Ă„terkallade certifikat, med anvĂ€ndning av PEM-formatet (Privacy-Enhanced Mail), har föreslagits.
  • Ett sjĂ€tte preliminĂ€rt API-förslag för strukturerad parallellism (Structured Concurrency) har föreslagits för testning, vilket förenklar utvecklingen av flertrĂ„diga applikationer genom att hantera flera uppgifter som körs i olika trĂ„dar som en enhetlig block.
  • Den andra preliminĂ€ra versionen av API för Lazy Constants har lagts till för att arbeta med objekt som innehĂ„ller oförĂ€nderliga data och som behandlas i JVM som konstanter. LikasĂ„ tillĂ€mpas prestandaoptimeringar för sĂ„dana objekt, liknande de för fĂ€lt med nyckelordet 'final'. Till skillnad frĂ„n 'final' separerar det nya API:t skapandet av permanenta vĂ€rden och deras initiering, garanterar att vĂ€rdet endast kan initieras en gĂ„ng, minskar programstarttiden och möjliggör anvĂ€ndning av optimeringar för konstantsvĂ€ngning (constant-folding) i anvĂ€ndarkoden, som tidigare endast anvĂ€ndes i JDK:s interna kod. class Application { // Tidigare: // static final UserService USERS = new UserService(); // Nu kan man: static final StableValue USERS = StableValue.of(); public static UserService users() { return USERS.orElseSet(UserService::new); } }
  • I mekanismen för mönstermatchning föreslĂ„s ett fjĂ€rde preliminĂ€rt alternativ för anvĂ€ndning av primitiva typer (int, byte, char och andra grundlĂ€ggande typer som inte Ă€r objekt) i alla typer av mallar, i operatören 'instanceof' och i 'switch'-block. switch (x.getStatus()) { case 0 -> 'okej'; case 1 -> 'varning'; case 2 -> 'fel'; case int i -> 'okĂ€nt status: ' + i; } if (i instanceof byte b) { 
 b 
 }
  • Den elfte testimplementeringen av API:et Vector föreslĂ„s, vilket tillhandahĂ„ller funktioner för vektorberĂ€kningar som utförs med hjĂ€lp av vektorinstruktioner frĂ„n x86_64- och AArch64-processorer och tillĂ„ter samtidig tillĂ€mpning av operationer pĂ„ flera vĂ€rden (SIMD). Till skillnad frĂ„n de funktioner som tillhandahĂ„lls av JIT-kompilatorn HotSpot för automatisk vektorisering av skalĂ€ra operationer, ger det nya API:et möjlighet att uttryckligen styra vektoriseringen för parallell databehandling.

Dessutom har Oracle tillkÀnnagett projektet Detroit, som kommer att utvecklas inom OpenJDK och syftar till att förbÀttra portabiliteten mellan Java, JavaScript och Python. Inom ramen för projektet avser man att möjliggöra inbÀddning i JVM-runtime-processen med JavaScript-motorn V8 och CPython-tolkaren. Tidigare utvecklade Oracle JavaScript-motorn Nashorn, som kördes ovanpÄ JVM, men avbröts projektet pÄ grund av svÄrigheterna att utveckla en separat JavaScript-implementation nÀr den huvudsakliga ekosystemet Àr knutet till V8-motorn.

Det Àr ocksÄ vÀrt att notera publiceringen av en uppdatering av plattformen för att skapa applikationer med grafiskt grÀnssnitt JavaFX 26. Inom de nÀrmaste timmarna förvÀntas ocksÄ lanseringen av den universella virtuella maskinen GraalVM 26, som stöder körning av applikationer pÄ JavaScript (Node.js), Python, Ruby, R, alla sprÄk för JVM (Java, Scala, Clojure, Kotlin) och sprÄk för vilka bitcode kan formuleras LLVM (C, C++, Rust).

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