Java SE 16 útgáfa

Eftir sex mánaða þróun gaf Oracle út Java SE 16 (Java Platform, Standard Edition 16), sem notar OpenJDK verkefnið sem viðmiðunarútfærslu. Java SE 16 heldur afturábakssamhæfni við fyrri útgáfur af Java pallinum; öll áður skrifuð Java verkefni munu virka án breytinga þegar þau eru hleypt af stokkunum undir nýju útgáfunni. Tilbúnar uppsetningargerðir af Java SE 16 (JDK, JRE og Server JRE) eru útbúnar fyrir Linux (x86_64, AArch64), Windows og macOS. Þróuð af OpenJDK verkefninu, Java 16 tilvísunarútfærslan er að fullu opinn uppspretta undir GPLv2 leyfinu, með GNU ClassPath undantekningum sem leyfa kraftmikla tengingu við auglýsingavörur.

Java SE 16 er flokkuð sem almenn stuðningsútgáfa og mun halda áfram að fá uppfærslur fram að næstu útgáfu. Útibúið fyrir langtímastuðning (LTS) ætti að vera Java SE 11, sem mun halda áfram að fá uppfærslur til 2026. Næsta LTS útgáfa er áætluð í september 2021. Við skulum minna þig á að frá og með útgáfu Java 10 skipti verkefnið yfir í nýtt þróunarferli, sem gefur til kynna styttri lotu fyrir myndun nýrra útgáfur. Ný virkni er nú þróuð í einni stöðugt uppfærðri aðalútibúi, sem felur í sér tilbúnar breytingar og þaðan er útibúum greint á sex mánaða fresti til að koma á stöðugleika í nýjum útgáfum.

Í undirbúningi fyrir nýju útgáfuna hefur þróun færst frá Mercurial útgáfustýringarkerfinu yfir í Git og GitHub samvinnuþróunarvettvanginn. Búist er við að flutningurinn muni bæta árangur geymsluaðgerða, auka skilvirkni geymslu, veita aðgang að breytingum í gegnum sögu verkefnisins, bæta stuðning við endurskoðun kóða og gera API kleift að gera verkflæði sjálfvirkt. Að auki gerir notkun Git og GitHub verkefnið meira aðlaðandi fyrir byrjendur og forritara sem eru vanir Git.

