Ang pagpagawas sa Java SE 20

Pagkahuman sa unom ka bulan nga pag-uswag, gipagawas sa Oracle ang Java SE 20 (Java Platform, Standard Edition 20), nga naggamit sa open-source nga OpenJDK nga proyekto ingon usa ka pagpatuman sa pakisayran. Gawas sa pagtangtang sa pipila ka karaan nga mga bahin, ang Java SE 20 nagmintinar sa atrasado nga pagkaangay sa mga nauna nga pagpagawas sa Java platform - kadaghanan sa mga nasulat kaniadto nga mga proyekto sa Java molihok nga wala’y mga pagbag-o kung gipadagan sa ilawom sa bag-ong bersyon. Andam-sa-instalar nga pagtukod sa Java SE 20 (JDK, JRE ug Server JRE) giandam alang sa Linux (x86_64, AArch64), Windows (x86_64) ug macOS (x86_64, AArch64). Gipalambo sa proyekto sa OpenJDK, ang pagpatuman sa Java 20 nga reperensiya hingpit nga bukas nga tinubdan ubos sa lisensya sa GPLv2, nga adunay mga eksepsiyon sa GNU ClassPath nga nagtugot sa dinamikong pagsumpay sa mga komersyal nga produkto.

Ang Java SE 20 giklasipikar ingon usa ka regular nga pagpagawas sa suporta ug magpadayon nga makadawat mga update hangtod sa sunod nga pagpagawas. Ang sanga sa Long Term Support (LTS) kinahanglan nga Java SE 17, nga magpadayon nga makadawat mga update hangtod sa 2029. Pahinumdum kami kanimo nga sugod sa pagpagawas sa Java 10, ang proyekto gibalhin sa usa ka bag-ong proseso sa pag-uswag, nga nagpasabut nga usa ka mas mubo nga siklo alang sa pagporma sa mga bag-ong pagpagawas. Ang bag-ong kagamitan naugmad na karon sa usa ka kanunay nga gi-update nga master branch, nga naglakip sa andam na nga mga pagbag-o ug gikan diin ang mga sanga gisanga matag unom ka bulan aron mapalig-on ang mga bag-ong pagpagawas.

Ang mga bag-ong bahin sa Java 20 naglakip sa:

  • Adunay pasiuna nga suporta alang sa Scoped Values, nga nagtugot sa dili mausab nga datos nga ipaambit sa mga thread ug mga datos nga maayo nga gibaylo tali sa mga thread sa bata (ang mga bili napanunod). Ang Scoped Values ​​gipalambo aron mapulihan ang mekanismo sa thread-local variables ug mas episyente kung mogamit ug daghan kaayong virtual nga mga thread (libo o milyon-milyong mga thread). Ang nag-unang kalainan tali sa Scoped Values ​​ug thread-local variables mao nga ang nahauna gisulat kausa, dili mausab sa umaabot, ug magpabilin nga magamit lamang sa gidugayon sa pagpatuman sa thread. class Server {katapusan nga static ScopedValue CURRENT_USER = bag-ong ScopedValue(); void serve(Request request, Response response) { var level = (hangyo. isAuthorized()? ADMIN : GUEST); var user = bag-ong User(level); ScopedValue.where(CURRENT_USER, user).run(() -> Application.handle(hangyo, tubag)); } } class DatabaseManager { DBConnection open() {var user = Server.CURRENT_USER.get(); kung (!user.canOpen()) ilabay ang bag-ong InvalidUserException(); ibalik ang bag-ong DBConnection(...); }}
  • Ang ikaduha nga preview sa mga pattern sa rekord gidugang, nga gipalapdan ang bahin sa pagpares sa pattern nga gipaila sa Java 16 aron ma-parse ang mga kantidad sa mga klase sa rekord. Pananglitan: rekord 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 ikaupat nga pasiuna nga pagpatuman sa pattern matching sa "switch" nga mga pahayag gidugang, nga nagtugot sa "case" nga mga label sa paggamit sa dili eksakto nga mga bili, apan flexible patterns nga naglangkob sa usa ka serye sa mga bili sa usa ka higayon, diin kaniadto gikinahanglan ang paggamit sa hasol. mga kadena sa "kon...uban pa" nga mga ekspresyon. static String formatterPatternSwitch(Object obj) {balik switch (obj) { case Integer i -> String.format("int %d", i); kaso Long l -> String.format("taas nga %d", l); kaso Doble d -> String.format("doble %f", d); case String s -> String.format("String %s", s); default -> o.toString(); }; }
  • Ang ikaduha nga preliminary nga pagpatuman sa FFM (Foreign Function & Memory) API gidugang, nga nagtugot kanimo sa pag-organisar sa interaksyon sa mga programa sa Java nga adunay eksternal nga code ug data pinaagi sa mga function sa pagtawag gikan sa mga eksternal nga librarya ug pag-access sa memorya sa gawas sa JVM.
  • Gidugang ang ikaduhang preview sa mga virtual nga thread, nga mga lightweight nga mga thread nga nagpayano pag-ayo sa pagsulat ug pagmintinar sa high-performance nga multi-threaded nga mga aplikasyon.
  • Gidugang ang ikaduha nga eksperimento nga API alang sa structured parallelism, nga nagpasimple sa pag-uswag sa multi-threaded nga mga aplikasyon pinaagi sa pagtratar sa daghang mga buluhaton nga nagdagan sa lain-laing mga thread isip usa ka block.
  • Usa ka ikalimang preview sa Vector API ang gidugang, nga naghatag mga function alang sa mga kalkulasyon sa vector nga gihimo gamit ang mga panudlo sa vector sa x86_64 ug AArch64 nga mga processor ug gitugotan ang mga operasyon nga magamit nga dungan sa daghang mga kantidad (SIMD). Dili sama sa mga kapabilidad nga gihatag sa HotSpot JIT compiler para sa auto-vectorization sa scalar operations, ang bag-ong API nagpaposible nga klarong makontrol ang vectorization para sa parallel data processing.

Source: opennet.ru

Idugang sa usa ka comment