Paglabas ng Java SE 20

Pagkatapos ng anim na buwan ng pag-unlad, inilabas ng Oracle ang platform ng Java SE 20 (Java Platform, Standard Edition 20), na gumagamit ng OpenJDK open source na proyekto bilang isang reference na pagpapatupad. Maliban sa pag-alis ng ilang mga hindi na ginagamit na feature, ang Java SE 20 ay nagpapanatili ng backward compatibility sa mga nakaraang release ng Java platformβ€”ang karamihan sa mga naunang naisulat na mga proyekto sa Java ay gagana pa rin nang walang pagbabago kapag pinapatakbo sa ilalim ng bagong bersyon. Ang mga mai-install na build ng Java SE 20 (JDK, JRE, at Server JRE) ay inihanda para sa Linux (x86_64, AArch64), Windows (x86_64), at macOS (x86_64, AArch64). Binuo ng proyekto ng OpenJDK, ang pagpapatupad ng Java 20 reference ay ganap na open source sa ilalim ng lisensya ng GPLv2 na may mga pagbubukod sa GNU ClassPath upang payagan ang dynamic na pag-link sa mga komersyal na produkto.

Ang Java SE 20 ay ikinategorya bilang isang regular na release ng suporta, na may mga update na ilalabas bago ang susunod na release. Ang sangay ng Long Term Support (LTS) ay dapat na Java SE 17, na makakatanggap ng mga update hanggang 2029. Alalahanin na simula sa paglabas ng Java 10, lumipat ang proyekto sa isang bagong proseso ng pag-unlad, na nagpapahiwatig ng isang mas maikling cycle para sa pagbuo ng mga bagong release. Binubuo na ngayon ang bagong functionality sa isang master branch na patuloy na ina-update, na isinasama ang mga nakumpleto nang pagbabago at kung saan ang mga branch ay sinasanga tuwing anim na buwan upang patatagin ang mga bagong release.

Kasama sa mga bagong feature sa Java 20 ang:

  • Mayroong paunang suporta para sa Scoped Values, na nagbibigay-daan sa hindi nababagong data na maibahagi sa mga thread at mahusay na pagpapalitan ng data sa pagitan ng mga child thread (namana ang mga value). Ang Mga Saklaw na Halaga ay binuo upang palitan ang mekanismo ng thread-local na mga variable at mas mahusay kapag gumagamit ng napakaraming virtual na mga thread (libo o milyon-milyong mga thread). Ang pangunahing pagkakaiba sa pagitan ng Mga Saklaw na Halaga at thread-local na mga variable ay ang dating ay nakasulat nang isang beses, hindi mababago sa hinaharap, at mananatiling available lamang sa tagal ng pagpapatupad ng thread. class Server { final static ScopedValue CURRENT_USER = bagong ScopedValue(); void serve(Request request, Response response) { var level = (request. isAuthorized()? ADMIN : GUEST); var user = bagong User(level); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(request, response)); } } class DatabaseManager { DBConnection open() { var user = Server.CURRENT_USER.get(); kung (!user.canOpen()) magtapon ng bagong InvalidUserException(); ibalik ang bagong DBConnection(...); } }
  • Ang pangalawang preview ng mga pattern ng record ay idinagdag, na pinalawak ang tampok na pagtutugma ng pattern na ipinakilala sa Java 16 upang i-parse ang mga halaga ng mga klase ng record. Halimbawa: record 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); } }
  • Ang ikaapat na paunang pagpapatupad ng pagtutugma ng pattern sa mga pahayag na "switch" ay idinagdag, na nagpapahintulot sa mga label na "case" na gumamit ng hindi eksaktong mga halaga, ngunit nababaluktot na mga pattern na sumasaklaw sa isang serye ng mga halaga nang sabay-sabay, kung saan dati ay kinakailangan na gumamit ng masalimuot tanikala ng mga ekspresyong β€œkung...iba pa”. static String formatterPatternSwitch(Object obj) { return switch (obj) { case Integer i -> String.format("int %d", i); case Long l -> String.format("long %d", l); case Double d -> String.format("double %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; }
  • Ang pangalawang paunang pagpapatupad ng FFM (Foreign Function & Memory) API ay idinagdag, na nagbibigay-daan sa iyong ayusin ang pakikipag-ugnayan ng mga Java program na may panlabas na code at data sa pamamagitan ng mga function ng pagtawag mula sa mga panlabas na aklatan at pag-access ng memorya sa labas ng JVM.
  • Ang pangalawang preview ng mga virtual na thread ay naidagdag, na mga magaan na thread na lubos na nagpapasimple sa pagsulat at pagpapanatili ng mataas na pagganap ng mga multi-threaded na application.
  • Nagdagdag ng pangalawang pang-eksperimentong API para sa structured parallelism, na pinapasimple ang pagbuo ng mga multi-threaded na application sa pamamagitan ng pagtrato sa maraming gawain na tumatakbo sa iba't ibang mga thread bilang isang bloke.
  • Ang ikalimang preview ng Vector API ay naidagdag, na nagbibigay ng mga function para sa mga kalkulasyon ng vector na ginagawa gamit ang mga tagubilin ng vector sa x86_64 at AArch64 na mga processor at pinapayagan ang mga operasyon na mailapat nang sabay-sabay sa maramihang mga halaga (SIMD). Hindi tulad ng mga kakayahan na ibinigay sa HotSpot JIT compiler para sa auto-vectorization ng scalar operations, ginagawang posible ng bagong API na tahasang kontrolin ang vectorization para sa parallel na pagproseso ng data.

Pinagmulan: opennet.ru

Magdagdag ng komento