Java SE 14 väljalase

Pärast kuuekuulist arendamist Oracle vabastati platvorm JavaSE 14 (Java platvorm, standardväljaanne 14), kasutatakse avatud lähtekoodiga OpenJDK projekti viiterakendusena. Java SE 14 säilitab tagasiühilduvuse Java platvormi eelmiste väljalasetega; kõik varem kirjutatud Java projektid töötavad uue versiooniga käivitamisel muudatusteta. Installimiseks valmis Java SE 14 järgud (JDK, JRE ja Server JRE) ette valmistatud Linuxi (x86_64), Windowsi ja macOS-i jaoks. OpenJDK projekti poolt välja töötatud viiterakendus Java 14 on GPLv2 litsentsi all täielikult avatud lähtekoodiga GNU ClassPathi erandid, mis võimaldavad dünaamilist linkimist kommertstoodetega.

Java SE 14 on klassifitseeritud üldiseks tugiväljalaseks ja sellele saadetakse värskendusi kuni järgmise väljalaskeni. Pikaajalise toe (LTS) haru peaks olema Java SE 11, mis jätkab värskenduste saamist kuni 2026. aastani. Java 8 eelmist LTS-i haru toetatakse kuni 2020. aasta detsembrini. Järgmine LTS-i väljalase on kavandatud 2021. aasta septembrisse. Tuletame meelde, et alates Java 10 väljalaskmisest läks projekt üle uuele arendusprotsessile, mis tähendab lühemat tsüklit uute väljaannete moodustamiseks. Uus funktsionaalsus on nüüd välja töötatud ühes pidevalt uuenevas põhiharus, mis sisaldab valmis muudatusi ja millest hargnetakse iga kuue kuu tagant uute väljaannete stabiliseerimiseks.

Kohta uuendused Java 14 keegi ei saa märk:

  • Lisatud eksperimentaalne tugi mustri sobitamine operaatoris "instanceof", mis võimaldab teil kontrollitud väärtusele juurdepääsu saamiseks kohe määratleda kohaliku muutuja. Näiteks võite kohe kirjutada "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}", ilma et oleks selgelt määratletud "String s = (String) obj".

    See oli:

    if (Obj instanceof Group) {
    Rühmarühm = (Rühm)obj;
    var kirjed = group.getEntries();
    }

    Nüüd saate hakkama ilma definitsioonita "Grupirühm = (Group) obj":

    if (grupirühma objekt (objekti eksemplar)) {
    var kirjed = group.getEntries();
    }

  • Uuele märksõnale on lisatud eksperimentaalne tugirekord", mis pakub klasside määratlemiseks kompaktset vormi, võimaldades vältida erinevate madala taseme meetodite, nagu võrdsed(), hashCode() ja toString() selgesõnalist määratlemist juhtudel, kui andmeid salvestatakse ainult väljadele, mille käitumine ei muutu. Kui klass kasutab meetodite equals(), hashCode() ja toString() standardrakendusi, saab see hakkama ka ilma nende selgesõnalise määratluseta:

    avalik register BankTransaction(LocalDate kuupäev,
    topeltkogus
    Stringi kirjeldus) {}

    See deklaratsioon lisab lisaks konstruktori- ja geterimeetoditele automaatselt ka meetodite equals(), hashCode() ja toString() juurutused.

  • Standardiseeritud ja vaikimisi on sisse lülitatud uue vormi "lüliti" avaldiste tugi, mis ei nõua operaatori "break" määramist, võimaldab kombineerida korduvaid silte ja seda saab kasutada mitte ainult operaatori kujul, vaid ka operaatorina. väljendus.

    var log = lüliti (sündmus) {
    case PLAY -> "Kasutaja on käivitanud esitusnupu";
    case STOP, PAUSE -> “Kasutaja vajab pausi”;
    vaikimisi -> {
    String teade = event.toString();
    LocalDateTime nüüd = LocalDateTime.now();
    saagikus "Tundmatu sündmus" + teade +
    » sisse logitud » + nüüd;
    }
    };

  • Laiendatud eksperimentaalne tugi tekstiplokid — stringiliteraalide uus vorm, mis võimaldab lisada lähtekoodi mitmerealisi tekstiandmeid ilma tähemärki kasutamata ja ploki teksti algset vormingut säilitamata. Plokk on raamitud kolme topeltjutumärgiga. Java 14-s toetavad tekstiplokid nüüd paojärjestust "\s" ühe tühiku määratlemiseks ja "\" järgmise reaga ühendamiseks (reavahetust ignoreerides, kui peate printima väga pika rea). Näiteks koodi asemel

    String html = " » +
    "\n\t" + " » +
    "\n\t\t" + " \"Java 1 on kohal!\" » +
    "\n\t" + " » +
    "\n" + " ";

    saate täpsustada:

    String html = """


    »Java 1\
    on siin!

    """;

  • Diagnostika infosisu erandite esinemisel on laiendatud NullPointerException. Kui varem viitas veateade ainult rea numbrile, siis nüüd täpsustatakse, milline meetod erandi põhjustas. Täpsem diagnostika on praegu lubatud ainult siis, kui see käivitatakse lipuga „-XX:+ShowCodeDetailsInExceptionMessages”. Näiteks selle lipu määramisel erand real

    var nimi = kasutaja.getLocation().getCity().getName();

    tulemuseks on sõnum

    Erand lõimes "main" java.lang.NullPointerErand: "Location.getCity()" ei saa kutsuda
    kuna "User.getLocation()" tagastusväärtus on null
    aadressil NullPointerExample.main(NullPointerExample.java:5):5)

    mis teeb selgeks, et meetodit Location.getCity() ei kutsutud ja User.getLocation() tagastas nulli.

  • Rakendatud Eelvaade utiliidist jpackage, mis võimaldab teil luua pakette iseseisvate Java-rakenduste jaoks. Utiliit põhineb JavaFX-i javapackageril ja võimaldab teil luua pakette erinevatele platvormidele omases vormingus (msi ja exe Windowsi jaoks, pkg ja dmg macOS-i jaoks, deb ja rpm Linuxi jaoks). Paketid sisaldavad kõiki vajalikke sõltuvusi.
  • G1 prügikoristaja juurde lisatud uus mälujaotusmehhanism, mis võtab arvesse arhitektuuri kasutavate suurte süsteemide töö eripära NUMA. Uus mälujaotur on lubatud lipu "+XX:+UseNUMA" abil ja see võib NUMA-süsteemides jõudlust oluliselt parandada.
  • Lisatud API JFR (JDK Flight Recorder) sündmuste jälgimiseks lennu ajal, näiteks pideva monitooringu korraldamiseks.
  • Lisatud jdk.nio.mapmode moodul, mis pakub uusi režiime (READ_ONLY_SYNC, WRITE_ONLY_SYNC) kaardistatud baitpuhvrite (MappedByteBuffer) loomiseks, mis viitavad püsimälule (NVM).
  • Rakendatud Välismälu juurdepääsu API eelvaade, mis võimaldab Java rakendustel turvaliselt ja tõhusalt juurde pääseda väljaspool Java hunnikut asuvatele mälupiirkondadele, manipuleerides uute MemorySegmenti, MemoryAddressi ja MemoryLayouti abstraktsioonidega.
  • Välja kuulutatud Solaris OS-i ja SPARC protsessorite (Solaris/SPARC, Solaris/x64 ja Linux/SPARC) aegunud pordid eesmärgiga need pordid tulevikus eemaldada. Nende portide kehtetuks tunnistamine võimaldab kogukonnal kiirendada uute OpenJDK funktsioonide väljatöötamist ilma Solarise ja SPARC-i spetsiifiliste funktsioonide hooldamisele aega raiskamata.
  • Kustutatud kaks aastat tagasi vananenuks märgitud ja hooldamata jäänud CMS (Concurrent Mark Sweep) prügikoristaja (CMS asendati ammu G1 prügikogujaga). Pealegi, teatas katkestas ParallelScavenge'i ja SerialOldi prügikogumisalgoritmide kombinatsiooni kasutamise (käivitage suvanditega "-XX:+UseParallelGC -XX:-UseParallelOldGC").
  • ZGC (Z Garbage Collector) prügikoguja eksperimentaalne tugi on pakutud macOS-i ja Windowsi platvormidel (varem toetati ainult Linuxis). ZGC töötab passiivses režiimis, minimeerib prügi kogumisest tingitud latentsust nii palju kui võimalik (seiskumisaeg ZGC kasutamisel ei ületa 10 ms) ja suudab töötada nii väikeste kui ka tohutute hunnikutega, mille suurus ulatub mitmesajast megabaidist kuni mitme terabaidini.
  • Eemaldatud Tööriistakomplekt ja API JAR-failide tihendamiseks Pack200 algoritmi abil.

Allikas: opennet.ru

Lisa kommentaar