Kutulutsidwa kwa nsanja ya Java SE 22 ndi OpenJDK 22 kukhazikitsidwa kotseguka

Pambuyo pa miyezi isanu ndi umodzi yachitukuko, Oracle yatulutsa nsanja ya Java SE 22 (Java Platform, Standard Edition 22), yomwe imagwiritsa ntchito pulojekiti yotseguka ya OpenJDK ngati njira yowonetsera. Kupatulapo kuchotsedwa kwa zinthu zina zomwe zidasiyidwa, Java SE 22 imasungabe kuyanjana ndi zomwe zidatulutsidwa m'mbuyomu papulatifomu ya Java-mapulojekiti ambiri a Java omwe adalembedwa kale azigwirabe ntchito popanda kusinthidwa akamayendetsedwa ndi mtundu watsopano. Zomangamanga 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 22 ndikotsegula kwathunthu pansi pa laisensi ya GPLv2 yokhala ndi GNU ClassPath kupatula kuti ilole kulumikizana mwamphamvu ndi malonda.

Java SE 22 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). Kuthandizira pagulu ku nthambi ya LTS ya Java SE 11 kudatha Seputembala watha, koma chithandizo chokulirapo chidzapitilira mpaka 2032. Thandizo lowonjezera la nthambi ya LTS ya Java SE 8 lipitilira mpaka 2030.

Tikukumbutseni kuti kuyambira ndikutulutsidwa kwa Java 10, pulojekitiyi idasinthiratu kunjira yatsopano yachitukuko, kutanthauza kuti kufupikitsa kupangidwa kwatsopano. Kugwira ntchito kwatsopano kumapangidwa munthambi imodzi yosinthidwa mosalekeza, yomwe imaphatikizapo zosintha zomwe zakonzedwa kale komanso zomwe nthambi zake zimayikidwa miyezi isanu ndi umodzi iliyonse kuti zikhazikitse zatsopano.

