Kuburitswa kweJava SE 22 chikuva uye OpenJDK 22 yakavhurika referensi kuita

Mushure memwedzi mitanhatu yebudiriro, Oracle yakaburitsa Java SE 22 (Java Platform, Standard Edition 22) chikuva, icho chinoshandisa OpenJDK yakavhurika sosi purojekiti sereferensi yekushandisa. Kunze kwekubviswa kwemamwe maficha akaregwa, Java SE 22 inochengetedza kuenderana nekumashure kuburitswa kweJava papuratifomu-akawanda akanyorwa kare mapurojekiti eJava acharamba achishanda pasina kugadziridzwa kana ichiitwa pasi peiyo vhezheni itsva. Inogadzika inovakwa yeJava SE 22 (JDK, JRE, uye Server JRE) yakagadzirirwa Linux (x86_64, AArch64), Windows (x86_64), uye macOS (x86_64, AArch64). Yakagadzirwa neiyo OpenJDK purojekiti, iyo Java 22 referensi yekumisikidza yakavhurwa sosi pasi peGPLv2 rezinesi ine GNU ClassPath kunze kwekubvumira kubatanidza kune zvigadzirwa zvekutengesa.

Java SE 22 inorongedzerwa seyakajairwa tsigiro kuburitswa uye icharamba ichiwana zvigadziriso kusvika kuburitswa kunotevera. Iro Long Term Support (LTS) bazi rinofanira kunge riri Java SE 21 kana Java SE 17, iyo inogashira zvigadziriso kusvika 2031 na2029, zvichiteerana (inowanzo kuwanikwa kusvika 2028 na2026). Rutsigiro rweruzhinji rwebazi reLTS reJava SE 11 rakapera munaGunyana apfuura, asi rutsigiro rwakawedzerwa ruchaenderera kusvika 2032. Yakawedzerwa rutsigiro rwebazi reLTS reJava SE 8 richaenderera kusvika 2030.

Ngatikuyeuchidzei kuti kutanga nekuburitswa kweJava 10, purojekiti yakachinjira kune imwe nzira yekuvandudza, zvichireva kupfupika kutenderera kwekuumbwa kwezvitsva zvinoburitswa. Kushanda kutsva kwave kugadziridzwa mune rimwe rinogara rakagadziridzwa master bazi, iro rinosanganisira yakagadzirira-yakagadzirwa shanduko uye kubva kune iyo matavi anoiswa matavi mwedzi mitanhatu yega yega kudzikamisa zvitsva zvinoburitswa.

