Java SE 17 yatulutsidwa

Pambuyo pa miyezi isanu ndi umodzi yachitukuko, Oracle yatulutsa nsanja ya Java SE 17 (Java Platform, Standard Edition 17), yomwe imagwiritsa ntchito pulojekiti yotseguka ya OpenJDK ngati njira yowonetsera. Kupatulapo kuchotsedwa kwa zinthu zina zomwe zidasiyidwa, Java SE 17 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 17 (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 17 ndikotsegula kwathunthu pansi pa laisensi ya GPLv2 yokhala ndi GNU ClassPath kupatula kuti ilole kulumikizana mwamphamvu ndi malonda.

Java SE 17 imayikidwa ngati Kutulutsidwa kwa Nthawi Yaitali Yothandizira (LTS), yomwe ipitilize kulandira zosintha mpaka 2029. Zosintha zakutulutsidwa koyambirira kwa Java 16 zasiyidwa. Nthambi yapita ya LTS ya Java 11 idzathandizidwa mpaka 2026. Kutulutsidwa kotsatira kwa LTS kukukonzekera Seputembara 2024. 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 17 zikuphatikiza:

  • Kukhazikitsa koyeserera kofananira pamawu oti "switch" kumakonzedwa, komwe kumalola kugwiritsa ntchito ziwerengero zenizeni muzolemba za "nkhani", koma ma tempulo osinthika omwe amaphimba mndandanda wazinthu nthawi imodzi, zomwe m'mbuyomu zinali zofunikira kugwiritsa ntchito zovuta. maunyolo a mawu akuti "ngati ... kwina". Kuphatikiza apo, "kusintha" kumatha kuthana ndi ma NULL. chinthu o = 123L; Chingwe chosinthidwa = kusintha (o) { case Integer i -> String.format("int%d", i); mlandu Wautali l -> String.format("kutalika%d", l); mlandu kawiri d -> String.format("double%f", d); kesi Chingwe s -> String.format("Chingwe %s", s); zosasintha -> o.toString(); };
  • Thandizo lokhazikika la makalasi osindikizidwa ndi ma interfaces, omwe sangathe kugwiritsidwa ntchito ndi makalasi ena ndi zolumikizira kuti alandire, kukulitsa, kapena kuwongolera kukhazikitsa. Makalasi osindikizidwa amaperekanso njira yodziwikiratu yoletsa kugwiritsa ntchito gulu lapamwamba kuposa zosintha zofikira, kutengera ndandanda yamagulu omwe amaloledwa kuwonjezera. phukusi com.example.geometry; Zilolezo za mawonekedwe agulu losindikizidwa com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}
  • Chiwonetsero chachiwiri cha Vector API chikuperekedwa, chomwe chimapereka ntchito zowerengera vekitala zomwe zimagwiritsidwa ntchito pogwiritsa ntchito malangizo a vector pa x86_64 ndi purosesa ya 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.
  • Anawonjezera chithunzithunzi cha Foreign Function & Memory API, chomwe chimalola mapulogalamu kuti azilumikizana ndi ma code ndi deta kunja kwa Java. API yatsopano imakulolani kuti muyimbire bwino ntchito zomwe si za JVM ndikupeza makumbukidwe osayendetsedwa ndi JVM. Mwachitsanzo, mutha kuyitanitsa ntchito kuchokera kumalaibulale omwe amagawana nawo akunja ndikupeza zambiri zamachitidwe osagwiritsa ntchito JNI.
  • Injini yoperekera macOS yomwe imapatsa mphamvu Java 2D API, yomwe imapatsa mphamvu Swing API, yasinthidwa kuti igwiritse ntchito Metal graphics API. Pulatifomu ya macOS ikupitirizabe kugwiritsa ntchito OpenGL mwachisawawa, ndipo kuthandizira Thandizo la Chitsulo kumafuna kukhazikitsa "-Dsun.java2d.metal=true" komanso kuyendetsa macOS 10.14.x osachepera.
  • Adawonjezera doko la nsanja ya macOS/AArch64 (makompyuta a Apple otengera tchipisi tatsopano ta Apple M1). Mbali yapadera ya doko ndikuthandizira kwa W ^ X (Lembani XOR Execute) makina otetezera kukumbukira, momwe masamba amakumbukiro sangathe kupezeka nthawi imodzi kuti alembe ndi kuphedwa. (kodi ikhoza kuchitidwa pokhapokha kulembedwa kwatsekedwa, ndipo kulembera ku tsamba lokumbukira kumatheka pokhapokha kuphedwa kwaletsedwa).
  • Kubwereranso kukugwiritsa ntchito semantics ya strictfp pamawu oyandama. Thandizo la semantics "yosasinthika", yomwe ilipo kuyambira kutulutsidwa kwa Java 1.2, yathetsedwa, kuphatikizapo kuphweka kwa machitidwe omwe ali ndi ma coprocessors akale kwambiri a x87 (pambuyo pa kubwera kwa SSE2 malangizo, kufunikira kwa semantics yowonjezera kunasowa).
  • Mitundu yatsopano yolumikizirana ndi majenereta a manambala a pseudorandom yakhazikitsidwa, ndipo ma algorithms owonjezera akhazikitsidwa kuti apangitse manambala mwachisawawa. Mapulogalamu amapatsidwa mwayi wosankha algorithm yopanga manambala a pseudorandom. Thandizo lotsogola lopangira zinthu zosasintha.
  • Kulimbikitsa kutsekereza mwamphamvu kwa onse amkati a JDK, kupatula ma API ovuta monga sun.misc.Unsafe. Kukhazikika kwa encapsulation kumalepheretsa kuyesa kuchokera pamakhodi kuti mupeze makalasi amkati, njira, ndi magawo. M'mbuyomu, njira yotsekera mwamphamvu imatha kuzimitsidwa pogwiritsa ntchito njira ya "--illegal-access=permit", koma izi zatsitsidwa. Mapulogalamu omwe amafunikira mwayi wopeza makalasi amkati, njira, ndi magawo ayenera kutanthauzira momveka bwino pogwiritsa ntchito --add-opens kapena mawonekedwe a Add-Opens mufayilo yowonetsera.
  • Mapulogalamu amapatsidwa mwayi wofotokozera zosefera za deerialization za data, zomwe zimatha kukhudzidwa ndi zochitika komanso kusankhidwa mwamphamvu kutengera ntchito zina za deserialization. Zosefera zomwe zatchulidwazi zimagwira ntchito pamakina onse owoneka bwino (JVM-wide), i.e. sungani pulogalamu yokhayo, komanso malaibulale ena omwe amagwiritsidwa ntchito polemba.
  • Swing wawonjezera njira ya javax.swing.filechooser.FileSystemView.getSystemIcon yokweza zithunzi zazikulu kuti ziwongolere UI pazithunzi za High DPI.
  • API ya java.net.DatagramSocket imapereka chithandizo cholumikizira kumagulu a Multicast popanda kufunikira kosiyana java.net.MulticastSocket API.
  • Chida cha IGV (Ideal Graph Visualizer) chakonzedwa bwino, ndikupereka chithunzithunzi chapakatikati choyimira ma code mu HotSpot VM C2 JIT compiler.
  • Mu JavaDoc, pofanizira ndi javac compiler, cholakwika chikatuluka, kuchuluka kwa mzere wamavuto mufayilo yoyambira ndi pomwe cholakwika chikuwonetsedwa.
  • Onjezani katundu wa native.encoding, wowonetsa dzina la kabisidwe ka zilembo zamakina (UTF-8, koi8-r, cp1251, ndi zina zotero).
  • Mawonekedwe a java.time.InstantSource awonjezedwa, kulola kusokoneza nthawi popanda kutchula nthawi.
  • Anawonjezera java.util.HexFormat API yosinthira kukhala mawonekedwe a hexadecimal ndi mosemphanitsa.
  • Mawonekedwe a blackhole awonjezedwa kwa compiler, yomwe imalepheretsa ntchito zochotsa ma dead-code, zomwe zingagwiritsidwe ntchito poyesa ntchito.
  • Onjezani njira ya "-Xlog: async" ku Runtime kuti mujambule zipika mumayendedwe asynchronous.
  • Mukakhazikitsa zolumikizira zotetezeka, TLS 1.3 imayatsidwa mwachisawawa (kale TLS 1.2 idagwiritsidwa ntchito).
  • Applet API yomwe idalengezedwa kale kuti ndi yachikale (java.applet.Applet*, javax.swing.JApplet), yomwe idagwiritsidwa ntchito poyendetsa mapulogalamu a Java mu msakatuli, yasunthidwa kupita kugulu lazomwe zikuyenera kuchotsedwa (kutayika kofunikira pambuyo potha kwa chithandizo. kwa pulogalamu yowonjezera ya Java ya asakatuli).
  • Security Manager, yemwe wasiya kufunika kwa nthawi yayitali ndipo sanatchulidwe pambuyo pa kutha kwa chithandizo cha plugin ya msakatuli, wasunthidwa m'gulu la omwe akuyenera kuchotsedwa.
  • Dongosolo la RMI Activation lachotsedwa, lomwe ndi lachikale, latsitsidwa m'gulu lachisankho mu Java 8 ndipo silinagwiritsidwe ntchito masiku ano.
  • Wopanga zoyeserera yemwe amathandizira JIT (munthawi yake) pakuphatikiza kosinthika kwa Java code ya HotSpot JVM, komanso njira yopangira kuyembekezera (AOT, pasadakhale) makalasi kukhala makina a makina asanayambe makina enieni. , yachotsedwa ku SDK. Wopangayo adalembedwa ku Java ndikutengera ntchito ya Graal project. Zimadziwika kuti kukonza kwa compiler kumafuna ntchito zambiri, zomwe sizili zomveka ngati palibe chofunikira kuchokera kwa opanga.

Source: opennet.ru

Kuwonjezera ndemanga