Java SE 16 yatulutsidwa

Pambuyo pa miyezi isanu ndi umodzi yachitukuko, Oracle adatulutsa Java SE 16 (Java Platform, Standard Edition 16), yomwe imagwiritsa ntchito pulojekiti yotseguka ya OpenJDK ngati njira yoyambira. Java SE 16 imakhalabe yogwirizana ndi zomwe zidatulutsidwa m'mbuyomu papulatifomu ya Java; ma projekiti onse a Java omwe adalembedwa kale azigwira ntchito popanda zosintha zikakhazikitsidwa pansi pa mtundu watsopano. Zomanga zokonzeka kukhazikitsa za Java SE 16 (JDK, JRE ndi Server JRE) zakonzedwa ku Linux (x86_64, AArch64), Windows ndi macOS. Yopangidwa ndi pulojekiti ya OpenJDK, kukhazikitsa kwa Java 16 ndikotsegula kwathunthu pansi pa layisensi ya GPLv2, kupatulapo GNU ClassPath yomwe imalola kulumikizana kwamphamvu ndi malonda.

Java SE 16 imayikidwa ngati chithandizo chothandizira ndipo ipitilizabe kulandira zosintha mpaka kutulutsidwa kotsatira. Nthambi ya Long Term Support (LTS) iyenera kukhala Java SE 11, yomwe ipitilira kulandira zosintha mpaka 2026. Kutulutsidwa kotsatira kwa LTS kukukonzekera Seputembara 2021. 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.

Pokonzekera kumasulidwa kwatsopano, chitukuko chachoka ku Mercurial version control system kupita ku Git ndi GitHub coloborative development platform. Kusamukaku kukuyembekezeka kupititsa patsogolo magwiridwe antchito a malo osungiramo zinthu, kukulitsa luso losungirako, kupereka mwayi wosintha m'mbiri yonse ya polojekitiyo, kupititsa patsogolo kuthandizira pakuwunikanso ma code, ndikupangitsa ma API kuti azitha kuyendetsa ntchito. Kuphatikiza apo, kugwiritsa ntchito Git ndi GitHub kumapangitsa kuti polojekitiyi ikhale yosangalatsa kwa oyamba kumene komanso opanga omwe adazolowera Git.

