Izdaja Java SE 16

Po šestih mesecih razvoja je Oracle izdal platformo Java SE 16 (Java Platform, Standard Edition 16), ki kot referenčno implementacijo uporablja odprtokodni projekt OpenJDK. Java SE 16 ohranja združljivost s prejšnjimi izdajami platforme Java; vsi prej napisani projekti Java se bodo v novi različici izvajali nespremenjeni. Pripravljene so za namestitev različice Java SE 16 (JDK, JRE in Server JRE). Linux (x86_64, AArch64), Windows и macOSReferenčna implementacija Java 16, ki jo je razvil projekt OpenJDK, je v celoti odprtokodna pod licenco GPLv2 z izjemo GNU ClassPath, ki omogoča dinamično povezovanje s komercialnimi izdelki.

Java SE 16 je razvrščena kot izdaja splošne podpore in bo prejemala posodobitve do naslednje izdaje. Podružnica dolgoročne podpore (LTS) bi morala biti Java SE 11, ki bo prejemala posodobitve do leta 2026. Naslednja izdaja LTS je predvidena za september 2021. Naj vas spomnimo, da je projekt z izdajo Jave 10 prešel na nov razvojni proces, kar pomeni krajši cikel za oblikovanje novih izdaj. Nova funkcionalnost je zdaj razvita v eni stalno posodobljeni glavni veji, ki vključuje že pripravljene spremembe in iz katere se veje razvejajo vsakih šest mesecev za stabilizacijo novih izdaj.

V pripravah na novo izdajo se je razvoj preselil s sistema za nadzor različic Mercurial na Git in platformo za sodelovalni razvoj GitHub. Pričakuje se, da bo selitev izboljšala zmogljivost operacij repozitorija, povečala učinkovitost shranjevanja, omogočila dostop do sprememb v celotni zgodovini projekta, izboljšala podporo za pregled kode in omogočila API-jem za avtomatizacijo potekov dela. Poleg tega je zaradi uporabe Gita in GitHuba projekt privlačnejši za začetnike in razvijalce, ki so vajeni Gita.

