Java SE 16 útgáfa

Eftir sex mánaða þróunarferli hefur Oracle gefið út Java SE 16 kerfið (Java Platform, Standard Edition 16), sem notar opinn hugbúnað OpenJDK verkefnið sem viðmiðunarútfærslu. Java SE 16 heldur afturábakssamhæfni við fyrri útgáfur af Java kerfinu; öll fyrri Java verkefni munu keyra óbreytt þegar þau keyra undir nýju útgáfunni. Tilbúnar útgáfur af Java SE 16 (JDK, JRE og Server JRE) eru undirbúnar fyrir... Linux (x86_64, AArch64), Windows и macOSTilvísunarútfærslan fyrir Java 16, sem var þróuð af OpenJDK verkefninu, er að fullu opinn hugbúnaður undir GPLv2 leyfinu með GNU ClassPath undantekningu, sem gerir kleift að tengja saman hefðbundnar vörur á virkan hátt.

Java SE 16 er flokkað sem venjuleg stuðningsútgáfa, með uppfærslum sem gefnar eru út fram að næstu útgáfu. Langtímastuðningsgreinin (LTS) ætti að vera Java SE 11, sem mun fá uppfærslur til ársins 2026. Næsta LTS útgáfa er áætluð í september 2021. Til áminningar, frá og með Java 10, fór verkefnið yfir í nýtt þróunarferli, sem felur í sér styttri útgáfuhringrás. Ný virkni er nú þróuð í einni, stöðugt uppfærðri aðalgrein, sem inniheldur lokið breytingar, og þaðan eru greinar greindar á sex mánaða fresti til að stöðuga nýjar útgáfur.

Til að undirbúa nýju útgáfuna var þróunarferlið flutt úr útgáfustýringarkerfinu Mercurial yfir í Git og samvinnuþróunarvettvanginn GitHub. Gert er ráð fyrir að flutningurinn muni bæta afköst gagnasafna, auka skilvirkni geymslu, veita aðgang að breytingum í gegnum sögu verkefnisins, bæta stuðning við kóðayfirferð og nýta forritaskil (API) fyrir sjálfvirkni verkflæðis. Ennfremur gerir notkun Git og GitHub verkefnið aðlaðandi bæði fyrir nýliða og forritara sem eru vanir Git.

