Java SE 15 vÀljaanne

PĂ€rast kuut kuud arendust on ettevĂ”te Oracle vĂ€lja andnud platvormi Java SE 15 (Java Platform, Standard Edition 15), mille referentsiks on avatud projekt OpenJDK. Java SE 15 sĂ€ilitab tagasipöörduvuse varasemate Java platvormi versioonidega, mistĂ”ttu kĂ”ik varem kirjutatud Java projektid töötavad uue versiooniga ilma muutmisteta. Paigalduseks valmis Java SE 15 (JDK, JRE ja Server JRE) valmistatud Linuxile (x86_64), Windowsile ja macOS-ile. OpenJDK projekti raames vĂ€lja töötatud referentsrealiseerimine Java 15 on tĂ€iesti avatud GPLv2 litsentsi all koos GNU ClassPath eranditega, mis lubavad dĂŒnaamilist sidumist kommertstooteid.

Java SE 15 kuulub tavapĂ€rase toetuse kategooriasse, mille uuendusi hakatakse vĂ€lja andma kuni jĂ€rgmise versioonini. Pikaajalise toetuse (LTS) haruna tuleks kasutada Java SE 11, mille uuendusi hakatakse vĂ€lja andma kuni 2026. aastani. Eelmine LTS-haru Java 8 on toetatud kuni 2020. aasta detsembrini. JĂ€rgmine LTS-vĂ€ljaanne on plaanis 2021. aasta septembriks. Tuletame meelde, et alates Java 10 vĂ€ljaandest on projekt lĂ€inud ĂŒle uuele arendusprotsessile, mis tĂ€hendab lĂŒhemaid uute vĂ€ljaannete tsĂŒkleid. Uus funktsionaalsus areneb nĂŒĂŒd ĂŒksnes pidevalt vĂ€rskendatavas master-harus, kuhu integreeritakse valmis muudatused ning millest hakatakse iga kuue kuu tagant haru stabiliseerimiseks vĂ€lja lĂ”ikama.