Nýir eiginleikar í Java 16 eru:

  • Bætti við tilraunareiningu jdk.incubator.vector með útfærslu á Vector API, sem býður upp á aðgerðir fyrir vektorútreikninga sem eru gerðir með vektorleiðbeiningum á x86_64 og AArch64 örgjörvum og gera kleift að beita aðgerðum samtímis á mörg gildi (SIMD). Öfugt við möguleikana sem gefnir eru upp í HotSpot JIT þýðandanum fyrir sjálfvirka vektorvæðingu á mælikvarðaaðgerðum, gerir nýja API þér kleift að stjórna vektormyndun fyrir samhliða gagnavinnslu.
  • JDK og VM HotSpot kóða skrifaður í C++ er leyft að nota eiginleika sem kynntir eru í C++14 forskriftinni. Áður voru C++98/03 staðlar leyfðir.
  • ZGC (Z Garbage Collector), sem starfar í óvirkri stillingu og lágmarkar tafir vegna sorpsöfnunar eins mikið og mögulegt er, hefur bætt við möguleikanum á að vinna þráðarstafla samhliða án þess að gera hlé á forritsþráðum. ZGC hefur nú aðeins vinnu sem krefst fjöðrunar, sem hefur stöðugar tafir, venjulega ekki yfir nokkur hundruð míkrósekúndur.
  • Bætti við stuðningi fyrir Unix-innstungur (AF_UNIX) við flokkana SocketChannel, ServerSocketChannel og java.nio.channels.
  • Gátt hefur verið útfært fyrir Linux dreifinguna Alpine með venjulegu C bókasafninu musl, sem er vinsælt í umhverfi fyrir gáma, örþjónustur, ský og innbyggð kerfi. Fyrirhuguð höfn í slíku umhverfi gerir þér kleift að keyra Java forrit eins og venjuleg forrit. Að auki, með því að nota jlink, geturðu fjarlægt allar ónotaðar einingar og búið til lágmarksumhverfi sem nægilegt er til að keyra forritið, sem gerir þér kleift að búa til forritssértækar smámyndir.
  • Elastic Metaspace vélbúnaðurinn hefur verið innleiddur, sem hámarkar úthlutun og skil á minni sem er upptekið af lýsigögnum flokka (metaspace) í JVM HotSpot. Notkun Elastic Metaspace dregur úr sundrun minni, dregur úr kostnaði við hleðslutæki fyrir flokka og hefur einnig jákvæð áhrif á afköst langvinnra netþjónaforrita vegna hraðari endurkomu minnis sem er upptekið af ónotuðum lýsigögnum bekkjarins til stýrikerfisins. Til að velja minnisútgáfustillingu eftir að flokkar hafa verið afhlaðnir er valmöguleikinn „-XX:MetaspaceReclaimPolicy=(balanced|aggressive|none)“ í boði.
  • JDK tengi hefur verið bætt við fyrir Windows kerfi sem keyra á vélbúnaði með örgjörvum sem byggja á AArch64 arkitektúr.
  • Þriðja sýnishornið af Foreign-Memory Access API hefur verið lagt til, sem gerir Java forritum kleift að nálgast minnissvæði utan Java hrúgunnar á öruggan og skilvirkan hátt með því að vinna með nýju MemorySegment, MemoryAddress og MemoryLayout útdrætti.
  • Tilraunakennt Foreign Linker API hefur verið innleitt sem veitir aðgang frá Java að innfæddum kóða. Ásamt Foreign-Memory API gerir nýja forritunarviðmótið það mun auðveldara að búa til umbúðir yfir hefðbundin sameiginleg bókasöfn.
  • Bætti við jpackage tólinu, sem gerir þér kleift að búa til pakka fyrir sjálfstætt Java forrit. Tækið er byggt á javapackager frá JavaFX og gerir þér kleift að búa til pakka á sniðum sem eru innfædd á ýmsum kerfum (msi og exe fyrir Windows, pkg og dmg fyrir macOS, deb og rpm fyrir Linux). Pakkarnir innihalda allar nauðsynlegar ósjálfstæði.
  • Strangt umhjúpun allra JDK innra hluta er sjálfgefið virkt, að undanskildum mikilvægum API eins og sun.misc.Unsafe. Gildi valmöguleikans „--ólöglegur-aðgangur“ er nú sjálfgefið stillt á „neita“ í stað „leyfa“, sem mun loka fyrir tilraunir frá kóða til að fá aðgang að flestum innri flokkum, aðferðum og sviðum. Til að komast framhjá takmörkuninni skaltu nota „-ólöglegt-aðgang=leyfi“ valkostinn.
  • Innleiðing mynstursamsvörunar í „tilviki“ rekstraraðila hefur verið stöðug, sem gerir þér kleift að skilgreina staðbundna breytu strax til að vísa til merkt gildi. Til dæmis geturðu skrifað strax “if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}” án þess að skilgreina sérstaklega “String s = (String) obj”. Var: if (obj instanceof Group) { Group group = (Group) obj; var entries = group.getEntries(); } Nú geturðu gert það án þess að skilgreina “Group group = (Group) obj”: if (obj instanceof Group group) { var entries = group.getEntries(); }
  • Útfærslan á „record“ lykilorðinu hefur verið stöðug, sem gefur þétt form fyrir flokkaskilgreiningar sem útilokar þörfina á að skilgreina beinlínis ýmsar lágstigsaðferðir eins og equals(), hashCode() og toString() í þeim tilvikum þar sem gögn eru geymd. aðeins á sviðum sem það breytist ekki með. Þegar flokkur notar staðlaðar útfærslur á equals(), hashCode() og toString() aðferðunum, getur hann verið án skýrrar skilgreiningar þeirra: opinber skrá BankTransaction(LocalDate dagsetning, tvöföld upphæð, Strengjalýsing) {}

    Þessi yfirlýsing mun sjálfkrafa bæta við útfærslum á equals(), hashCode() og toString() aðferðunum til viðbótar við smíða- og getteraðferðirnar.

  • Önnur drög eru lögð fyrir lokaða flokka og viðmót sem ekki er hægt að nota af öðrum flokkum og viðmótum til að erfa, framlengja eða hnekkja útfærslum. Lokaðir flokkar veita einnig yfirlýsandi leið til að takmarka notkun ofurflokks en aðgangsbreytingar, byggt á því að skrá sérstaklega undirflokka sem leyfilegt er að framlengja. pakki com.example.geometry; opinber lokaður flokkur Lögun leyfir com.example.polar.Circle, com.example.quad.Retangle, com.example.quad.simple.Square {…}

Heimild: opennet.ru

Bæta við athugasemd