Nove funkcije v Javi 16 vključujejo:

  • Dodan eksperimentalni modul jdk.incubator.vector z implementacijo vektorskega API-ja, ki zagotavlja funkcije za vektorske izračune, ki se izvajajo z vektorskimi navodili na procesorjih x86_64 in AArch64 in omogočajo hkratno uporabo operacij za več vrednosti (SIMD). V nasprotju z zmožnostmi, ki jih ponuja prevajalnik HotSpot JIT za samodejno vektorizacijo skalarnih operacij, vam novi API omogoča izrecno nadzorovanje vektorizacije za vzporedno obdelavo podatkov.
  • Kodi JDK in VM HotSpot, napisani v C++, je dovoljena uporaba funkcij, predstavljenih v specifikaciji C++14. Prej so bili dovoljeni standardi C++98/03.
  • ZGC (Z Garbage Collector), ki deluje v pasivnem načinu in čim bolj zmanjša zamude zaradi zbiranja smeti, je dodal možnost vzporedne obdelave nizov niti brez prekinitve aplikacijskih niti. ZGC ima zdaj samo delo, ki zahteva prekinitev, ki ima stalne zakasnitve, ki običajno ne presegajo nekaj sto mikrosekund.
  • Dodana podpora za vtičnice Unix (AF_UNIX) v razrede SocketChannel, ServerSocketChannel in java.nio.channels.
  • Izvedeno pristanišče za LinuxDistribucija Alpine s standardno knjižnico C musl, ki je priljubljena v kontejnerskih, mikroservisnih, oblačnih in vgrajenih okoljih. Predlagana povezava omogoča, da se programi Java v takšnih okoljih izvajajo kot običajne aplikacije. Poleg tega jlink omogoča odstranitev vseh neuporabljenih modulov in ustvarjanje minimalnega okolja, ki zadostuje za zagon aplikacije, kar omogoča ustvarjanje kompaktnih slik, specifičnih za določene aplikacije.
  • Implementiran je bil mehanizem Elastic Metaspace, ki optimizira operacije dodeljevanja in vračanja pomnilnika, ki ga zasedajo metapodatki razreda (metaprostor) v JVM HotSpot. Uporaba Elastic Metaspace zmanjša razdrobljenost pomnilnika, zmanjša stroške nalagalnika razredov in ugodno vpliva tudi na delovanje dolgo delujočih strežniških aplikacij zaradi hitrejšega vračanja pomnilnika, ki ga zasedajo neuporabljeni metapodatki razreda, v operacijski sistem. Za izbiro načina sprostitve pomnilnika po raztovarjanju razredov je na voljo možnost “-XX:MetaspaceReclaimPolicy=(uravnoteženo|agresivno|nobeno)”.
  • Dodana JDK port za sisteme Windows, ki deluje na strojni opremi s procesorji, ki temeljijo na arhitekturi AArch64.
  • Predlagan je bil tretji predogled API-ja za dostop do zunanjega pomnilnika, ki aplikacijam Java omogoča varen in učinkovit dostop do pomnilniških območij zunaj kopice Java z manipulacijo novih abstrakcij MemorySegment, MemoryAddress in MemoryLayout.
  • Implementiran je bil eksperimentalni API za zunanje povezovalce, ki omogoča dostop od Jave do izvorne kode. Skupaj z API-jem za tuji pomnilnik novi programski vmesnik olajša ustvarjanje ovojov prek običajnih knjižnic v skupni rabi.
  • Dodan je bil pripomoček jpackage, ki omogoča ustvarjanje paketov za samostojne aplikacije Java. Pripomoček temelji na javapackagerju podjetja JavaFX in omogoča ustvarjanje paketov v formatih, ki so izvorni za različne platforme (msi in exe za Windows, pakiranje in škoda za macOS, deb in rpm za Linux). Paketi vključujejo vse potrebne odvisnosti.
  • Stroga enkapsulacija vseh notranjih elementov JDK je privzeto omogočena, z izjemo kritičnih API-jev, kot je sun.misc.Unsafe. Vrednost možnosti »--illegal-access« je zdaj privzeto nastavljena na »deny« namesto »permit«, kar bo blokiralo poskuse kode za dostop do večine notranjih razredov, metod in polj. Če želite zaobiti omejitev, uporabite možnost »-illegal-access=permit«.
  • Implementacija ujemanja vzorcev v operatorju »instanceof« je bila stabilizirana, kar vam omogoča, da takoj definirate lokalno spremenljivko za sklicevanje na preverjeno vrednost. Takoj lahko na primer napišete »if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}«, ne da bi eksplicitno definirali »String s = (String) obj«. Bilo je: if (obj instanceof Group) { Group group = (Group) obj; var vnosov = group.getEntries(); } Zdaj lahko storite brez definiranja »Group group = (Group) obj«: if (obj instanceof Group group) { var entries = group.getEntries(); }
  • Implementacija ključne besede "record" je bila stabilizirana in zagotavlja kompaktno obliko za definicije razredov, ki odpravlja potrebo po eksplicitnem definiranju različnih nizkonivojskih metod, kot so equals(), hashCode() in toString() v primerih, ko so podatki shranjeni samo v poljih, s katerimi se ne spreminja. Ko razred uporablja standardne izvedbe metod equals(), hashCode() in toString(), lahko deluje brez njihove eksplicitne definicije: javni zapis BankTransaction(datum lokalnega datuma, dvojni znesek, opis niza) {}

    Ta deklaracija bo poleg metod konstruktorja in pridobivanja samodejno dodala izvedbe metod equals(), hashCode() in toString().

  • Drugi osnutek je predlagan za zapečatene razrede in vmesnike, ki jih drugi razredi in vmesniki ne morejo uporabiti za podedovanje, razširitev ali preglasitev implementacij. Zapečateni razredi zagotavljajo tudi bolj deklarativen način za omejevanje uporabe nadrazreda kot modifikatorji dostopa, ki temelji na eksplicitnem seznamu podrazredov, dovoljenih za razširitev. paket com.example.geometry; javni zapečateni razred Oblika dovoljuje com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}

Vir: opennet.ru

Kupite zanesljivo gostovanje za strani z DDoS zaščito, VPS VDS strežniki 🔥 Kupite zanesljivo spletno gostovanje z zaščito DDoS, VPS VDS strežniki | ProHoster