Java SE 15 yatulutsidwa

Pambuyo pa miyezi isanu ndi umodzi ya chitukuko, Oracle anamasulidwa nsanja Java SE15 (Java Platform, Standard Edition 15), pulojekiti yotseguka ya OpenJDK imagwiritsidwa ntchito ngati chiwongolero. Java SE 15 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. Okonzeka kukhazikitsa Java SE 15 builds (JDK, JRE ndi Server JRE) kukonzekera kwa Linux (x86_64), Windows ndi macOS. Kugwiritsa ntchito maumboni opangidwa ndi polojekiti ya OpenJDK Java 15 ndi gwero lotseguka kwathunthu pansi pa layisensi ya GPLv2, ndi GNU ClassPath kupatula zomwe zimalola kulumikizana kwamphamvu ndi malonda.

Java SE 15 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. Nthambi yapitayi ya LTS ya Java 8 idzathandizidwa mpaka Disembala 2020. 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.

Kuchokera zatsopano Java 15 mungathe Mark:

  • Zomangidwa kuthandizira kwa EdDSA (Edwards-Curve Digital Signature Algorithm) yopanga siginecha ya digito RFC 8032). Kukonzekera kwa EdDSA sikudalira nsanja za hardware, kumatetezedwa ku zowonongeka zamagulu (nthawi zonse zowerengera zonse zimatsimikiziridwa) ndipo zimagwira ntchito mofulumira kusiyana ndi kukhazikitsidwa kwa ECDSA komwe kunalembedwa m'chinenero cha C, ndi mlingo womwewo wa chitetezo. Mwachitsanzo, EdDSA pogwiritsa ntchito elliptic curve yokhala ndi kiyi ya 126-bit imawonetsa magwiridwe antchito ofanana ndi ECDSA okhala ndi secp256r1 elliptic curve ndi kiyi ya 128-bit.
  • Zowonjezedwa Thandizo loyesera la makalasi osindikizidwa ndi malo olumikizirana, omwe sangathe kugwiritsidwa ntchito ndi makalasi ena ndi malo olumikizirana 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;

    public losindikizidwa kalasi Mawonekedwe
    zilolezo com.example.polar.Circle,
    com.example.quad.Rectangle,
    com.example.quad.simple.Square {...}

  • Zowonjezedwa thandizo la makalasi obisika omwe sangathe kugwiritsidwa ntchito mwachindunji ndi bytecode ya makalasi ena. Cholinga chachikulu cha makalasi obisika ndichoti chizigwiritsidwa ntchito pazifukwa zomwe zimapanga makalasi panthawi yothamanga ndikuzigwiritsa ntchito mosalunjika, kulingalira. Makalasi oterowo nthawi zambiri amakhala ndi moyo wocheperako, kotero kuwasunga kuti azitha kupezeka m'makalasi opangidwa mokhazikika sikuli koyenera ndipo kumangowonjezera kukumbukira kukumbukira. Makalasi obisika amachotsanso kufunikira kwa API yosakhala yokhazikika sun.misc.Unsafe::defineAnonymousClass, yomwe yakonzedwa kuti ichotsedwe mtsogolo.
  • Malo otolera zinyalala a ZGC (Z Garbage Collector) akhazikika ndipo akudziwika kuti ndi okonzeka kugwiritsidwa ntchito mofala. ZGC imagwira ntchito mopanda phokoso, imachepetsa kuchedwa chifukwa cha kusonkhanitsa zinyalala momwe zingathere (nthawi yosungiramo zinthu pamene mukugwiritsa ntchito ZGC sidutsa 10 ms.) ndipo imatha kugwira ntchito ndi milu yaing'ono ndi yaikulu, kuyambira kukula kwa ma megabytes mazana angapo mpaka ma terabytes ambiri.
  • Kukhazikika ndikupezeka kuti kokonzeka kugwiritsidwa ntchito wamba
    otaya zinyalala Shenandoah, kugwira ntchito ndi kupuma pang'ono (Low-Puuse-Time-Time Zinyalala). Shenandoah idapangidwa ndi Red Hat ndipo ndiyodziwika chifukwa chogwiritsa ntchito algorithm yomwe imachepetsa nthawi yosungiramo zinyalala pochotsa zinyalala molingana ndi kugwiritsa ntchito mapulogalamu a Java. Kukula kwa kuchedwa komwe kunayambika ndi wosonkhanitsa zinyalala kumadziwikiratu ndipo sikudalira kukula kwa mulu, i.e. pa milu ya 200 MB ndi 200 GB kuchedwa kudzakhala kofanana (osatuluka kupitirira 50 ms ndipo kawirikawiri mkati mwa 10 ms);

  • Thandizo lakhazikika ndikulowetsedwa m'chinenerocho mawu midadada - mawonekedwe atsopano a zingwe zomwe zimakulolani kuti muphatikizepo zolemba zamitundu yambiri mumtundu woyambira popanda kugwiritsa ntchito kuthawa kwa zilembo ndikusunga zolemba zoyambirira mu block. Chidacho chimapangidwa ndi zilembo zitatu.

    Mwachitsanzo, m'malo mwa code

    Chingwe html = " Β» +
    "\n\t" + " Β» +
    "\n\t\t" + " \"Java 1 yafika!\" Β» +
    "\n\t" + " Β» +
    "\n" + " ";

    mukhoza kufotokoza:

    String html = """


    Β» Java 1
    ili pano!

    """;

  • Zokonzedwanso Legacy DatagramSocket API. Makhazikitsidwe akale a java.net.DatagramSocket ndi java.net.MulticastSocket asinthidwa ndi kukhazikitsa kwamakono komwe kumakhala kosavuta kuwongolera ndi kukonza, komanso kumagwirizana ndi mitsinje yeniyeni yomwe idapangidwa mkati mwa polojekitiyi. Kutaya. Ngati zotheka kusagwirizana ndi code yomwe ilipo, kukhazikitsa kwakale sikunachotsedwe ndipo kungathe kuthandizidwa pogwiritsa ntchito njira ya jdk.net.usePlainDatagramSocketImpl.
  • Kukhazikitsa kwachiwiri koyeserera kwaperekedwa kufananiza mawonekedwe mu "instanceof" woyendetsa, zomwe zimakulolani kuti mufotokoze nthawi yomweyo kusintha kwapafupi kuti mupeze 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".

    Anali:

    ngati (obj exampleof Gulu) {
    Gulu = (Gulu) obj;
    var entries = gulu.getEntries();
    }

    Tsopano mutha kuchita popanda tanthauzo la "Gulu la Gulu = (Gulu) obj":

    ngati (obj exampleof Gulu gulu) {
    var entries = gulu.getEntries();
    }

  • Zaperekedwa kuyeserera kwachiwiri kwa mawu osakira "mbiri", yomwe imapereka mawonekedwe ophatikizika ofotokozera makalasi, kukulolani kuti mupewe kufotokoza momveka bwino njira zingapo zotsika monga equal (), hashCode () ndi toString () nthawi zomwe deta imasungidwa m'magawo omwe machitidwe awo sasintha. Gulu likamagwiritsa ntchito njira zofananira (), hashCode() ndi toString() njira, zitha kuchita popanda tanthauzo lake:

    mbiri ya anthu BankTransaction (LocalDate tsiku,
    ndalama ziwiri
    Kufotokozera kwa chingwe) {}

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

  • Zaperekedwa kuwunika kwachiwiri kwa Foreign-Memory Access API, kulola mapulogalamu a Java kuti azitha kulowa bwino m'magawo okumbukira kunja kwa mulu wa Java posintha zatsopano za MemorySegment, MemoryAddress, ndi MemoryLayout.
  • Wolumala ndi kuchotseratu njira ya Biased Locking optimization yomwe imagwiritsidwa ntchito mu HotSpot JVM kuti muchepetse kutseka pamutu. Njirayi yasiya kufunikira kwake pamakina omwe ali ndi malangizo a atomiki operekedwa ndi ma CPU amakono, ndipo ndizovuta kwambiri kuti asagwiritse ntchito chifukwa chazovuta zake.
  • Adalengezedwa makina achikale Kusintha kwa RMI, zomwe zidzachotsedwa m'tsogolomu. Zadziwika kuti RMI Activation ndi yachikale, yatsitsidwa m'gulu lachisankho mu Java 8 ndipo sichimagwiritsidwa ntchito masiku ano.
  • Zachotsedwa JavaScript injini Nashorn, yomwe idachotsedwa mu Java SE 11.
  • Zachotsedwa madoko a Solaris OS ndi mapurosesa a SPARC (Solaris/SPARC, Solaris/x64 ndi Linux/SPARC). Kuchotsa madokowa kudzalola anthu ammudzi kufulumizitsa chitukuko cha zinthu zatsopano za OpenJDK popanda kuwononga nthawi kusunga zinthu za Solaris ndi SPARC.

Source: opennet.ru

Kuwonjezera ndemanga