Eldono de Java SE 20

Post ses monatoj da evoluo, Oracle publikigis Java SE 20 (Java Platform, Standard Edition 20), kiu uzas la OpenJDK malfermfontecan projekton kiel sian referencan efektivigon. Escepte de la forigo de kelkaj malnoviĝintaj funkcioj, Java SE 20 konservas malantaŭan kongruon kun antaŭaj eldonoj de la Java platformo - la plej multaj antaŭe verkitaj Java-projektoj funkcios sen ŝanĝoj kiam ili funkcias sub la nova versio. Pretaj instalaĵoj de Java SE 20 (JDK, JRE kaj Server JRE) estas pretaj por Linukso (x86_64, AArch64), Vindozo (x86_64) kaj macOS (x86_64, AArch64). Disvolvita de la OpenJDK-projekto, la referenca efektivigo de Java 20 estas plene malfermfonta laŭ la permesilo GPLv2, kun GNU ClassPath-esceptoj permesantaj dinamikan ligon kun komercaj produktoj.

Java SE 20 estas klasifikita kiel ĝenerala subtena eldono kaj daŭre ricevos ĝisdatigojn ĝis la venonta eldono. La branĉo Long Term Support (LTS) devus esti Java SE 17, kiu daŭre ricevos ĝisdatigojn ĝis 2029. Ni memorigu vin, ke ekde la liberigo de Java 10, la projekto ŝanĝis al nova evoluprocezo, kio implicas pli mallongan ciklon por la formado de novaj eldonoj. Nova funkcieco nun estas evoluigita en unu konstante ĝisdatigita majstra branĉo, kiu inkluzivas pretajn ŝanĝojn kaj de kiuj branĉoj estas disbranĉigitaj ĉiujn ses monatojn por stabiligi novajn eldonojn.

Novaj funkcioj en Java 20 inkluzivas:

  • Estas prepara subteno por Scoped Values, permesante neŝanĝeblajn datumojn esti dividitaj tra fadenoj kaj datumoj efike interŝanĝitaj inter infanaj fadenoj (valoroj estas hereditaj). Ampleksaj Valoroj estas disvolvitaj por anstataŭigi la mekanismon de faden-lokaj variabloj kaj estas pli efikaj kiam oni uzas tre grandajn nombrojn da virtualaj fadenoj (miloj aŭ milionoj da fadenoj). La ĉefa diferenco inter Skopaj Valoroj kaj faden-lokaj variabloj estas, ke la unuaj estas skribitaj unufoje, ne povas esti ŝanĝitaj estonte kaj restas disponeblaj nur dum la daŭro de la ekzekuto de la fadeno. class Servilo { fina statika ScopedValue CURRENT_USER = nova ScopedValue (); void serve(Peto-peto, Responda respondo) { var level = (peto. isAuthorized()? ADMINISTRO : GASTO); var uzanto = nova Uzanto (nivelo); ScopedValue.where(NUR_UZANTO, uzanto).run(() -> Application.handle(peto, respondo)); } } class DatabaseManager { DBConnection open () { var uzanto = Server.CURRENT_USER.get (); if (!uzanto.canOpen()) ĵetu novan InvalidUserException (); resendi novan DBKonekton(...); }}
  • Dua antaŭprezento de rekordaj ŝablonoj estis aldonita, etendante la ŝablonon-kongruan funkcion enkondukitan en Java 16 por analizi la valorojn de rekordaj klasoj. Ekzemple: registri Punkto(int x, int y) {} static void printSum(Object obj) { if (obj instanceof Point p) { int x = px(); int y = py(); System.out.println(x+y); }}
  • Kvara prepara efektivigo de kongruo de ŝablonoj en deklaroj de "ŝanĝo" estis aldonita, permesante al "kazaj" etikedoj uzi ne precizajn valorojn, sed flekseblajn ŝablonojn, kiuj kovras serion da valoroj samtempe, por kiuj antaŭe estis necese uzi maloportuna. ĉenoj de “se... alie” esprimoj. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Entjero i -> String.format("int %d", i); case Long l -> String.format("longa %d", l); case Double d -> String.format("duobla %f", d); case String s -> String.format("String %s", s); defaŭlta -> o.toString(); }; }
  • Dua prepara efektivigo de la API de FFM (Foreign Function & Memory) estis aldonita, kiu ebligas al vi organizi la interagadon de Java-programoj kun ekstera kodo kaj datumoj per vokado de funkcioj de eksteraj bibliotekoj kaj aliro al memoro ekster la JVM.
  • Dua antaŭrigardo de virtualaj fadenoj estis aldonita, kiuj estas malpezaj fadenoj kiuj multe simpligas skribon kaj konservadon de alt-efikecaj plurfadenaj aplikoj.
  • Aldonis duan eksperimentan API por strukturita paraleleco, kiu simpligas la evoluon de plurfadenaj aplikoj traktante plurajn taskojn kurantajn en malsamaj fadenoj kiel ununuran blokon.
  • Kvina antaŭprezento de la Vektora API estis aldonita, provizante funkciojn por vektoraj kalkuloj, kiuj estas faritaj per vektoraj instrukcioj sur x86_64 kaj AArch64-procesoroj kaj permesas operaciojn esti aplikataj samtempe al multoblaj valoroj (SIMD). Male al la kapabloj disponigitaj en la HotSpot JIT-kompililo por aŭto-vektorizado de skalaraj operacioj, la nova API ebligas eksplicite kontroli vektorigon por paralela datumtraktado.

fonto: opennet.ru

Aldoni komenton