Java SE 14 yatulutsidwa

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

Java SE 14 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 14 mungathe Mark:

  • Anawonjezera chithandizo choyesera 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();
    }

  • Anawonjezera thandizo loyesera la mawu osakira atsopano "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.

  • Zokhazikika ndi kuthandizira kwa mawonekedwe atsopano a mawu oti "switch" kumayatsidwa mwachisawawa, zomwe sizifuna kufotokozera wogwiritsa ntchito "break", kukulolani kuti muphatikize malemba obwerezabwereza ndipo angagwiritsidwe ntchito osati ngati mawonekedwe a wogwiritsa ntchito, komanso ngati mawu.

    var log = kusintha (chochitika) {
    case PLAY -> "Wogwiritsa wayambitsa batani lamasewera";
    kesi IMANI, PITIRIZANI -> "Wogwiritsa akufunika kupuma";
    zosasintha -> {
    Uthenga wa chingwe = event.toString();
    LocalDateTime tsopano = LocalDateTime.now ();
    perekani "Chochitika Chosadziwika" + message +
    Β» adalowa paΒ» + tsopano;
    }
    };

  • Thandizo lowonjezereka loyesera 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. Mu Java 14, mawu otchinga tsopano amathandizira njira yopulumukira "\s" kutanthauzira malo amodzi ndi "\" kuti agwirizane ndi mzere wotsatira (kunyalanyaza mizere yatsopano mukafuna kusindikiza mzere wautali kwambiri). 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!

    """;

  • Zomwe zili m'zidziwitso zodziwikiratu pamene zosiyana zichitika zakulitsidwa NullPointerException. Pomwe m'mbuyomu uthenga wolakwika umangonena za nambala ya mzere, tsopano umafotokoza njira yomwe idayambitsa. Kuwunika kwapamwamba pakali pano kumayatsidwa pokhapokha atakhazikitsidwa ndi mbendera ya "-XX:+ShowCodeDetailsInExceptionMessages". Mwachitsanzo, pofotokoza mbendera iyi, kupatulapo pamzerewu

    var name = user.getLocation().getCity().getName();

    zidzatulutsa uthenga

    Kupatulapo mu ulusi "main" java.lang.NullPointerException: Sizingatheke "Location.getCity()"
    chifukwa mtengo wobwerera wa "User.getLocation()" ndi wopanda pake
    pa NullPointerExample.main(NullPointerExample.java:5):5)

    zomwe zikuwonekeratu kuti njira ya Location.getCity() sinatchulidwe ndipo User.getLocation() inabweza null.

  • Zakhazikitsidwa Kuwonetseratu kwa ntchito ya jpackage, yomwe imakupatsani mwayi wopanga mapulogalamu 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.
  • Kwa wotolera zinyalala wa G1 anawonjezera njira yatsopano yoperekera kukumbukira yomwe imaganizira zenizeni zogwirira ntchito pamakina akuluakulu pogwiritsa ntchito zomangamanga NUM. Wothandizira kukumbukira watsopano amathandizidwa pogwiritsa ntchito mbendera ya "+XX:+UseNUMA" ndipo amatha kusintha kwambiri magwiridwe antchito pamakina a NUMA.
  • Awonjezedwa API yowunikira zochitika za JFR (JDK Flight Recorder), mwachitsanzo pakukonza zowunikira mosalekeza.
  • Awonjezedwa jdk.nio.mapmode module, yomwe imapereka mitundu yatsopano (READ_ONLY_SYNC, WRITE_ONLY_SYNC) popanga ma buffers a mapu (MappedByteBuffer) omwe akuwonetsa kukumbukira kosasinthika (NVM).
  • Zakhazikitsidwa Kuwoneratu kwa Foreign-Memory Access API, kulola mapulogalamu a Java kuti azitha kulowa motetezeka komanso moyenera madera okumbukira kunja kwa mulu wa Java posintha zatsopano za MemorySegment, MemoryAddress, ndi MemoryLayout.
  • Adalengezedwa madoko a Solaris OS ndi SPARC processors (Solaris/SPARC, Solaris/x64 ndi Linux/SPARC) ndi cholinga chochotsa madokowa mtsogolo. Kuchepetsa madokowa kudzalola anthu ammudzi kuti afulumizitse kupanga zatsopano za OpenJDK popanda kuwononga nthawi kusunga mawonekedwe a Solaris- ndi SPARC.
  • Zachotsedwa CMS (Concurrent Mark Sweep) wotolera zinyalala, zomwe zidalembedwa kuti sizinagwire ntchito zaka ziwiri zapitazo ndipo zidakhalabe zosasungidwa (CMS idasinthidwa kalekale ndi wotolera zinyalala wa G1). Komanso, adalengeza anasiya kugwiritsa ntchito njira zophatikizira zosonkhanitsira zinyalala za ParallelScavenge ndi SerialOld (kuthamanga ndi β€œ-XX:+UseParallelGC -XX:-UseParallelOldGC”).
  • Thandizo loyesera la otolera zinyalala la ZGC (Z Garbage Collector) laperekedwa pamapulatifomu a macOS ndi Windows (omwe kale ankangothandizidwa pa Linux). 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.
  • Zachotsedwa Toolkit ndi API yopanikiza mafayilo a JAR pogwiritsa ntchito algorithm ya Pack200.

Source: opennet.ru

Kuwonjezera ndemanga