Ukukhishwa kweplatifomu ye-Java SE 22 kanye nokuqaliswa kwereferensi evulekile ye-OpenJDK 22

Ngemuva kwezinyanga eziyisithupha zokuthuthuka, i-Oracle ikhiphe i-Java SE 22 (i-Java Platform, i-Standard Edition 22), esebenzisa iphrojekthi ye-OpenJDK yomthombo ovulekile njengokuqaliswa kwereferensi. Ngaphandle kokususwa kwezinye izici ezingasasebenzi, i-Java SE 22 igcina ukuhambisana okusemuva nokukhishwa kwangaphambilini kweplathifomu ye-Java - amaphrojekthi amaningi e-Java abhalwe ngaphambilini azosebenza ngaphandle kwezinguquko lapho esebenza ngaphansi kwenguqulo entsha. Izakhiwo ezilungele ukufaka ze-Java SE 22 (JDK, JRE ne-Server JRE) zilungiselelwa i-Linux (x86_64, AArch64), Windows (x86_64) kanye ne-macOS (x86_64, AArch64). Ithuthukiswe iphrojekthi ye-OpenJDK, ukusetshenziswa kwesithenjwa se-Java 22 kuwumthombo ovulekile ngokugcwele ngaphansi kwelayisensi ye-GPLv2, okuhlukile kwe-GNU ClassPath okuvumela ukuxhumana okunamandla nemikhiqizo yezentengiso.

I-Java SE 22 ihlukaniswa njengokukhululwa kosekelo okuvamile futhi izoqhubeka nokuthola izibuyekezo kuze kube ukukhishwa okulandelayo. Igatsha Losekelo Lwesikhathi Eside (LTS) kufanele libe yi-Java SE 21 noma i-Java SE 17, ezothola izibuyekezo kuze kube u-2031 no-2029, ngokulandelanayo (ngokuvamile kutholakala kuze kube ngu-2028 no-2026). Ukusekelwa komphakathi kwegatsha le-LTS le-Java SE 11 kuphele ngoSepthemba odlule, kodwa ukusekelwa okunwetshiwe kuzoqhubeka kuze kube ngu-2032. Ukusekelwa okunwetshiwe kwegatsha le-LTS le-Java SE 8 kuzoqhubeka kuze kube ngu-2030.

Ake sikukhumbuze ukuthi kusukela ngokukhululwa kwe-Java 10, iphrojekthi ishintshele kunqubo entsha yokuthuthukisa, okusho umjikelezo omfushane wokwakhiwa kokukhishwa okusha. Ukusebenza okusha manje sekuthuthukisiwe egatsheni elilodwa eliyinhloko elivuselelwe njalo, elihlanganisa izinguquko esezilungile futhi lapho amagatsha enziwa khona njalo ngemva kwezinyanga eziyisithupha ukuze kuzinziswe ukukhishwa okusha.

Izici ezintsha ku-Java 22 zifaka:

  • Umqoqi kadoti we-G1 uhlanganisa ukusekela ukuphina kwesifunda, okukuvumela ukuthi ulungise okwesikhashana indawo yezinto ze-Java ngenkumbulo ukuze ugweme ukuthi zithuthwe umqoqi kadoti futhi uvumele izinkomba zalezi zinto ukuthi zidluliswe ngokuphephile phakathi kwe-Java nekhodi yomdabu. Ukuphina kukuvumela ukuthi unciphise ukubambezeleka futhi ugweme ukukhubaza ukuqoqwa kukadoti lapho usebenzisa izifunda ezibalulekile ze-JNI (I-Java Native Interface) ngekhodi yomdabu (ngenkathi isebenzisa lezi zigaba, i-JVM akufanele isuse izinto ezibucayi ezihlobene nazo ukuze kugwenywe izimo zohlanga). Ukuphina kususa izinto ezibucayi ekubukeni komqoqi kadoti, okungaqhubeka nokuhlanza izindawo ezingaphiniwe.
  • Isici sokuqala sengeziwe ukuze kuvunyelwe izinkulumo ukuthi zicaciswe kubakhi ngaphambi kokubiza i-super(...), esetshenziselwa ukubiza ngokusobala umakhi wekilasi lomzali kumakhi wesigaba esizuzwe njengefa uma lezo zinkulumo zingabhekiseli esimweni esidalwe umakhi. class Outer {i-void sawubona() {System.out.println("Sawubona"); } ikilasi Inner { Inner() { sawubona(); super (); }}}
  • I-FFM (Foreign Function & Memory) API isizinzile, ivumela ukusebenzisana kwezinhlelo ze-Java ezinekhodi yangaphandle kanye nedatha ngokubiza imisebenzi evela emitapweni yolwazi yangaphandle kanye nokufinyelela inkumbulo ngaphandle kwe-JVM, ngaphandle kokusebenzisa i-JNI (Java Native Interface).
  • Ukusekela okuguquguqukayo okungashiwongo nokumataniswa kwephethini kunikwe amandla - esikhundleni sokuguquguquka okungasetshenzisiwe kodwa okudingekayo namaphethini lapho ushaya ucingo, manje ungacacisa uhlamvu oluthi “_”. // bekuyi-String pageName = shintsha (ikhasi) {icala GitHubIssuePage(var url, var content, var links, int issueNumber) -> “ISSUE #” + issueNumber; ...}; // manje ungakwazi Intambo pageName = shintsha (ikhasi) {icala GitHubIssuePage(_, _, _, int issueNumber) -> “ISSUE #” + issueNumber; };
  • Ukuqaliswa kokuqala kwe-Class-File API kuhlongozwa ukuthi kuncozululwe, kukhiqizwe, futhi kuguqulwe amafayela ekilasi le-Java. I-ClassFile cf = I-ClassFile.of(); I-ClassModel classModel = cf.parse(amabhayithi); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { for (ClassElement ce : classModel) { uma (!(ce exampleof MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) {classBuilder.with(ce);
  • Insiza ye-java ihlinzeka ngekhono lokusebenzisa izinhlelo ze-Java, ezihlinzekwa ngohlobo lwamafayela ekhodi ambalwa noma imitapo yolwazi yekilasi ehlanganiswe ngaphambili, ngaphandle kokuhlanganisa ngokuhlukana lawa mafayela nangaphandle kokumisa uhlelo lokwakha. Isici esisha senza kube lula ukusebenzisa izinhlelo lapho ikhodi yezigaba ezahlukene ihlukaniswa ngamafayela ahlukene. I-Prog.java: I-class Prog {i-public static void main(String[] args) { Helper.run(); } } Helper.java: class Helper { static void run() { System.out.println("Sawubona!"); }}

    Isibonelo, ukuze uqalise uhlelo oluhlanganisa amafayela amabili okuthi "Prog.java" kanye ne-"Helper.java" sekwanele manje ukuqalisa i-"java Prog.java", ezohlanganisa isigaba se-Prog, ichaze ireferensi yesigaba somsizi, thola futhi uhlanganise ifayela lomsizi i-java futhi ushayele indlela eyinhloko.

  • Kwengezwe ukuqaliswa kwesibili kokuqala Kwezifanekiso Zezintambo, ezisetshenziswe ngaphezu kweyunithi yezinhlamvu namabhlogo wombhalo. Izifanekiso zezintambo zikuvumela ukuthi uhlanganise umbhalo nezisho ezibaliwe neziguquguqukayo ngaphandle kokusebenzisa + opharetha. Ukushintshanisa izinkulumo kwenziwa kusetshenziswa okushintshiwe \{..}, futhi izibambi ezikhethekile zingaxhunywa ukuze kuhlolwe ukulunga kwamanani ashintshiwe. Isibonelo, injini ye-SQL ihlola amanani ashintshwayo kukhodi ye-SQL bese ibuyisela into ye-java.sql.Statement njengokuphumayo, kuyilapho iphrosesa ye-JSON iqapha ukulunga kokushintshwa kwe-JSON futhi ibuyisela i-JsonNode. Umbuzo weyunithi yezinhlamvu = "KHETHA * KUMUNTU p LAPHO p." + impahla + " = '" + inani + "'"; // bekungumbuzo Wesitatimende = SQL."""KHETHA * EMUntwini p LAPHO p.\{property} = '\{value}'"""; // waba
  • Ukubuka kuqala kwesikhombisa kwe-Vector API kungeziwe, okuhlinzeka ngemisebenzi yezibalo ze-vector ezenziwa kusetshenziswa imiyalelo ye-vector kumaphrosesa we-x86_64 kanye ne-AArch64 futhi kuvumela ukusebenza ukuthi kusetshenziswe ngesikhathi esisodwa kumanani amaningi (SIMD). Ngokungafani namandla anikezwe kusihlanganisi se-HotSpot JIT okwenziwa ngokuzenzakalela kwemisebenzi ye-scalar, i-API entsha yenza kube nokwenzeka ukulawula ngokusobala ukwenziwa kwe-vector ukuze kucutshungulwe idatha efanayo.
  • Ukuqaliswa kokuqala kwe-Stream API enwetshiwe yengeziwe esekela ukuchaza imisebenzi yakho emaphakathi, okungase kube usizo ezimeni lapho imisebenzi ekhona eyakhelwe ngaphakathi inganele ekuguquleni idatha oyifunayo. Izibambi zomdabu zixhunywe kusetshenziswa umsebenzi omusha omaphakathi u-Stream::gather(Gatherer), ocubungula izici zokusakaza ngokusebenzisa isibambi esishiwo umsebenzisi kuzo. jshell> Ukusakaza.ka(1,2,3,4,5,6,7,8,9).qoqa(iwindi elishaLilungisiwe(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • Inguqulo yesibili ye-API yokuhlola ye-Structured Concurrency iphakanyiselwe ukuhlolwa, okwenza kube lula ukuthuthukiswa kwezinhlelo zokusebenza ezinezintambo eziningi ngokucubungula imisebenzi eminingi eyenziwa emiculweni ehlukene njengebhulokhi eyodwa.
  • Kwengezwe ukuqaliswa kwesibili kokuqala kwezigaba ezimenyezelwe ngokungagunci kanye nezimo ezingashiwongo zendlela "eyinhloko", engakhipha izimemezelo zomphakathi/ezimile, idlulise ukuphikisana okuningi, nezinye izinhlangano ezihlobene nesimemezelo sekilasi. // bekuyisigaba somphakathi i-HelloWorld {i-public static void main(String[] args) { System.out.println("Sawubona mhlaba!"); } } // manje ungavala okuyinhloko() { System.out.println("Sawubona, Umhlaba!"); }
  • Kwengezwe ukuqaliswa kokubuka kuqala kwesibili Kwamavelu Ahleliwe, okuvumela idatha engaguquleki ukuthi yabiwe kulo lonke uchungechunge kanye nedatha eshintshiwe ngokuphumelelayo phakathi kochungechunge lwezingane (amanani azuzwa njengefa). I-Scoped Values ​​iyathuthukiswa ukuze ithathele indawo intambo yendawo eguquguqukayo futhi isebenza kahle uma kusetshenziswa izinombolo ezinkulu kakhulu zochungechunge olubonakalayo (izinkulungwane noma izigidi zezintambo). Umehluko omkhulu phakathi Kwamavelu Ahlanganisiwe nokuguquguquka kwendawo okucutshungulwa ukuthi eyokuqala ibhalwa kanye, ayikwazi ukushintshwa ngokuzayo, futhi ihlala itholakala kuphela ngesikhathi sokwenziwa kochungechunge.
  • Umqoqi kadoti we-Parallel uthuthukise ukusebenza uma usebenza ngezinhlu ezinkulu zezinto. Ukuthuthukisa kwenze ukuthi kwezinye izivivinyo ngezinhla ezinkulu zezinto ukunciphisa ukubambezeleka ngaphambi kokuqala ukusesha into ngo-20%.

Ukwengeza, ungabona ukushicilelwa kwesibuyekezo endaweni yesikhulumi sokudala izinhlelo zokusebenza ezine-graphic interface JavaFX 22.

Source: opennet.ru

Engeza amazwana