Zatsopano mu Java 16 zikuphatikiza:

  • Wowonjezera kuyesa gawo jdk.incubator.vector ndi kukhazikitsa kwa Vector API, yomwe imapereka 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 imakulolani kuti muzitha kuyang'anira vectorization kuti mugwirizane ndi deta.
  • Khodi ya JDK ndi VM HotSpot yolembedwa mu C++ imaloledwa kugwiritsa ntchito zinthu zomwe zakhazikitsidwa mu C++14. M'mbuyomu, C++98/03 miyezo idaloledwa.
  • ZGC (Z Garbage Collector), yomwe imagwira ntchito mosasamala komanso imachepetsa kuchedwa chifukwa chotolera zinyalala momwe ingathere, yawonjezera luso lokonza milu ya ulusi molumikizana popanda kuyimitsa ulusi wofunsira. ZGC tsopano ili ndi ntchito yokhayo yomwe imafuna kuyimitsidwa, yomwe imakhala ndi kuchedwa kosalekeza, kawirikawiri sikudutsa ma microseconds mazana angapo.
  • Thandizo lowonjezera la soketi za Unix (AF_UNIX) ku makalasi a SocketChannel, ServerSocketChannel ndi java.nio.channels.
  • Doko lakhazikitsidwa pakugawa kwa Linux Alpine yokhala ndi laibulale wamba ya C musl, yomwe ndi yotchuka m'malo okhala ndi zotengera, ma microservices, mtambo ndi makina ophatikizidwa. Doko lomwe likufunidwa m'malo oterowo limakupatsani mwayi woyendetsa mapulogalamu a Java ngati ntchito wamba. Kuonjezera apo, pogwiritsa ntchito jlink, mukhoza kuchotsa ma modules onse osagwiritsidwa ntchito ndikupanga malo ochepa okwanira kuti mugwiritse ntchito pulogalamuyi, yomwe imakulolani kuti mupange zithunzi zenizeni zenizeni.
  • Makina a Elastic Metaspace akhazikitsidwa, kukhathamiritsa magwiridwe antchito ogawa ndi kubweza kukumbukira komwe kumakhala metadata yamagulu (metaspace) mu JVM HotSpot. Kugwiritsiridwa ntchito kwa Elastic Metaspace kumachepetsa kugawanika kwa kukumbukira, kumachepetsa kukweza kwa kalasi, komanso kumakhala ndi zotsatira zopindulitsa pakugwira ntchito kwa mapulogalamu a seva kwa nthawi yayitali chifukwa cha kubwerera mofulumira kwa kukumbukira komwe kumakhala metadata yosagwiritsidwa ntchito m'kalasi. Kusankha njira yotulutsira kukumbukira pambuyo potsitsa makalasi, njira "-XX:MetaspaceReclaimPolicy=(balanced|aggressive|none)" imaperekedwa.
  • Doko la JDK lawonjezedwa pamakina a Windows omwe akuyenda pa Hardware okhala ndi ma processor kutengera kapangidwe ka AArch64.
  • Kuwonetseratu kwachitatu kwa Foreign-Memory Access API kwaperekedwa, kulola mapulogalamu a Java kuti azitha kupeza bwinobwino madera okumbukira kunja kwa mulu wa Java poyendetsa zatsopano za MemorySegment, MemoryAddress, ndi MemoryLayout.
  • API yoyeserera ya Foreign Linker yakhazikitsidwa, yopereka mwayi kuchokera ku Java kupita ku code yakomweko. Pamodzi ndi Foreign-Memory API, mawonekedwe atsopano amapulogalamu amapangitsa kuti zikhale zosavuta kupanga zolemba pama library omwe amagawana nawo.
  • Yowonjezera jpackage zofunikira, zomwe zimakupatsani mwayi wopanga ma phukusi a Java omwe muli nokha. Ntchitoyi idakhazikitsidwa ndi javapackager yochokera ku JavaFX ndipo imakupatsani mwayi wopanga mapaketi amitundu yosiyanasiyana (msi ndi exe ya Windows, pkg ndi dmg ya macOS, deb ndi rpm ya Linux). Phukusili lili ndi zonse zofunika kudalira.
  • Kuyika mwamphamvu kwa onse amkati a JDK kumathandizidwa mwachisawawa, kupatula ma API ovuta monga sun.misc.Unsafe. Phindu la "--access-access" njira tsopano yakhazikitsidwa kuti "kukana" m'malo mwa "chilolezo" mwachisawawa, zomwe zidzatsekereza kuyesa kuchokera ku code kuti mupeze makalasi ambiri amkati, njira ndi minda. Kuti mulambalale chiletsocho, gwiritsani ntchito njira ya "-illegal-access=permit".
  • Kukhazikitsa kwa mafananidwe a pateni mu "instanceof" woyendetsa kwakhazikika, zomwe zimakulolani kufotokozera nthawi yomweyo kusintha komweko kuti mutchule mtengo wotsimikiziridwa. Mwachitsanzo, mutha kulemba nthawi yomweyo "ngati (obj exampleof String s && s.length() > 5) {.. s.contains(..) ..}" popanda kufotokoza momveka bwino "String s = (String) obj". Zinali: ngati (obj exampleof Gulu) { Gulu lagulu = (Gulu) obj; var entries = gulu.getEntries(); } Tsopano mutha kuchita popanda kufotokozera "Gulu la Gulu = (Gulu) obj": ngati (obj exampleof Gulu la Gulu) { var entries = group.getEntries(); }
  • Kukhazikitsa kwa mawu ofunikira a "record" kwakhazikika, ndikupereka mawonekedwe ophatikizika a matanthauzidwe am'kalasi omwe amachotsa kufunika kofotokozera momveka bwino njira zingapo zotsika monga equas (), hashCode () ndi toString () pomwe deta imasungidwa. m’minda yokha basi (yomwe siisintha). Gulu likamagwiritsa ntchito njira zofananira (), hashCode() ndi toString() njira, zitha kuchita popanda tanthauzo lake: mbiri ya anthu BankTransaction(LocalDate deti, kuchuluka kwawiri, Kufotokozera kwa String) {}

    Chilengezochi chidzangowonjezera kukhazikitsidwa kwa njira zofananira (), hashCode () ndi toString() kuwonjezera pa njira zomanga ndi getter.

  • Kukonzekera kwachiwiri kumaperekedwa kwa makalasi osindikizidwa ndi malo olumikizirana omwe sangathe kugwiritsidwa ntchito ndi makalasi ena ndi zolumikizira kuti alandire, kukulitsa, kapena kuwongolera zokhazikitsidwa. 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 {…}

Source: opennet.ru

Kuwonjezera ndemanga