Nýir eiginleikar í Java 16 eru:

  • Tilraunaeiningin jdk.incubator.vector hefur verið bætt við, sem útfærir Vector API. Þetta API býður upp á aðgerðir fyrir vigurútreikninga sem framkvæmdir eru með x86_64 og AArch64 örgjörvavigurleiðbeiningum og gerir kleift að framkvæma samtímis aðgerðir á mörgum gildum (SIMD). Ólíkt sjálfvirkri vigurvæðingu HotSpot JIT þýðandans á skalaraðgerðum, gerir nýja API-ið kleift að stjórna vigurvæðingu fyrir samsíða gagnavinnslu.
  • Nú er heimilt að nota eiginleika sem kynntir voru til sögunnar í C++ forskriftinni fyrir JDK og HotSpot sýndarvélar. Áður var heimilt að nota staðlana C++98/03.
  • ZGC (Z Garbage Collector), sem starfar í óvirkum ham og lágmarkar tafir á sorphirðu eins mikið og mögulegt er, hefur nú getu til að vinna úr þráðatöflum samsíða án þess að fresta forritaþráðum. ZGC safnar nú aðeins þeim verkefnum sem krefjast frestunar og hafa fasta seinkun, venjulega ekki meira en nokkur hundruð míkrósekúndur.
  • Stuðningur við Unix-tengi (AF_UNIX) hefur verið bætt við SocketChannel, ServerSocketChannel og java.nio.channels klasana.
  • Útfærð höfn fyrir LinuxAlpine dreifingin með stöðluðu C bókasafninu musl, sem er vinsælt í gámaumhverfi, örþjónustuumhverfi, skýjaumhverfi og innbyggðum kerfum. Fyrirhuguð flutningsaðferð gerir Java forritum kleift að keyra sem venjuleg forrit í slíku umhverfi. Ennfremur gerir jlink þér kleift að fjarlægja allar ónotaðar einingar og búa til lágmarksumhverfi sem nægir til að keyra forrit, sem gerir kleift að búa til þjappaðar myndir sem eru sértækar fyrir tiltekin forrit.
  • Aðferðin „Elastic Metaspace“ hefur verið innleidd, sem fínstillir úthlutun og endurheimt minnis sem er notað af klasalýsigögnum (metaspace) í HotSpot JVM. Notkun Elastic Metaspace dregur úr sundrun minnis, minnkar kostnað við klasahleðslu og bætir einnig afköst langkeyrandi netþjónsforrita með því að skila minni sem er notað af ónotuðum klasalýsigögnum hraðar til stýrikerfisins. Valkosturinn "-XX:MetaspaceReclaimPolicy=(balanced|aggressive|none)" er í boði til að velja stillingu fyrir endurheimt minnis eftir að klasinn hefur verið affermdur.
  • Bætt við JDK tengi fyrir kerfi Windows, keyrandi á vélbúnaði með örgjörvum sem byggja á AArch64 arkitektúrnum.
  • Þriðja drög að Foreign-Memory Access API er lögð til, sem gerir Java forritum kleift að nálgast minnissvæði utan Java hrúgunnar á öruggan og skilvirkan hátt með því að stjórna nýju abstraktlögunum MemorySegment, MemoryAddress og MemoryLayout.
  • Tilraunakennt Foreign Linker API hefur verið innleitt, sem veitir aðgang að innfæddum kóða úr Java. Samhliða Foreign-Memory API einfaldar þetta nýja API verulega gerð bindinga fyrir sameiginleg bókasöfn.
  • jpackage gagnsemi hefur verið bætt við, sem gerir þér kleift að búa til pakka fyrir sjálfstæð Java forrit. Gagnsemin er byggð á javapackager frá JavaFX og gerir þér kleift að búa til pakka í sniðum sem eru innfædd fyrir ýmis kerfi (msi og exe fyrir ...). Windows, pakkning og skemmdir fyrir macOS, deb og snúninga á mínútu fyrir Linux). Pakkar innihalda allar nauðsynlegar ósjálfstæðir.
  • Strang innlimun allra innri JDK er nú sjálfgefið virk, fyrir utan mikilvæg API eins og sun.misc.Unsafe. Valkosturinn "--illegal-access" er nú sjálfgefið stilltur á "deny" í stað "permit", sem mun loka fyrir aðgang kóða að flestum innri flokkum, aðferðum og reitum. Til að komast framhjá þessari takmörkun skal nota valmöguleikann "--illegal-access=permit".
  • Útfærsla mynstursvörunar í virkjanum „instanceof“ hefur verið stöðugri, sem gerir þér kleift að skilgreina strax staðbundna breytu til að fá aðgang að samsvarandi gildi. Til dæmis er nú hægt að skrifa „if (obj instanceof String s && s.length() > 5) {.. s.contains(..) ..}“ án þess að skilgreina „String s = (String) obj“ sérstaklega. Áður: if (obj instanceof Group) { Group group = (Group) obj; var entries = group.getEntries(); } Nú er hægt að gera það án þess að skilgreina „Group group = (Group) obj“: if (obj instanceof Group group) { var entries = group.getEntries(); }
  • Útfærsla lykilorðsins „record“ hefur verið stöðugri. Þetta lykilorð býður upp á þétta mynd til að skilgreina klasa, sem útilokar þörfina á að skilgreina sérstaklega ýmsar lágstigsaðferðir eins og equals(), hashCode() og toString() þegar gögn eru aðeins geymd í reitum þar sem hegðun þeirra helst óbreytt. Þegar klasi notar sjálfgefnar útfærslur á equals(), hashCode() og toString() getur hann forðast að skilgreina þær sérstaklega: public record BankTransaction(LocalDate date, double amount, String description) {}

    Þ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.

  • Annað drög að innsigluðum flokkum og viðmótum er lagt til, sem banna öðrum flokkum og viðmótum að erfa, útvíkka eða hnekkja útfærslu sinni. Innsiglaðir flokkar bjóða einnig upp á yfirlýsandi leið til að takmarka notkun ofurflokks en aðgangsbreytar, byggt á því að lista skýrt upp þá undirflokka sem leyfðir eru fyrir útvíkkun. pakki com.example.geometry; opinber innsiglaður flokkur Shape leyfir com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}

Heimild: opennet.ru

Kauptu áreiðanlega hýsingu fyrir síður með DDoS vernd, VPS VDS netþjónum 🔥 Kauptu áreiðanlega vefhýsingu með DDoS vörn, VPS VDS netþjónum | ProHoster