Udgivelsen af Java SE 26 og OpenJDK 26. Projektet til integration af støtte til JavaScript og Python i JVM.

Efter seks måneders udvikling har Oracle offentliggjort Java SE 26 (Java Platform, Standard Edition 26), hvor den åbne OpenJDK-projekt fungerer som referenceimplementation. Bortset fra fjernelsen af nogle forældede funktioner i Java SE 26 er tilbagekompatibiliteten med tidligere versioner af Java-platformen bevaret – de fleste eksisterende Java-projekter vil fungere uden ændringer, når de køres på den nye version. De installerbare versioner af Java SE 26 (JDK, JRE og Server JRE) er forberedt til Linux (x86_64, AArch64), Windows (x86_64) og macOS (x86_64, AArch64). Den referenceimplementation af Java SE 26, der er udviklet inden for OpenJDK-projektet, er helt åben under GPLv2-licensen med undtagelser fra GNU ClassPath, som tillader dynamisk binding til kommercielle produkter.

Java SE 26 er klassificeret som en version med almindelig support, hvor opdateringer vil blive udgivet indtil næste udgivelse. For en langvarig supportgren (LTS) bør Java SE 25, Java SE 21 eller Java SE 17 anvendes, hvilket vil få opdateringer frem til henholdsvis 2033, 2031 og 2029 (offentlige opdateringer indtil september 2030, 2028 og 2026). Den udvidede support for LTS-grenen Java SE 8 vil vare frem til 2030, mens Java SE 11 vil være støttet indtil 2032.

Blandt ændringerne i Java SE 26 (1, 2, 3, 4):

  • Der er implementeret en advarselsmeddelelse, når der anvendes dyb refleksion til at ændre felter, der er mærket med nøgleordet «final». I fremtiden planlægges det at deaktivere usikre sprogfunktioner som standard og blandt andet gøre felter, der er mærket som final, helt uforanderlige ved at fjerne omvejen for at ændre dem via dyb refleksion (API Reflection).
  • API Applet (java.applet.Applet*, javax.swing.JApplet) er blevet fjernet, da det blev anvendt til at køre Java-programmer i browsere. Dette API mistede relevans efter ophøret af støtte til Java-plugin til browsere og blev erklæret forældet i 2021.
  • Muligheden for at bruge forudformet cache (AOT – ahead-of-time) med enhver affaldsopsamler, herunder ZGC (Z Garbage Collector), er blevet implementeret. Ændringen indebærer støtte til sekventiel indlæsning af cachede Java-objekter i hukommelsen ved hjælp af et universelt format, der ikke er afhængigt af affaldsopsamlere, i stedet for direkte mapping til hukommelsen af cache-specifikke repræsentationer. Anvendelse af AOT-cache reducerer opstartstiden og fremskynder opdateringen (warmup) af HotSpot-virtuelle maskine.
  • Der er tilføjet støtte til HTTP/3-protokollen i HTTP Client API, hvilket giver applikationer og biblioteker mulighed for at kommunikere med servere via HTTP/3 efter minimale ændringer i koden.
  • Ydelsen af G1 affaldsopsamleren er blevet forbedret ved at reducere blokeringerne for synkronisering af applikationstråde med affaldsopsamlingsstråde.
  • Et andet forhåndsudgave API til kodning og dekodering af objekter med kryptografiske nøgler, certifikater og lister over tilbagekaldte certifikater er blevet foreslået, ved hjælp af PEM-formatet (Pivacy-Enhanced Mail).
  • Den sjette forhåndsudgave API til struktureret parallelisme (Structured Concurrency) er blevet foreslået til test, hvilket forenkler udviklingen af multitrådede applikationer ved at behandle flere opgaver udført i forskellige tråde som en enkelt blok.
  • Den anden forhåndsudgave API til Lazy Constants er blevet tilføjet for at arbejde med objekter, der indeholder uforanderlige data og behandles i JVM som konstanter. Sådanne objekter undergår ydelsesoptimeringer, der ligner felter med nøgleordet "final". I modsætning til "final" adskiller det nye API oprettelsen af konstante værdier fra deres initialisering, garanterer, at værdien kun kan initialiseres én gang, reducerer opstartstiden for programmer og muliggør anvendelse af konstantfoldning (constant-folding) i brugerens kode, som tidligere kun blev brugt i intern JDK-kode. class Application { // Tidligere: // 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 for mønstersammenligning er der foreslået en fjerde foreløbig mulighed for brug af primitive typer (int, byte, char og andre grundlæggende typer, der ikke er objekter) i alle former for skabeloner, i operatoren «instanceof» og i «switch»-blokkene. switch (x.getStatus()) { case 0 -> «okay»; case 1 -> «warning»; case 2 -> «error»; case int i -> «unknown status: » + i; } if (i instanceof byte b) { … b … }
  • Der er foreslået en ellevte testimplementering af API Vector, der leverer funktioner til vektorberegninger, der udføres ved hjælp af vektorinstruktioner fra x86_64- og AArch64-processorer og muliggør anvendelse af operationer på flere værdier samtidigt (SIMD). I modsætning til de muligheder for automatiseret vektorisering af skalaroperationer, der tilbydes i JIT-kompilatoren HotSpot, giver det nye API mulighed for eksplicit styring af vektoriseringen til parallel databehandling.

Derudover har Oracle annonceret projekt Detroit, som vil blive udviklet som en del af OpenJDK og har til formål at forbedre portabiliteten mellem Java, JavaScript og Python. Under projektet planlægger man at give mulighed for indlejring i JVM-runtimeprocessen med JavaScript-motoren V8 og CPython-fortolkeren. Tidligere har Oracle allerede arbejdet på JavaScript-motoren Nashorn, der kører oven på JVM, men stoppede projektet på grund af vanskelighederne ved at udvikle en separat implementering af JavaScript i en situation, hvor hovedøkosystemet er bundet til V8-motoren.

Det kan også nævnes, at opdateringen af platformen til oprettelse af grafiske brugergrænseflader JavaFX 26 er blevet offentliggjort. I løbet af de næste timer forventes også udgivelsen af den universelle virtuelle maskine GraalVM 26, der understøtter kørsel af applikationer i JavaScript (Node.js), Python, Ruby, R, alle sprog til JVM (Java, Scala, Clojure, Kotlin) og sprog, for hvilke der kan genereres LLVM bitcode (C, C++, Rust).

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster