Java SE 14 vÀljalase

PĂ€rast kuut kuud arendust on ettevĂ”te Oracle vĂ€lja andnud platvormi Java SE 14 (Java Platform, Standard Edition 14), mille referentse rakendusena kasutatakse avatud projekti OpenJDK. Java SE 14 sĂ€ilitab tagasipööratavuse eelnevate Java platvormi versioonide suhtes, kĂ”ik varasemad Java projektid töötavad muutumatult uue versiooni all. Paigaldamiseks valmis Java SE 14 (JDK, JRE ja Server JRE) paketid. valmistatud Linuxile (x86_64), Windowsile ja macOS-ile. OpenJDK projekti raames vĂ€lja töötatud referentsrealiseerimine Java 14 vĂ€ljalaske peale. on tĂ€iesti avatud GPLv2 litsentsi all koos GNU ClassPath eranditega, mis lubavad dĂŒnaamilist sidumist kommertstooteid.

Java SE 14 kuulub tavapĂ€raste tugiperioodidega vĂ€ljalaste hulka, mille uuendused ilmuvad kuni jĂ€rgimise vĂ€ljalaske kuupĂ€evani. Pikaajalise toe (LTS) haruna tuleks kasutada Java SE 11, mille uuendused ilmuvad kuni 2026. aastani. Eelmine LTS-haru Java 8 toetatakse kuni 2020. aasta detsembrini. JĂ€rgmine LTS-vĂ€ljastus on planeeritud 2021. aasta septembriks. Tasub meenutada, et alates Java 10 vĂ€ljalaskest on projekt lĂ€inud ĂŒle uuele arendusprotsessile, mis hĂ”lmab lĂŒhemaid uusi vĂ€ljalaske tsĂŒkleid. Uus funktsionaalsus arendatakse nĂŒĂŒd ĂŒhes pidevalt uuendatavas master-harus, kuhu lisatakse valmis muudatused ja millest eraldatakse kord kuue kuu jooksul uute vĂ€ljalaskete stabiliseerimise harud.

Uusimad uudised Java 14 vÀljalaske peale. saab mÀrgi:

  • Eksperimentaalne tugi on lisatud mustri vastandamine instanceof operaatoris, mis vĂ”imaldab kohe mÀÀrata lokaalse muutuja kontrollitud vÀÀrtusele viitamiseks. NĂ€iteks saab kirjutada "if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}" ilma, et peaks selgelt mÀÀratlema "String s = (String) obj".

    Oli:

    if (obj instanceof Group) {
    Group group = (Group) obj;
    var entries = group.getEntries();
    }

    NĂŒĂŒd saab loobuda mÀÀratlemast "Group group = (Group) obj":

    if (obj instanceof Group group) {
    var entries = group.getEntries();
    }

  • Lisatud eksperimentaalne toetuse uus vĂ”tmesĂ”na «record«, pakkudes kompaktset vormi klasside mÀÀratlemiseks, mis vĂ”imaldab vĂ€ltida erinevate madalama taseme meetodite, nagu equals(), hashCode() ja toString(), selget mÀÀratlemist, juhtudel, kui andmed salvestatakse ainult vĂ€ljadessse, mille kasutus ei muutu. Kui klassis kasutatakse tĂŒĂŒpide pĂ”hjalike meetodite equals(), hashCode() ja toString() realiseerimisi, siis saab neist ilma selgelt mÀÀratlemata hakkama:

    public record BankTransaction(LocalDate date,
    double amount,
    String description) {}

    See deklareerimine toob automaatselt kaasa meetodite equals(), hashCode() ja toString() rakenduste lisamise koos konstruktorite ja andmete muutmise (getterite) juhtimise meetoditega.

  • Standardiseeritud ja vaikimisi sisse lĂŒlitatud uus vorm «switch», mis ei nĂ”ua «break» operaatorit, vĂ”imaldades ĂŒhendada korduvad mĂ€rgid ning kasutada seda mitte ainult operaatorina, vaid ka vĂ€ljendina.

    var log = switch (event) {
    case PLAY -> «Kasutaja on kÀivitanud mÀngimise nupu»;
    case STOP, PAUSE -> «Kasutaja vajab puhkust»;
    default -> {
    String message = event.toString();
    LocalDateTime now = LocalDateTime.now();
    yield «Tundmatu sĂŒndmus » + message +
    » logitud » + now;
    }
    };

  • Laienev eksperimentaalne tugi tekstiplokkidele — uue vormi stringi literaalide toetuseks, mis vĂ”imaldavad hĂ”lmata lĂ€htekoodis mitmerealisi tekstiandeid ilma sĂŒmbolite pĂ”genemiseta ja sĂ€ilitades teksti algse vormingu plokis. Ploki raamistamine toimub kolme topeltkĂ”rge jutumĂ€rgi abil. Java 14-s on tekstiplokkides rakendatud escape-jĂ€rjendite «\s» toetust ĂŒhe tĂŒhiku mÀÀramiseks ja «\» ĂŒhendamiseks jĂ€rgmise reaga (rea vahetuse ignoreerimine, kui on vaja kuvada vĂ€ga pikka rida). NĂ€iteks, selle asemel, et koodi

    String html = «<HTML>» +
    «\n\t» + «<BODY>» +
    «\n\t\t» + «<H1>\»Java 14 on siin!\»</H1>» +
    «\n\t» + «</BODY>» +
    «\n» + «</HTML>»;

    vÔib kirjutada:

    String html = «»»
    <HTML>
    <BODY>
    <H1>»Java 14\
    on kohal!»</H1>
    </BODY>
    </HTML>»»»;

  • Diagnoosimise teave on laiendatud erandite korral NullPointerException. Kui varem viitas veateade ainult rea numbrile, siis nĂŒĂŒd tĂ€psustatakse, milline meetod pĂ”hjustas erandi. Laiendatud diagnostika aktiveeritakse praegu ainult kĂ€ivitamisel lipuga „-XX:+ShowCodeDetailsInExceptionMessages“. NĂ€iteks kui kasutada seda lippu, siis erand real

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

    annab jÀrgmise veateate

    Exception in thread «main» java.lang.NullPointerException: Cannot invoke «Location.getCity()»
    because the return value of «User.getLocation()» is null
    at NullPointerExample.main(NullPointerExample.java:5):5)

    mis aitab mÔista, et meetodit Location.getCity() ei kutsutud, vaid User.getLocation() tagastas nulli.

  • Tehtud eellise versioon jpackage utiliidist, mis vĂ”imaldab luua pakette iseseisvatele (self-contained) Java rakendustele. Tööriist pĂ”hineb JavaFX-i javapackager'il ja vĂ”imaldab luua pakette erinevates formaatides, mis on spetsiifilised erinevatele platvormidele (msi ja exe Windowsile, pkg ja dmg macOS-le, deb ja rpm Linuxile). Pakendid sisaldavad kĂ”iki vajalikke sĂ”ltuvusi.
  • G1 prĂŒgikoguja lisatud uus mĂ€lu jagamise mehhanism, mis arvestab suurte sĂŒsteemide spesifikaga, mille arhitektuur on NUMA. Uus mĂ€lja jagaja aktiveeritakse lipuga «+XX:+UseNUMA» ja see vĂ”imaldab oluliselt tĂ”sta jĂ”udlust NUMA-sĂŒsteemides.
  • Lisatud API jooksva JFR (JDK Flight Recorder) sĂŒndmuste jĂ€lgimiseks, nĂ€iteks pideva monitooringu korraldamiseks.
  • Lisatud modul jdk.nio.mapmode, mis pakub uusi reĆŸiime (READ_ONLY_SYNC, WRITE_ONLY_SYNC) mappitud baitide puutmete (MappedByteBuffer) loomiseks, mis viitavad mittefassaadsele mĂ€lule (NVM).
  • Tehtud eelversioon Foreign-Memory Access API-st, mis vĂ”imaldab Java rakendustel turvaliselt ja tĂ”husalt juurde pÀÀseda Java hulgast vĂ€ljapoole jÀÀvatele mĂ€lualadest, manipuleerides uute abstraktsioonidega MemorySegment, MemoryAddress ja MemoryLayout.
  • Deklaratsioonid ajaloo mĂ”ttes aegunud portidele Solaris OS ja SPARC protsessoritele (Solaris/SPARC, Solaris/x64 ja Linux/SPARC) eesmĂ€rgiga need portid tulevikus eemaldada. Nende portide vananenuks kuulutamine vĂ”imaldab kogukonnal kiirendada uute vĂ”imaluste arendamist OpenJDK-s, raiskamata aega Solaris ja SPARC spetsiifiliste omaduste sĂ€ilitamisele.
  • Eemaldatud jÀÀtme kogumise CMS (Concurrent Mark Sweep), mis kaks aastat tagasi kuulutati aegunuks ja jĂ€i hoolduseta (CMS-i asemel on juba ammu kasutusele vĂ”etud G1 jÀÀtme kogumine). Lisaks, teadaanded aegunud koos kasutama algoritmide kombinatsiooni paralleelse prĂŒgikogumise ja SerialOld (kĂ€ivitamine valikutega „-XX:+UseParallelGC -XX:-UseParallelOldGC”).
  • Eksperimentaalne tugi ZGC (Z Garbage Collector) prĂŒgikogujale on tagatud macOSi ja Windowsi platvormidel (varem oli tugi saadaval ainult Linuxis). ZGC töötab passiivreĆŸiimis, pĂŒĂŒdlikult minimeerides prĂŒgikogumise tĂ”ttu tekkivaid viivitusi (stoppide aeg ZGC kasutamisel ei ĂŒleta 10 ms.) ja suudab töötada nii vĂ€ikeste kui ka suurte hulga kottidega, ulatudes sadadest megabaitidest kuni mitme terabaidini.
  • Eemaldatud tööriistakomplekt ja API JAR-failide tihendamiseks Pack200 algoritmi abil.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster