IJava SE 23 kunye ne-OpenJDK 23 zikhutshiwe

Emva kweenyanga ezintandathu zophuhliso, i-Oracle yapapasha i-Java SE 23 iqonga (i-Java Platform, i-Standard Edition 23), esebenzisa iprojekthi evulekileyo ye-OpenJDK njengokuphunyezwa kwereferensi. Ngaphandle kokususwa kweempawu ezithile eziphelelwe lixesha, iJava SE 23 igcina ukuhambelana ngasemva kunye nokukhutshwa kwangaphambili kweqonga leJava - uninzi lweeprojekthi ezibhalwe ngaphambili zeJava ziya kusebenza ngaphandle kweenguqu xa ziqhutywa phantsi koguqulelo olutsha. Ukulungelelaniswa kolwakhiwo lweJava SE 22 (JDK, JRE kunye neServer JRE) zilungiselelwe iLinux (x86_64, AArch64), Windows (x86_64) kunye ne-macOS (x86_64, AArch64). Iphuhliswe yiprojekthi ye-OpenJDK, ukuphunyezwa kwereferensi yeJava 23 ngumthombo ovuleleke ngokupheleleyo phantsi kwelayisensi ye-GPLv2, ngaphandle kweGNU ClassPath evumela ukudibanisa okuguquguqukayo kunye neemveliso zorhwebo.

IJava SE 23 ihlelwa njengenkxaso yokukhululwa rhoqo kwaye iya kuqhubeka ifumana uhlaziyo kude kube kukukhululwa okulandelayo. I-Long Term Support (LTS) yesebe kufuneka ibe yiJava SE 21 okanye iJava SE 17, eya kufumana ukuhlaziywa kude kube yi-2031 kunye ne-2029, ngokulandelanayo (ifumaneka ngokubanzi kude kube yi-2028 kunye ne-2026). Inkxaso eyandisiweyo ye-LTS yesebe leJava SE 8 iya kuhlala kude kube yi-2030, kunye ne-Java SE 11 kude kube yi-2032.

