Java SE 20 útgáfa

Eftir sex mánaða þróun gaf Oracle út Java SE 20 (Java Platform, Standard Edition 20), sem notar open-source OpenJDK verkefnið sem viðmiðunarútfærslu. Að undanskildum því að fjarlægja úrelta eiginleika, heldur Java SE 20 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 20 (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 20 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 20 er flokkuð sem venjuleg 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 17, sem mun halda áfram að fá uppfærslur til 2029. 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 20 eru:

  • Það er bráðabirgðastuðningur fyrir Scoped Values, sem gerir kleift að deila óbreytanlegum gögnum yfir þræði og gögnum skiptast á skilvirkan hátt á milli barnaþráða (gildi eru erfðir). Verið er að þróa umfangsgildi til að skipta um þráð-staðbundnar breytur vélbúnaður og eru skilvirkari þegar mjög mikið magn af sýndarþráðum er notað (þúsundir eða milljónir þráða). Helsti munurinn á umfangsgildum og staðbundnum breytum þráðar er að þær fyrrnefndu eru skrifaðar einu sinni, ekki er hægt að breyta þeim í framtíðinni og eru aðeins tiltækar meðan þráðurinn er keyrður. class Server { final static ScopedValue CURRENT_USER = new ScopedValue(); void þjóna (Beiðni beiðni, Svar svar) { var level = (request. isAuthorized()? ADMIN: GESTUR); var notandi = nýr notandi(stig); ScopedValue.where(CURRENT_USER, notandi).run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); ef (!user.canOpen()) hendir nýjum InvalidUserException(); skila nýrri DBConnection(...); } }
  • Önnur sýnishorn af færslumynstri hefur verið bætt við, sem útvíkkar mynstursamsvörunareiginleikann sem kynntur er í Java 16 til að flokka gildi plötuflokka. Til dæmis: skrá Point(int x, int y) {} static void printSum(Object obj) { if (obj instance of Point p) { int x = px(); int y = py(); System.out.println(x+y); } }
  • Fjórða bráðabirgðaútfærslu á mynstursamsvörun í „switch“ yfirlýsingum hefur verið bætt við, sem gerir „case“ merki kleift að nota ekki nákvæm gildi, heldur sveigjanleg mynstur sem ná yfir röð gilda í einu, sem áður var nauðsynlegt að nota fyrirferðarmikil keðjur „ef...annað“ tjáningar. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer 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(); }; }
  • Önnur bráðabirgðaútfærsla á FFM (Foreign Function & Memory) API hefur verið bætt við, sem gerir þér kleift að skipuleggja samspil Java forrita við utanaðkomandi kóða og gögn með því að hringja í aðgerðir frá ytri bókasöfnum og fá aðgang að minni utan JVM.
  • Önnur sýnishorn af sýndarþráðum hefur verið bætt við, sem eru léttir þræðir sem einfalda mjög ritun og viðhalda afkastamiklum fjölþráðum forritum.
  • Bætti við öðru tilrauna-API fyrir skipulagða hliðstæðu, sem einfaldar þróun fjölþráða forrita með því að meðhöndla mörg verkefni sem keyra í mismunandi þræði sem einn blokk.
  • Fimmtu forskoðun á Vector API hefur verið bætt við, sem býður upp á aðgerðir fyrir vigurú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). Ó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.

Heimild: opennet.ru

Bæta við athugasemd