Java SE 17 útgáfa

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

Java SE 17 er flokkuð sem Long Term Support (LTS) útgáfa, sem mun halda áfram að fá uppfærslur til 2029. Uppfærslum fyrir fyrri Java 16 tímamótaútgáfu hefur verið hætt. Fyrri LTS útibú Java 11 verður stutt til 2026. Næsta LTS útgáfa er áætluð í september 2024. 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.

Nýir eiginleikar í Java 17 eru:

  • Lagt er til tilraunaútfærslu á mynstursamsvörun í „switch“ tjáningum, sem gerir kleift að nota ekki nákvæm gildi í „case“ merki, heldur sveigjanleg sniðmát sem ná yfir röð gilda í einu, sem áður var nauðsynlegt að nota fyrirferðarmikil keðjur „ef...annað“ tjáningar. Að auki hefur „switch“ getu til að höndla NULL gildi. Hlutur o = 123L; String formatted = switch (o) { case Heiltala i -> String.format("int %d", i); case Long l -> String.format("langur %d", l); case Double d -> String.format("tvöfaldur %f", d); case String s -> String.format("String %s", s); sjálfgefið -> o.toString(); };
  • Stöðugur stuðningur fyrir lokuðum flokkum og viðmótum, sem ekki er hægt að nota af öðrum flokkum og viðmótum til að erfa, framlengja eða hnekkja framkvæmdinni. 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 {…}
  • Önnur sýnishorn af Vector API er lögð til, sem býður upp á aðgerðir fyrir vektorútreikninga sem eru keyrðir með vektorleiðbeiningum á x86_64 og AArch64 örgjörvum og gera kleift að beita aðgerðum samtímis á mörg gildi (SIMD). Ólíkt þeim möguleikum sem gefnir eru upp í HotSpot JIT þýðandanum fyrir sjálfvirka vektorvæðingu á mælikvarðaaðgerðum, gerir nýja API það mögulegt að beinlínis stjórna vektormyndun fyrir samhliða gagnavinnslu.
  • Bætti við forskoðun á Foreign Function & Memory API, sem gerir forritum kleift að hafa samskipti við kóða og gögn utan Java keyrslutíma. Nýja API gerir þér kleift að hringja á skilvirkan hátt í aðgerðir sem ekki eru JVM og fá aðgang að minni sem ekki er stjórnað af JVM. Til dæmis er hægt að hringja í aðgerðir frá ytri sameiginlegum bókasöfnum og fá aðgang að ferligögnum án þess að nota JNI.
  • MacOS flutningsvélin sem knýr Java 2D API, sem aftur knýr Swing API, hefur verið aðlöguð til að nota Metal grafík API. MacOS pallurinn heldur áfram að nota OpenGL sjálfgefið og til að virkja Metal stuðning þarf að stilla „-Dsun.java2d.metal=true“ og að minnsta kosti keyra macOS 10.14.x.
  • Bætt við tengi fyrir macOS/AArch64 pallinn (Apple tölvur byggðar á nýju Apple M1 flísunum). Sérstakur eiginleiki tengisins er stuðningur við W^X (Write XOR Execute) minnisverndarkerfi, þar sem ekki er hægt að nálgast minnissíður samtímis til að skrifa og framkvæma. (kóða er aðeins hægt að keyra eftir að slökkt er á ritun og ritun á minnissíðu er aðeins möguleg eftir að framkvæmd er óvirk).
  • Snúið aftur í að nota aðeins strictfp merkingarfræði fyrir fljótandi punktatjáningu. Stuðningur við „sjálfgefin“ merkingarfræði, sem er fáanleg frá útgáfu Java 1.2, hefur verið hætt, þar á meðal einföldun fyrir vinnu á kerfum með mjög gömlum x87 stærðfræðihjálpargjörvum (eftir tilkomu SSE2 leiðbeininganna hvarf þörfin fyrir viðbótar merkingarfræði).
  • Nýjar gerðir af viðmótum við gervi-slembitöluframleiðendur hafa verið innleiddar og fleiri reiknirit hafa verið innleidd til að búa til betri slembitölur. Umsóknum er gefinn kostur á að velja reiknirit til að búa til gervi-slembitölur. Bættur stuðningur við að búa til handahófskennda hlutastrauma.
  • Þvinguð ströng umhjúpun allra JDK innra hluta, að undanskildum mikilvægum API eins og sun.misc.Unsafe. Strangt hjúpun hindrar tilraunir frá kóða til að fá aðgang að innri flokkum, aðferðum og sviðum. Áður var hægt að slökkva á ströngum hjúpunarham með því að nota "--illegal-access=permit" valkostinn, en þetta hefur nú verið úrelt. Forrit sem krefjast aðgangs að innri flokkum, aðferðum og sviðum ættu að skilgreina þau sérstaklega með því að nota --add-opens valmöguleikann eða Add-Opens eigindina í upplýsingaskránni.
  • Forritum er gefinn möguleiki á að skilgreina afserialization síur gagna, sem geta verið samhengisnæmar og valdar á kraftmikinn hátt út frá sérstökum afserialization aðgerðum. Tilgreindar síur eiga við um alla sýndarvélina (JVM-breiður), þ.e. ná ekki aðeins yfir forritið sjálft, heldur einnig þriðja aðila bókasöfn sem notuð eru í forritinu.
  • Swing hefur bætt við javax.swing.filehooser.FileSystemView.getSystemIcon aðferðinni til að hlaða stórum táknum til að bæta notendaviðmótið á High DPI skjám.
  • Java.net.DatagramSocket API veitir stuðning við tengingu við Multicast hópa án þess að þurfa sérstakt java.net.MulticastSocket API.
  • IGV (Ideal Graph Visualizer) tólið hefur verið endurbætt, sem veitir gagnvirka sýn á framsetningu á millikóða í HotSpot VM C2 JIT þýðandanum.
  • Í JavaDoc, á hliðstæðan hátt við javac þýðandann, þegar villa er birt, er númer erfiðu línunnar í frumskránni og staðsetning villunnar tilgreint.
  • Bætti við eiginleikanum native.encoding, sem endurspeglar nafn kerfisstafakóðunar (UTF-8, koi8-r, cp1251, osfrv.).
  • Java.time.InstantSource viðmótinu hefur verið bætt við, sem gerir tímastjórnun kleift án þess að vísa í tímabelti.
  • Bætt við java.util.HexFormat API til að breyta yfir í sextánskur framsetningu og öfugt.
  • Svartholsstillingu hefur verið bætt við þýðandann, sem slekkur á útrýmingaraðgerðum dauðakóða, sem hægt er að nota þegar frammistöðupróf eru framkvæmd.
  • Bætti „-Xlog:async“ valkostinum við Runtime til að taka upp annála í ósamstilltum ham.
  • Þegar komið er á öruggum tengingum er TLS 1.3 sjálfgefið virkt (áður var TLS 1.2 notað).
  • Áður yfirlýst úrelt Applet API (java.applet.Applet*, javax.swing.JApplet), sem var notað til að keyra Java forrit í vafranum, hefur verið fært í flokk áætlaðs til fjarlægingar (týnt mikilvægi eftir að stuðningi lauk fyrir Java viðbótina fyrir vafra).
  • Öryggisstjóri, sem hefur fyrir löngu misst mikilvægi sitt og reyndist ósótt eftir að stuðningur við vafraviðbót lauk, hefur verið færður í flokk þeirra sem áætlað var að fjarlægja.
  • RMI virkjunarbúnaðurinn hefur verið fjarlægður, sem er gamaldags, færður í flokk valmöguleika í Java 8 og er nánast aldrei notaður í nútíma reynd.
  • Tilraunaþýðandi sem styður JIT (just-in-time) fyrir kraftmikla samantekt á Java kóða fyrir HotSpot JVM, sem og aðferð til að safna (AOT, fyrirfram) flokka í vélkóða áður en sýndarvélin er ræst. , hefur verið fjarlægt úr SDK. Þýðandinn var skrifaður á Java og byggður á vinnu Graal verkefnisins. Það er tekið fram að viðhald þýðanda krefst mikillar vinnu, sem er ekki réttlætanlegt þegar engin eftirspurn er frá hönnuði.

Heimild: opennet.ru

Bæta við athugasemd