Phakathi kwezinto ezintsha ezingama-23 ezicetywayo kwiJava SE:

  • Indlela yokuvelisa i-ZGC (i-Generation Z Garbage Collector) umqokeleli wenkunkuma inikwe amandla ngokungagqibekanga, usebenzisa ukucwangciswa okuhlukeneyo kwezinto "ezidala" kunye "ezincinci", okwandisa ukusebenza kakuhle kokucoca izinto ezisandul 'ukudala kunye nobomi obufutshane. Ukusebenzisa i-Generational ZGC kunciphisa umngcipheko we-stalls ngexesha lokwabiwa kwezixhobo, kunciphisa umthwalo we-CPU kunye nokusetyenziswa kwememori ngexesha lokuqokelela inkunkuma. Uvavanyo lwe-ZGC yesiZukulwana nge-Apache Cassandra 4 ibonise ukunyuka kwe-4x kwi-throughput kunye nobungakanani bemfumba esisigxina kunye nekota yokunciphisa ubukhulu bemfumba kunye ne-output eqhubekayo.
  • I-JavaDoc yongeze inkxaso yokusebenzisa i-Markdown kwikhowudi yoxwebhu kumazwana, anokusetyenziswa endaweni yomxube we-HTML kunye neJavaDoc @ tags.
    IJava SE 23 kunye ne-OpenJDK 23 zikhutshiwe
  • Iindlela zokuthelekisa iipateni zomelezwe ngenkxaso yokuqala yokusetyenziswa kweentlobo zamandulo (int, byte, char, kunye nezinye iintlobo ezingeyiyo into esisiseko) kuzo zonke iintlobo zeetemplates, kwingxelo "instanceof", kunye nakwi "switch" blocks. tshintsha (x.getStatus()) { case 0 -> "kulungile"; ityala 1 -> "isilumkiso"; ityala 2 -> "impazamo"; case int i -> “imo engaziwayo: ” + i; } ukuba (imizekelo ye-byte b) { … b … }
  • Inkxaso eyongeziweyo yokuqala yokusebenzisa ingxelo enye "yemodyuli yokungenisa elizweni M" ukungenisa zonke iipakethe ezithunyelwa ngaphandle ngemodyuli ekhankanyiweyo kanye. Utshintsho lwenza lula ukusetyenziswa kwakhona kwamathala eencwadi eemodyuli, okukuvumela ukuba ubandakanye amathala eencwadi kunye neeklasi ngaphandle kokumisela indawo yazo kuluhlu lwephakeji. Umzekelo, ukucacisa "imodyuli yokungenisa i-java.base" iya kungenisa zonke iipakethe ezingama-54 ezibandakanyiweyo kwimodyuli ye-java.base, ebikade kufuneka ikhankanywe ngokwahlukeneyo ("import java.io.*", "import java.util.* ” njl.).

    Ukuphunyezwa kwesibini sokuqala kweClass-File API kucetywayo ukucazulula, ukuvelisa, kunye nokuguqula iifayile zeklasi yeJava. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> {ye (ClassElement ce : classModel) {ukuba (!(ce exampleof MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) {classBuilder.with(ce);

  • Umboniso wesibhozo weVector API ubonelela ngemisebenzi yezibalo zevektha ezenziwa kusetyenziswa imiyalelo ye-vector kwi-x86_64 kunye ne-AArch64 processors kwaye ivumela imisebenzi ukuba isetyenziswe ngaxeshanye kumaxabiso amaninzi (SIMD). Ngokungafaniyo nesakhono esinikwe kwi-HotSpot JIT compiler ye-auto-vectorization ye-scalar operations, i-API entsha yenza ukuba kube lula ukulawula ngokucacileyo i-vectorization yokucubungula idatha efanayo.
  • Ifomati eyongeziweyo, printf, readPassword kunye neendlela zokufunda Umgca kwiklasi ye-java.io.Console ukufomatha, ukubonisa nokufunda okubhaliweyo ngokusekelwe kwindawo ekhethiweyo. System.console().printf(Locale.FRANCE, "%1$tY-%1$tB-%1$te %1$tA", Umhla omtsha()) 2024-mai-16 jeudi
  • Ukuphunyezwa komboniso wesibini we-API eyandisiweyo yoMsinga yongezwe exhasa ukuchaza imisebenzi yakho ephakathi, enokuba luncedo kwiimeko apho imisebenzi ekhoyo eyakhelwe-ngaphakathi ayanele ukuguqulwa kwedatha efunwayo. Abaphangi bomthonyama badityanisiwe kusetyenziswa umsebenzi omtsha ophakathi Ukusasaza::hlanganisa (Umqokeleli), oqhuba izinto zomjelo ngokusebenzisa isibambi esichazwe ngumsebenzisi kubo. jshell> Umjelo.of(1,2,3,4,5,6,7,8,9).qokelela(ifestile entshaIlungisiwe(3)).kuLuhlu() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • Kongezwe uphumezo lokuqala lwesithathu lweeklasi ezibhengezwe ngokungafihlisiyo kunye nemizekelo engachazwanga yendlela "engundoqo", enokuthi ikhuphe izibhengezo zikawonke-wonke/ezisisigxina, igqithise uluhlu lweengxoxo, kunye namanye amaqumrhu anxulumene nesibhengezo sodidi. // yayiyiklasi yoluntu i-HelloWorld {i-public static void main(Umtya[] args) { System.out.println("Molo hlabathi!"); } } // ngoku ungakhupha okuphambili () { System.out.println("Molo, Hlabathi!"); }
  • Kongezwe imboniso yesibini yophawu oluvumela abakhi ukuba bakhankanye iintetho phambi kokubiza super(...), esetyenziselwa ukubiza ngokucacileyo umakhi wodidi lwabazali ukusuka kumakhi wodidi oluzuzwe njengelifa ukuba ezo ntetho azibhekiseli kumzekelo owenziwe ngumakhi. iklasi yangaphandle {i-void molo () { System.out.println("Molo"); } iklasi Ngaphakathi { Ngaphakathi () { molo (); super(); }}}
  • Kongezwe ukuphunyezwa kokujonga kwangaphambili kwesithathu kweMigangatho ye-Scoped, evumela idatha engenakuguquleka ukuba kwabelwane ngayo kuyo yonke imisonto kunye nedatha etshintshiweyo ngokufanelekileyo phakathi kwemisonto yomntwana (amaxabiso azuzwa njengelifa). IiNqobo zeScoped ziyaphuhliswa ukuze zithathe indawo yendlela yokuguquguquka kwemisonto yendawo kwaye zisebenza ngakumbi xa kusetyenziswa amanani amakhulu kakhulu emisonto (amawaka okanye izigidi zemisonto). Umahluko ophambili phakathi kweeValues ​​eziBalulekileyo kunye noguquguquko lwendawo kukuba ezokuqala zibhalwa kube kanye, azinakutshintshwa kwixesha elizayo, kwaye zihlala zifumaneka kuphela ngexesha lokwenziwa komsonto.
  • Umboniso wesithathu we-API ye-Structured Concurrency iye yacetywayo yokuvavanya, ukwenza lula ukuphuhliswa kwezicelo ezinemisonto emininzi ngokucubungula imisebenzi emininzi eqhuba kwiintambo ezahlukeneyo njengebhloko enye.
  • Iindlela zokufikelela kwimemori yangaphandle (ngaphandle kwe-JVM) ezibonelelwa yi-sun.misc.Iklasi engakhuselekanga ziye zachithwa kwaye zicwangciselwe ukususwa. Ukufikelela kwimemori ye-off-heap kunye nokusebenzisana nekhowudi yangaphandle, kuyacetyiswa ukuba usebenzise i-VarHandle API kunye ne-FFM (i-Foreign Function & Memory) API.

Ukongezelela, sinokuqaphela ukupapashwa kohlaziyo kwiqonga lokudala izicelo kunye neJavaFX 23 ujongano lwegraphical kunye nokufakwa komqambi weGraalVM JIT kwi-Oracle JDK 23 ephambili.

Kukwaboniswa ukhupho olutsha lomatshini wendalo yonke weGraalVM, oxhasa usetyenziso lweJavaScript (Node.js), Python, Ruby, R, naziphi na iilwimi zeJVM (Java, Scala, Clojure, Kotlin) kunye neelwimi apho ibitcode yeLLVM inokuveliswa khona (C, C++, Rust). Ukongeza ekuxhaseni i-JDK 23, inguqu entsha ilungiselela ukusetyenziswa kwememori kunye nobukhulu bekhowudi ephunyeziweyo, kwaye inikezela ngenkxaso epheleleyo yezixhobo zokufakela iPython kunye neWebAssembly kwikhowudi yeJava usebenzisa ukuhlanganiswa kweJIT.

umthombo: opennet.ru

Yongeza izimvo