Uusimad uudised Java 15 saab mÀrgi:

  • Sisseehitatud EdDSA (Edwards-KĂ”ver digitaalallkirja algoritmi) loomise algoritmi tugi RFC 8032). EdDSA rakendus ei sĂ”ltu riistvarast, on kaitstud kĂ”rvalkanali rĂŒnnakute eest (tagatud on kĂ”ikide arvutuste konstantne aeg) ja ĂŒletab jĂ”udluses olemasolevat ECDSA rakendust, mis on kirjutatud C keeles, samas kaitse tasemes. NĂ€iteks EdDSA, kasutades 126-bitist elliptilise kĂ”vera vĂ”tme, nĂ€itab ECDSA-ga, mis kasutab elliptilist kĂ”verat secp256r1 ja 128-bitist vĂ”tme, sarnast jĂ”udlust.
  • Lisatud eksperimentaalne tugi pitseeritud ('sealed') klassidele ja liideseidele, mis ei saa teiste klasside ja liideste poolt pĂ€rimisel, laiendamisel vĂ”i teostuse ĂŒletamisel kasutada. Pitseeritud klassid pakuvad ka selgemat viisi superklassi kasutamise piiramise jĂ€rgi, vĂ”rreldes juurdepÀÀsukinnitustega, mis pĂ”hinevad lubatud alamklasside selgel loetlemisel.

    package com.example.geometry;

    public sealed class Shape
    permits com.example.polar.Circle,
    com.example.quad.Rectangle,
    com.example.quad.simple.Square {
}

  • Lisatud toetab peidetud klasse, mida ei saa otse teiste klasside poolt kasutatava bite-koodina kasutada. Peidetud klasside peamine eesmĂ€rk on kasutada neid raamistikudes, mis genereerivad klassid dĂŒnaamiliselt tĂ€itmise ajal ja kasutavad neid kaudselt, lĂ€bi refleksioon. Sellised klassid omavad tavaliselt piiratud elutsĂŒklit, seega nende hooldamine, et juurdepÀÀs saada staatiliselt genereeritud klassidest, ei ole tĂ”hus ja toob kaasa vaid mĂ€lutarbimise suurenemise. Peidetud klassid vĂ”imaldavad ka vĂ€ltida mittestandardse API sun.misc.Unsafe::defineAnonymousClass kasutamist, mille eemaldamine on tulevikus plaanis.
  • Stabiliseeritud ja tunnustatud laialdaseks kasutamiseks olev ZGC (Z Garbage Collector) prĂŒgikoguja. ZGC töötab passiivses reĆŸiimis, et minimeerida prĂŒgikoguja tĂ”ttu tekkivaid viivitusi (ZGC kasutamisel ei ĂŒleta peatumise aeg 10 ms) ja suudab töötada nii vĂ€ikeste kui ka tohutute virnadega, mille suurus ulatub paarist sadast megabaidist kuni mitme terabaidini.
  • Stabiliseeritud ja tunnustatud laialdaseks kasutamiseks
    prĂŒgikoguja Shenandoah, töötav minimaalsete peatumistega (Low-Pause-Time Garbage Collector). Shenandoah on vĂ€lja töötanud Red Hat ja see paistab silma algoritmi kasutamisega, mis vĂ€hendab peatumisaega prĂŒgikogumise ajal, viies puhastustöid paralleelselt Java rakenduste tĂ€itmisega. PrĂŒgikogujaga kaasnevad peatamise ajad on ennustatavad ja ei sĂ”ltu kuhja suurusest, st 200 MB ja 200 GB kuhjade puhul on peatumisajad identsed (ei ĂŒleta 50 ms ja tavaliselt jÀÀvad 10 ms piiresse);
  • Vabiliidud ja keeles on toetust stabiliseeritud tekstiplokkidele — uue vormi stringilitterid, mis vĂ”imaldavad sisaldada lĂ€htekoodis mitme rea tekstilisi andmeid ilma sĂŒmbolite eraldamiseta ja sĂ€ilitades tekstiploki algse vormingu. Ploki ĂŒmber on kĂ”rgsed kolme topelt jutumĂ€rke.

    NĂ€iteks, koodi asemel

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

    vÔib kirjutada:

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

  • Ümber kujundatud API Legacy DatagramSocket. Vanade java.net.DatagramSocket ja java.net.MulticastSocket rakendused on asendatud kaasaegse rakendusega, mis on lihtsam silumisel ja hooldamisel ning ĂŒhilduv virtuaalsete voogudega, mida arendatakse projekti kĂ€igus. Loom. Juhuks, kui olemasoleva koodiga ĂŒhilduvus katkeb, ei eemaldata vana rakendust ja seda saab aktiveerida jdk.net.usePlainDatagramSocketImpl valiku abil.
  • Pakutakse teist katsetusversiooni 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();
    }

  • Pakuti teise katsetusversiooni 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.

  • Ettepanek teine kavandatud Foreign-Memory Access API, mis vĂ”imaldab Java rakendustel ohutult ja tĂ”husalt pÀÀseda juurde mĂ€lu aladele vĂ€ljaspool Java hunnikut, manipuleerides uute abstraktsioonidega MemorySegment, MemoryAddress ja MemoryLayout.
  • Keelatud ja kuulutati vananenuks Biased Locking optimeerimistehnika, mis kohaldati HotSpot JVM-is, et vĂ€hendada lukustustest tingitud ĂŒlepeakaalu. See tehnika on kaotanud oma tĂ€htsuse sĂŒsteemidel, mis kasutavad kaasaegsete CPU-de pakutavaid aatomilisi kĂ€ske, ning on liiga töömahukas oma keerukuse tĂ”ttu.
  • Kuulutatud vananenud mehhanism RMI Activation, mis tĂ”mmatakse tagasi ĂŒhes jĂ€rgnevas vĂ€ljaandes. On mĂ€rgitud, et RMI Activation on aegunud, muudetud valikuks juba Java 8-s ja enamasti ei kasutata seda kaasaegses praktikas.
  • Eemaldatud JavaScripti mootor Nashorn, mis kuulutati Java SE 11-s aegunuks.
  • Eemaldatud portid Solaris OS ja SPARC protsessorite jaoks (Solaris/SPARC, Solaris/x64 ja Linux/SPARC). Nende portide eemaldamine vĂ”imaldab kogukonnal kiirendada uute OpenJDK vĂ”imaluste arendamist, kulutamata aega Solaris ja SPARC spetsiifiliste omaduste sĂ€ilitamiseks.

Allikas: opennet.ru

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