Na ses maande se ontwikkeling het Oracle Java SE 26 (Java Platform, Standard Edition 26) vrygestel, wat die oopbron OpenJDK-projek as verwysingsimplementering gebruik. Met die uitsondering van die verwydering van sommige verouderde funksies, handhaaf Java SE 26 terugwaartse versoenbaarheid met vorige weergawes van die Java-platform—meeste voorheen geskrewe Java-projekte sal onveranderd loop wanneer hulle onder die nuwe weergawe loop. Gereed-om-te-installeer weergawes van Java SE 26 (JDK, JRE en Server JRE) word voorberei vir... Linux (x86_64, AArch64), Windows (x86_64) en macOS (x86_64, AArch64). Ontwikkel deur die OpenJDK-projek, is die Java SE 26-verwysingsimplementering volledig oopbron onder die GPLv2-lisensie met die GNU ClassPath-uitsondering, wat dinamiese skakeling met kommersiële produkte moontlik maak.
Java SE 26 word gekategoriseer as 'n gereelde ondersteuningsvrystelling, met opdaterings wat vrygestel word tot die volgende vrystelling. Die langtermynondersteuning (LTS) tak behoort Java SE 25, Java SE 21 of Java SE 17 te wees, met opdaterings wat vrygestel word tot onderskeidelik 2033, 2031 en 2029 (algemeen beskikbaar tot September 2030, 2028 en 2026). Uitgebreide ondersteuning vir die Java SE 8 LTS tak sal voortduur tot 2030, en vir Java SE 11 tot 2032.
Veranderinge in Java SE 26 (1, 2, 3, 4) sluit in:
- 'n Waarskuwing is geïmplementeer wanneer diep refleksie gebruik word om velde wat met die "finale" sleutelwoord gemerk is, te wysig. Toekomstige planne sluit in die deaktivering van onveilige taalkenmerke by verstek en, onder andere, die maak van velde wat as finaal gemerk is, heeltemal onveranderlik, die verwydering van die tydelike oplossing vir die wysiging daarvan via diep refleksie (die Reflection API).
- Die Applet API (java.applet.Applet*, javax.swing.JApplet), wat gebruik word om Java-toepassings in die blaaier te laat loop, is verwyder. Hierdie API het verouderd geraak nadat die Java-blaaierinprop gestaak is en in 2021 afgekeur is.
- Die vermoë om 'n voortydige (AOT) kasgeheue met enige vullisversamelaar, insluitend ZGC (Z Garbage Collector), te gebruik, is geïmplementeer. Hierdie verandering ondersteun die opeenvolgende laai van gekaste Java-objekte in die geheue deur 'n universele, vullisversamelaar-onafhanklike formaat te gebruik in plaas daarvan om spesifieke kasvoorstellings direk in die geheue te karteer. Die gebruik van 'n AOT-kasgeheue verminder die opstarttyd en versnel die opwarming van die HotSpot virtuele masjien.
- Die HTTP-kliënt API is opgedateer om die HTTP/3-protokol te ondersteun, wat toepassings en biblioteke toelaat om toegang tot bedieners oor HTTP/3 te verkry met minimale kodeveranderinge.
- Verbeterde werkverrigting van die G1-vullisversamelaar deur die slotte te verminder wat nodig is om toepassingsdrade met vullisversamelaarsdrade te sinkroniseer.
- 'n Tweede konsep van die API vir die kodering en dekodering van voorwerpe met kriptografiese sleutels, sertifikate en sertifikaatherroepingslyste met behulp van die PEM (Privacy-Enhanced Mail) formaat word voorgestel.
- Die sesde konsep van die Structured Concurrency API, wat die ontwikkeling van multithreaded-toepassings vereenvoudig deur verskeie take wat op verskillende drade loop as 'n enkele eenheid te behandel, is vrygestel vir toetsing.
- Die tweede voorskou van die Lazy Constants API is bygevoeg vir die werk met objekte wat onveranderlike data bevat en as konstantes in die JVM behandel word. Prestasie-optimalisering soortgelyk aan velde met die "final" sleutelwoord word op sulke objekte toegepas. Anders as "final", skei die nuwe API die skep van konstante waardes van hul initialisering, waarborg dat 'n waarde slegs een keer geïnisialiseer kan word, verminder programopstarttyd, en maak dit moontlik dat konstante-vou-optimalisering, wat voorheen slegs in JDK-interne kode gebruik is, in gebruikerskode gebruik kan word. class Application { // Voorheen: // static final UserService USERS = new UserService(); // Nou: static final StableValue GEBRUIKERS = StabieleWaarde.van(); public static GebruikersDiens gebruikers() { return GEBRUIKERS.ofAndersStel(GebruikersDiens::nuut); } }
- Die patroonooreenstemmingsenjin stel 'n vierde konsep bekend van die vermoë om primitiewe tipes (int, byte, char en ander nie-objek basistipes) in alle sjabloontipes, die instanceof-operator en skakelblokke te gebruik. switch (x.getStatus()) { case 0 -> "okay"; case 1 -> "warning"; case 2 -> "error"; case int i -> "unknown status: " + i; } if (i instanceof byte b) { … b … }
- Die elfde toetsimplementering van die Vector API word voorgestel. Dit bied funksies vir vektorberekeninge wat uitgevoer word met behulp van x86_64- en AArch64-verwerkervektorinstruksies en maak voorsiening vir gelyktydige werking op veelvuldige waardes (SIMD). Anders as die HotSpot JIT-samesteller se outo-vektorisering van skalaarbewerkings, laat die nuwe API eksplisiete beheer oor vektorisering vir parallelle dataverwerking toe.
Oracle het ook Project Detroit aangekondig, wat as deel van OpenJDK ontwikkel sal word en daarop gemik is om oordraagbaarheid tussen Java, JavaScript en Python te verbeter. Die projek het ten doel om die integrasie van die V8 JavaScript-enjin en CPython-interpreteerder in die JVM-proses moontlik te maak. Oracle het voorheen die Nashorn JavaScript-enjin ontwikkel, wat bo-op die JVM loop, maar het die projek gestaak weens die moeilikheid om 'n aparte JavaScript-implementering te ontwikkel wanneer die primêre ekosisteem aan die V8-enjin gekoppel is.
Daarbenewens is ons bly om die vrystelling van 'n opdatering vir die JavaFX 26-platform vir die skep van grafiese gebruikerskoppelvlaktoepassings aan te kondig. Die vrystelling van die GraalVM 26 universele virtuele masjien, wat die uitvoering van toepassings in JavaScript (Node.js), Python, Ruby, R, enige JVM-taal (Java, Scala, Clojure, Kotlin), en tale waarvoor LLVM-bitkode gegenereer kan word (C, C++, Rust) ondersteun, word ook in die komende ure verwag.
Bron: opennet.ru