Zvinhu zvitsva muJava 22 zvinosanganisira:

  • Iyo G1 inonhonga marara inosanganisira tsigiro yedunhu pinning, iyo inokutendera kuti ugadzirise kwenguva pfupi nzvimbo yezvinhu zveJava mundangariro kuti zvidzivise kutamiswa nemuunganidzi wemarara uye kubvumira mareferensi ezvinhu izvi kuti apfuure zvakachengeteka pakati peJava nekodhi kodhi. Pinning inobvumidza iwe kudzikisa latency uye kudzivirira kudzima kuunganidzwa kwemarara paunenge uchiita matunhu akakosha eJNI (Java Native Interface) nekodhi yemuno (uchiri kuita zvikamu izvi, iyo JVM haifanirwe kufambisa zvinhu zvakakosha zvine chekuita nazvo kuitira kudzivirira mamiriro erudzi). Pinning inobvisa zvinhu zvakakosha kubva pakuona kwemuunganidzi wemarara, iyo inogona kuramba ichichenesa nzvimbo dzisina kunyorwa.
  • Chinhu chekutanga chawedzerwa kubvumidza mataurirwo kuti atsanangurwe muvaki vasati vadaidza super(...), inoshandiswa kudaidza zvakajeka muvaki wekirasi yevabereki kubva kuanovaka kirasi yakagarwa nhaka kana iwo mataurirwo asingarevi chiitiko chakagadzirwa nemuvaki. class Outer {void hello() {System.out.println("Mhoro"); } kirasi Inner { Inner() {hesi(); super(); }}}
  • Iyo FFM (Foreign Function & Memory) API yakagadziriswa, ichibvumira kupindirana kwezvirongwa zveJava nekodhi yekunze uye data nekufona mabasa kubva kumaraibhurari ekunze uye kuwana ndangariro kunze kweJVM, pasina kushandisa JNI (Java Native Interface).
  • Tsigiro yezvakasiyana zvisina kudomwa nemapateni yakagoneswa - pachinzvimbo chekusashandiswa asi chinodiwa machinjiro uye mapatani pakufona, unogona ikozvino kutsanangura "_" hunhu. // was String pageName = chinja (peji) {kesi GitHubIssuePage(var url, var content, var links, int issueNumber) -> "NYAYA #" + issueNumber; ... }; // ikozvino unokwanisa String pageName = chinja (peji) {kesi GitHubIssuePage(_, _, _, int issueNumber) -> "NYAYA #" + issueNumber; };
  • Kuitwa kwekutanga kweKirasi-Faira API inokurudzirwa kupatsanura, kugadzira, uye kushandura Java kirasi mafaera. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.vaka(classModel.thisClass().asSymbol(), classBuilder -> {ye (ClassElement ce : classModel) {kana (!(ce exampleof MethodModel mm && mm.methodName().stringValue(). startsWith("debug"))) {classBuilder.with(ce);
  • Iyo java utility inopa kugona kumhanyisa zvirongwa zveJava, zvinopihwa muchimiro che akati wandei kodhi mafaera kana precompiled ekirasi maraibhurari, pasina akaparadzana kurongedza mafaera aya uye pasina kugadzirisa iyo kuvaka system. Iyo nyowani inoita kuti zvive nyore kuita zvirongwa umo iyo kodhi yemakirasi akasiyana inopatsanurwa kuita mafaera akasiyana. Prog.java: kirasi Prog {public static void main(String[] args) { Helper.run(); } } Helper.java: class Helper { static void run() { System.out.println("Hello!"); }}

    Semuenzaniso, kumhanyisa chirongwa chine mafaera maviri "Prog.java" uye "Helper.java" ikozvino yakwana kumhanya "java Prog.java", iyo ichaunganidza Prog kirasi, tsanangura chirevo kune Mubatsiri kirasi, tsvaga uye nyora iyo Mubatsiri faira uye kudana nzira huru.

  • Yakawedzera kechipiri yekutanga kuita kweString Templates, inoshandiswa mukuwedzera kune tambo literals uye zvinyorwa zvemavara. String templates inokutendera kuti ubatanidze mavara neakaverengerwa mataurirwo uye zvinosiyana pasina kushandisa + opareta. Kutsiviwa kwezvirevo kunoitwa pachishandiswa zvinotsiva \{..}, uye mabatiro akakosha anogona kubatanidzwa kuti atarise chokwadi chetsika dzakatsiviwa. Semuyenzaniso, injini yeSQL inotarisa ma values ​​arikutsiviwa muSQL kodhi uye inodzorera java.sql.Statement chinhu seyakabuda, ukuwo JSON processor inotarisisa kurongeka kweiyo JSON inotsiva uye inodzosera JsonNode. String query = "SARUDZA * KUBVA Kumunhu p PAPI p." + pfuma + " = '" + kukosha + "'"; // was Statement query = SQL."""Sarudza * KUBVA PAKUPI P.\{property} = '\{value}'"""; // akava
  • Ongororo yechinomwe yeVector API yakawedzerwa, ichipa mabasa ekuverenga vector ayo anoitwa uchishandisa vector rairo pa x86_64 uye AArch64 processors uye inobvumira ma operation kuti ashandiswe panguva imwe chete kune akawanda mazinga (SIMD). Kusiyana nehunyanzvi hwakapihwa muHotSpot JIT compiler ye auto-vectorization ye scalar mashandiro, iyo API nyowani inoita kuti zvikwanise kudzora zvakajeka vectorization yekuenderana data data.
  • Kuitwa kwekutanga kweiyo yakawedzera Stream API yakawedzerwa inotsigira kutsanangura yako yepakati mashandiro, ayo angave anobatsira mumamiriro ezvinhu apo aripo akavakirwa-mukati epakati maitiro asina kukwana kune inodiwa shanduko yedata. Vabati veNative vakabatana vachishandisa iyo nyowani yepakati mashandiro Kuyerera ::kuunganidza(Gatherer), iyo inogadzirisa zvinhu zvekuyerera nekushandisa mushandisi-akatsanangurwa mubati kwavari. jshell> Stream.of(1,2,3,4,5,6,7,8,9).gather(itsva WindowFixed(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]
  • Yechipiri vhezheni yeyekuyedza API yeStructured Concurrency yakarongwa kuti iedzwe, iyo inorerutsa kuvandudza kweakawanda-tambo maapplication nekugadzirisa akawanda mabasa anoitwa mushinda dzakasiyana sebhuroko rimwe chete.
  • Yakawedzera kechipiri kekutanga kushandiswa kwemakirasi akaziviswa zvisina kutaurwa uye asina kudomwa mazita e "main" nzira, iyo inogona kuburitsa pachena/inomira zviziviso, ichipfuura nhevedzano yenharo, uye zvimwe masangano ane chekuita nekirasi declaration. // yaive yeruzhinji kirasi HelloWorld {public static void main(String[] args) {System.out.println("Mhoro nyika!"); } } // ikozvino unogona kubvisa chikuru() {System.out.println("Mhoro, Nyika!"); }
  • Yakawedzera chechipiri chekutarisa kuitiswa kweScoped Values, ichibvumira isingachinjike data kugovaniswa mukati meshinda uye data rakatsinhaniswa zvakanaka pakati petambo dzemwana (tsika dzakagarwa). Scoped Values ​​iri kuvandudzwa kutsiva iyo shinda-yenzvimbo inoshanduka uye inoshanda zvakanyanya kana uchishandisa yakakura kwazvo tambo tambo (zviuru kana mamirioni eshinda). Musiyano mukuru pakati peScoped Values ​​uye shinda-yenzvimbo inosiyana ndeyekuti yekutanga yakanyorwa kamwe chete, haigone kuchinjwa mune ramangwana, uye inoramba iripo chete kwenguva yekuitwa kwetambo.
  • Iyo Parallel muunganidzi wemarara yakavandudza mashandiro kana uchishanda nehurongwa hwakakura hwezvinhu. Optimization yakaita kuti zvikwanisike mune mamwe maedzo ane mahombe akakura ezvinhu kuderedza kunonoka usati watanga kutsvaga chinhu ne20%.

Pamusoro pezvo, iwe unogona kucherechedza kuburitswa kweshanduro kupuratifomu yekugadzira maapplication ane graphical interface JavaFX 22.

Source: opennet.ru

Voeg