Zatsopano mu Java 22 zikuphatikiza:

  • Wotolera zinyalala wa G1 amaphatikizanso kuthandizira kuwongolera dera, komwe kumakupatsani mwayi wokonza kwakanthawi komwe zinthu za Java zili pamtima kuti musasunthidwe ndi otolera zinyalala ndikulola kuti zonena za zinthu izi zidutsedwe bwino pakati pa Java ndi ma code awo. Pinning imakupatsani mwayi wochepetsera kuchedwa ndikupewa kuletsa kusonkhanitsa zinyalala pochita madera ovuta a JNI (Java Native Interface) ndi code yachibadwidwe (pamene mukuchita magawowa, JVM sayenera kusuntha zinthu zovuta zomwe zimagwirizana nazo kuti zipewe mikhalidwe yamtundu). Pinning imachotsa zinthu zovuta kuti zisamawonedwe ndi zinyalala, zomwe zingapitirize kuyeretsa malo osasindikizidwa.
  • Choyambirira chawonjezedwa kuti chilole kuti mawu atchulidwe mwa omanga asanayitane super(...), omwe amagwiritsidwa ntchito kutchula omanga kalasi ya makolo momveka bwino kuchokera kwa womanga kalasi yobadwa nawo ngati mawuwo sakunena za chochitika chopangidwa ndi womanga. class Outer {void moni() { System.out.println("Moni"); } kalasi Inner { Mkati () { moni (); wapamwamba (); }}}
  • FFM (Foreign Function & Memory) API yakhazikika, kulola kuyanjana kwa mapulogalamu a Java ndi code yakunja ndi deta poyitana ntchito kuchokera ku malaibulale akunja ndi kupeza kukumbukira kunja kwa JVM, popanda kugwiritsa ntchito JNI (Java Native Interface).
  • Thandizo pazosintha zomwe sizinatchulidwe mayina ndi zofananira zathandizidwa - m'malo mwazosintha zosagwiritsidwa ntchito koma zofunikira pakuyimba, mutha kufotokoza za "_". // was String pageName = switch (tsamba) { case GitHubIssuePage(var url, var content, var links, int issueNumber) -> "ISSUE #" + issueNumber; ...}; // tsopano mutha String pageName = switch (tsamba) { case GitHubIssuePage(_, _, _, int issueNumber) -> "NKHANI #" + issueNumber; };
  • Kukhazikitsa koyambirira 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(). startWith("debug"))) {classBuilder.with(ce);
  • Chida cha java chimapereka mwayi woyendetsa mapulogalamu a Java, operekedwa ngati mafayilo angapo amtundu kapena malaibulale opangidwa kale, osapanga padera mafayilowa komanso osakonza dongosolo lomanga. Zatsopanozi zimapangitsa kuti zikhale zosavuta kuyendetsa mapulogalamu omwe ma code a magulu osiyanasiyana amagawidwa m'mafayilo osiyana. Prog.java: kalasi Prog { public static void main(String[] args) { Helper.run(); } } Helper.java: Wothandizira kalasi { static void run() { System.out.println("Moni!"); }}

    Mwachitsanzo, kuyendetsa pulogalamu yomwe ili ndi mafayilo awiri "Prog.java" ndi "Helper.java" tsopano ndi yokwanira kuyendetsa "java Prog.java", yomwe idzaphatikize kalasi ya Prog, kutanthauzira kutchulidwa kwa Gulu la Wothandizira, pezani ndikuphatikiza fayilo ya Helper java ndikuyimbira njira yayikulu.

  • Anawonjezera kukhazikitsidwa kwachiwiri koyambilira kwa String Templates, kukhazikitsidwa kuwonjezera pa zingwe zenizeni ndi midadada. Ma templates a zingwe amakulolani kuti muphatikize mawu ndi mawu owerengeka ndi zosintha popanda kugwiritsa ntchito + woyendetsa. Kusintha kwa mawu kumachitika pogwiritsa ntchito zoloweza m'malo \{..}, ndipo othandizira apadera amatha kulumikizidwa kuti awone kulondola kwazomwe zasinthidwa. Mwachitsanzo, injini ya SQL imayang'ana zomwe zikusinthidwa kukhala SQL code ndikubwezera chinthu cha java.sql.Statement monga zotuluka, pomwe purosesa ya JSON imayang'anira kulondola kwa zolowa m'malo mwa JSON ndikubweza JsonNode. Funso lachingwe = "SAKANI * KWA Munthu p KOMWE p." + katundu + " = '" + mtengo + "'"; // anali Statement query = SQL."""SANKHANI * KWA Munthu p KOMWE p.\{property} = '\{value}'"""; // anakhala
  • Chiwonetsero chachisanu ndi chiwiri cha Vector API chawonjezeredwa, kupereka ntchito zowerengera vekitala zomwe zimachitidwa 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.
  • Kukhazikitsa koyambirira kwa Stream Stream API yawonjezedwa yomwe imathandizira kufotokozera ntchito zanu zapakatikati, zomwe zitha kukhala zothandiza ngati ntchito zomwe zakhazikitsidwa kale sizikwanira pakusintha kwa data 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]
  • Mtundu wachiwiri wa API yoyesera ya Structured Concurrency yaperekedwa kuti iyesedwe, yomwe imathandizira kupanga mapulogalamu amitundu yambiri pokonza ntchito zingapo zomwe zimachitidwa mumizere yosiyanasiyana ngati chipika chimodzi.
  • Anawonjezeranso kukhazikitsidwa kwachiwiri 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!"); }
  • Anawonjezeranso kuwonetsetsa kwachiwiri kwa Scoped Values, kulola kuti data yosasinthika igawidwe pamitumbo yonse ndikusinthana 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.
  • Wotolera zinyalala wa Parallel wachita bwino pogwira ntchito ndi zinthu zambiri. Kukhathamiritsa kunapangitsa kuti muyesedwe ena ndi zinthu zazikuluzikulu zichepetse kuchedwa musanayambe kusaka chinthu ndi 20%.

Kuphatikiza apo, mutha kuwona kusindikizidwa kwa zosintha papulatifomu popanga mapulogalamu okhala ndi mawonekedwe a JavaFX 22.

Source: opennet.ru

Kuwonjezera ndemanga