Pambuyo pa miyezi isanu ndi umodzi yachitukuko, Oracle adasindikiza nsanja ya Java SE 23 (Java Platform, Standard Edition 23), yomwe imagwiritsa ntchito pulojekiti yotseguka ya OpenJDK ngati njira yowonetsera. Kupatulapo kuchotsedwa kwa zinthu zina zakale, Java SE 23 imakhalabe yogwirizana ndi zomwe zidatulutsidwa kale papulatifomu ya Java - mapulojekiti ambiri a Java omwe adalembedwa kale azigwira ntchito popanda kusintha akamayendetsedwa ndi mtundu watsopano. Zomanga zomwe zakonzeka kukhazikitsa za Java SE 22 (JDK, JRE ndi Server JRE) zakonzedwa ku Linux (x86_64, AArch64), Windows (x86_64) ndi macOS (x86_64, AArch64). Yopangidwa ndi pulojekiti ya OpenJDK, kukhazikitsa kwa Java 23 ndikotsegula kwathunthu pansi pa layisensi ya GPLv2, kupatulapo GNU ClassPath yomwe imalola kulumikizana kwamphamvu ndi malonda.
Java SE 23 imayikidwa ngati chithandizo chothandizira nthawi zonse ndipo ipitilira kulandira zosintha mpaka kutulutsidwa kotsatira. Nthambi ya Long Term Support (LTS) iyenera kukhala Java SE 21 kapena Java SE 17, yomwe ilandila zosintha mpaka 2031 ndi 2029, motsatana (zopezeka mpaka 2028 ndi 2026). Thandizo lowonjezereka la nthambi ya LTS ya Java SE 8 lidzakhalapo mpaka 2030, ndi Java SE 11 mpaka 2032.
Pakati pazatsopano 23 zomwe zaperekedwa ku Java SE:
- Njira yopangira ntchito ya ZGC (Generation Z Garbage Collector) yosonkhanitsa zinyalala imathandizidwa mwachisawawa, pogwiritsa ntchito njira zosiyana za zinthu "zakale" ndi "zachinyamata", zomwe zimawonjezera mphamvu yoyeretsa zinthu zomwe zapangidwa posachedwapa ndi moyo waufupi. Kugwiritsa ntchito Generational ZGC kumachepetsa chiwopsezo cha malo ogulitsa panthawi yogawa zinthu, kumachepetsa katundu wa CPU ndi kukumbukira kukumbukira panthawi yotolera zinyalala. Kuyesa kwa Generational ZGC ndi Apache Cassandra 4 kunawonetsa kuwonjezeka kwa 4x ndi mulu wosasunthika kukula kwake ndi kuchepetsa kotala mu kukula kwa mulu ndi kutulutsa kosalekeza.
- JavaDoc yawonjezera chithandizo chogwiritsa ntchito Markdown polemba kachidindo mu ndemanga, zomwe zitha kugwiritsidwa ntchito m'malo mosakaniza HTML ndi JavaDoc @ tags.

