Java SE 20 bertsioa

Sei hilabeteko garapenaren ondoren, Oracle-k Java SE 20 (Java Platform, Standard Edition 20) kaleratu zuen, kode irekiko OpenJDK proiektua erreferentziazko inplementazio gisa erabiltzen duena. Ezaugarri zaharkitu batzuk kentzea izan ezik, Java SE 20-k atzerako bateragarritasuna mantentzen du Java plataformaren aurreko bertsioekin - lehen idatzitako Java proiektu gehienek aldaketarik gabe funtzionatuko dute bertsio berriarekin exekutatzen direnean. Java SE 20 (JDK, JRE eta Server JRE) instalatzeko prest dauden eraikuntzak Linux (x86_64, AArch64), Windows (x86_64) eta macOS (x86_64, AArch64) prestatuta daude. OpenJDK proiektuak garatua, Java 20 erreferentziako inplementazioa guztiz irekia da GPLv2 lizentziapean, eta GNU ClassPath-en salbuespenek produktu komertzialekin lotura dinamikoa ahalbidetzen dute.

Java SE 20 ohiko laguntza-oharra gisa sailkatuta dago eta eguneraketak jasotzen jarraituko du hurrengo bertsiora arte. Epe Luzeko Laguntza (LTS) adarrak Java SE 17 izan behar du, eta eguneraketak jasotzen jarraituko du 2029ra arte. Gogora dezagun Java 10 kaleratzetik hasita, proiektua garapen prozesu berri batera aldatu zela, bertsio berrien eraketarako ziklo laburragoa suposatuz. Gaur egun, funtzionalitate berriak etengabe eguneratutako adar nagusi batean garatzen dira, prest egindako aldaketak barne hartzen dituena eta bertatik sei hilabetean behin adarrak adarkatzen dira bertsio berriak egonkortzeko.

Java 20-en eginbide berriak hauek dira:

  • Aldarrikapeneko Balioetarako aurretiazko euskarria dago, eta horri esker datu aldaezinak harietan zehar partekatu daitezke eta harien artean modu eraginkorrean trukatu daitezke datuak (balioak heredatzen dira). Scoped Values ​​garatzen ari dira hari-lokaleko aldagaien mekanismoa ordezkatzeko eta eraginkorragoak dira hari birtual kopuru oso handiak erabiltzen direnean (milaka edo milioika hari). Scoped Values ​​eta hariaren tokiko aldagaien arteko desberdintasun nagusia da lehenak behin idazten direla, ezin direla etorkizunean aldatu eta hariaren exekuzioak irauten duen bitartean bakarrik egongo direla erabilgarri. klase Zerbitzaria { final static ScopedValue CURRENT_USER = new ScopedValue (); void serve(Eskaera eskaera, Erantzunaren erantzuna) { var maila = (eskaera. Baimenduta dago()? ADMIN: GONBIDATUA); var user = Erabiltzaile berria (maila); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(eskaera, erantzuna)); } } class Database Manager { DBConnection open() { var user = Server.CURRENT_USER.get (); if (!user.canOpen()) bota InvalidUserException(); itzuli DBConnection berria(...); }}
  • Erregistro-ereduen bigarren aurrebista bat gehitu da, Java 16-n sartutako ereduak parekatzeko funtzioa zabalduz erregistro-klaseen balioak analizatzeko. Adibidez: grabatu Point(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); }}
  • "Switch" adierazpenetan eredu bat etortzearen aurretiazko laugarren inplementazioa gehitu da, "kasu" etiketak balio zehatzak ez erabiltzea ahalbidetzen duena, baizik eta aldi berean balio sorta bat estaltzen duten eredu malguak, eta horretarako aldez aurretik astunak erabiltzea beharrezkoa zen. β€œbaldin... bestela” esapideen kateak. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format("int %d", i); case Long l -> String.format("luzea %d", l); case d Bikoitza -> String.format("%f bikoitza", d); case String s -> String.format("String %s", s); lehenetsia -> o.toString(); }; }
  • FFM (Foreign Function & Memory) APIaren bigarren aurretiazko inplementazioa gehitu da, eta horri esker, Java programen interakzioa kanpoko kode eta datuekin antola dezakezu kanpoko liburutegietako funtzioak deituz eta JVMtik kanpoko memoria atzituz.
  • Hari birtualen bigarren aurrebista gehitu da, hari arinak dira, asko errazten dutenak idaztea eta errendimendu handiko hari anitzeko aplikazioak mantentzea.
  • Paralelismo egituraturako bigarren API esperimental bat gehitu da, hari anitzeko aplikazioen garapena errazten duena hari ezberdinetan exekutatzen diren hainbat ataza bloke bakar gisa tratatuz.
  • Vector APIaren bosgarren aurrebista gehitu da, x86_64 eta AArch64 prozesadoreetan bektore-argibideen bidez egiten diren kalkulu bektorialetarako funtzioak eskainiz eta balio anitzetan (SIMD) eragiketak aldi berean aplika daitezke. HotSpot JIT konpiladoreak eragiketa eskalarren auto-vektorizaziorako eskaintzen dituen gaitasunek ez bezala, API berriak datu paraleloen prozesamendurako bektoreizazioa esplizituki kontrolatzea ahalbidetzen du.

Iturria: opennet.ru

Gehitu iruzkin berria