- Njira zofananira ndi mawonekedwe awonjezedwa ndi chithandizo choyambirira chogwiritsa ntchito mitundu yakale (int, byte, char, ndi mitundu ina yopanda zinthu) mumitundu yonse ya ma template, mu mawu a "instanceof", ndi "switch" blocks. sinthani (x.getStatus()) {nkhani 0 -> "chabwino"; mlandu 1 -> "chenjezo"; mlandu 2 -> "zolakwika"; mlandu int i -> "malo osadziwika:" + i; } ngati (ndi chitsanzo cha b) { … b … }
- Kuwonjezedwa koyambirira kogwiritsa ntchito mawu amodzi a "import module M" kulowetsa phukusi zonse zomwe zimatumizidwa ndi gawo linalake nthawi imodzi. Kusinthaku kumathandizira kugwiritsa ntchitonso malaibulale anthawi zonse, kukulolani kuti muphatikizemo malaibulale ndi makalasi osazindikira malo awo muulamuliro wa phukusi. Mwachitsanzo, kutchula "import module java.base" kudzalowetsa phukusi zonse 54 zomwe zili mu gawo la java.base, zomwe m'mbuyomu zikanafunika kutchulidwa padera ("import java.io.*", "import java.util.* "ndi zina).
Kukhazikitsa kwachiwiri koyambilira kwa Class-File API kwakonzedwa kuti zisanthule, kupanga, ndikusintha mafayilo amtundu wa Java. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> {kwa (ClassElement ce : classModel) {ngati (!(ce exampleof MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) {classBuilder.with(ce);
- Chiwonetsero chachisanu ndi chitatu cha Vector API chimapereka ntchito zowerengera vekitala zomwe zimagwiritsidwa ntchito pogwiritsa ntchito malangizo a vector pa x86_64 ndi mapurosesa a AArch64 ndikulola kuti ntchito zizigwiritsidwa ntchito nthawi imodzi kuzinthu zingapo (SIMD). Mosiyana ndi mphamvu zomwe zimaperekedwa mu HotSpot JIT compiler for auto-vectorization of scalar operations, API yatsopano imapangitsa kuti zikhale zotheka kuwongolera bwino ma vectorization kuti agwirizane ndi deta.
- Mawonekedwe owonjezera, printf, readPassword ndi njira zowerengera Line ku kalasi ya java.io.Console kuti ipangike, kuwonetsa ndi kuwerenga mawu potengera komwe mwasankha. System.console().printf(Locale.FRANCE, "%1$tY-%1$tB-%1$te %1$tA", new Date()) 2024-mai-16 jeudi
- Kuwonetseratu kwachiwiri kwa Stream API yowonjezereka kwawonjezeredwa komwe kumathandizira kufotokozera ntchito zanu zapakatikati, zomwe zingakhale zothandiza ngati zochitika zapakatikati zomwe zilipo sizikukwanira pakusintha kwa deta komwe mukufuna. Othandizira mbadwa amalumikizidwa pogwiritsa ntchito ntchito yatsopano yapakatikati Stream::gather(Gatherer), yomwe imayendetsa zinthu zoyenda pogwiritsa ntchito chogwirizira chomwe chimatchulidwa ndi ogwiritsa ntchito. jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(WindowFixed(3) yatsopano).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]
- Kukhazikitsa koyambirira kwachitatu kwa makalasi odziwika bwino komanso zochitika zosatchulidwa za njira "yaikulu", yomwe imatha kuletsa zolengeza zapagulu/zokhazikika, kupereka mikangano yambiri, ndi mabungwe ena okhudzana ndi chidziwitso chamagulu. // anali gulu la anthu HelloWorld {public static void main(String[] args) { System.out.println("Moni dziko!"); } } // tsopano mutha kutaya chachikulu() { System.out.println("Moni, Dziko!"); }
- Anawonjeza chithunzithunzi chachiwiri cha chinthu chomwe chimalola omanga kutchula mawu asanatchule super(...), omwe amagwiritsidwa ntchito kutchula omanga kalasi ya makolo momveka bwino kuchokera kwa omanga kalasi yobadwa nawo ngati mawuwo sakunena za chochitika chopangidwa ndi womanga. class Outer {void moni() { System.out.println("Moni"); } kalasi Inner { Mkati () { moni (); wapamwamba (); }}}
- Anawonjezera kuwonetsetsa kwachitatu kwa Scoped Values, kulola kuti data yosasinthika igawidwe mu ulusi ndi data yosinthidwa bwino pakati pa ulusi wa ana (zotengera zimatengera cholowa). Ma Scoped Values akupangidwa kuti alowe m'malo mwa ulusi wosinthika wamaloko ndipo amakhala achangu mukamagwiritsa ntchito ulusi wambiri (zikwi kapena mamiliyoni a ulusi). Kusiyana kwakukulu pakati pa Scoped Values ndi zosintha zamtundu wa ulusi ndikuti zoyambazo zimalembedwa kamodzi, sizingasinthidwe mtsogolomo, ndipo zimakhalapobe nthawi yonse yomwe ulusiwo ukuchitidwa.
- Chiwonetsero chachitatu cha Structured Concurrency API chaperekedwa kuti chiyesedwe, kufewetsa chitukuko cha mapulogalamu amitundu yambiri pokonza ntchito zingapo zomwe zikuyenda mu ulusi wosiyana ngati chipika chimodzi.
- Njira zopezera kukumbukira zakunja (kunja kwa JVM) zoperekedwa ndi gulu la sun.misc.Unsafe zachotsedwa ndipo zakonzedwa kuti zichotsedwe. Kuti mupeze makumbukidwe akutali ndikulumikizana ndi code yakunja, tikulimbikitsidwa kugwiritsa ntchito VarHandle API ndi FFM (Foreign Function & Memory) API.
Kuphatikiza apo, titha kuzindikira kusindikizidwa kwa zosintha papulatifomu popanga mapulogalamu ndi mawonekedwe azithunzi a JavaFX 23 komanso kuphatikiza kwa GraalVM JIT compiler mu Oracle JDK 23 yayikulu.
Zomwe zaperekedwanso ndikutulutsidwa kwatsopano kwa makina onse a GraalVM, omwe amathandizira kugwiritsa ntchito JavaScript (Node.js), Python, Ruby, R, zilankhulo zilizonse za JVM (Java, Scala, Clojure, Kotlin) ndi zilankhulo zomwe LLVM bitcode imatha kupangidwira (C, C++, Rust). Kuphatikiza pakuthandizira JDK 23, mtundu watsopanowu umakhathamiritsa kugwiritsa ntchito kukumbukira komanso kukula kwa ma code omwe angathe kuchitika, ndipo amapereka chithandizo chokwanira cha zida zophatikizira Python ndi WebAssembly mu Java code pogwiritsa ntchito JIT.
Source: opennet.ru

