Sgaoileadh àrd-ùrlar Java SE 22 agus buileachadh iomraidh fosgailte OpenJDK 22

Às deidh sia mìosan de leasachadh, leig Oracle a-mach Java SE 22 (Java Platform, Standard Edition 22), a bhios a ’cleachdadh a’ phròiseact stòr fosgailte OpenJDK mar bhuileachadh iomraidh. Ach a-mhàin a bhith a’ toirt air falbh cuid de fheartan nach eil air an cleachdadh, tha Java SE 22 a’ cumail suas co-chòrdalachd air ais le fiosan a chaidh fhoillseachadh roimhe den àrd-ùrlar Java - obraichidh a’ mhòr-chuid de phròiseactan Java a chaidh a sgrìobhadh roimhe gun atharrachaidhean nuair a thèid an ruith fon dreach ùr. Tha togalaichean deiseil airson an stàladh de Java SE 22 (JDK, JRE agus Server JRE) air an ullachadh airson Linux (x86_64, AArch64), Windows (x86_64) agus macOS (x86_64, AArch64). Air a leasachadh leis a’ phròiseact OpenJDK, tha buileachadh iomraidh Java 22 gu tur fosgailte fo chead GPLv2, le eisgeachdan GNU ClassPath a’ ceadachadh ceangal fiùghantach le toraidhean malairteach.

Tha Java SE 22 air a chomharrachadh mar sgaoileadh taic cunbhalach agus cumaidh e a’ faighinn ùrachaidhean gus an ath fhoillseachadh. Bu chòir gum biodh am meur Taic Fad-ùine (LTS) Java SE 21 no Java SE 17, a gheibh ùrachaidhean gu 2031 agus 2029, fa leth (mar as trice rim faighinn gu 2028 agus 2026). Thàinig taic phoblach airson meur LTS de Java SE 11 gu crìch san t-Sultain an-uiridh, ach leanaidh taic leudaichte gu 2032. Leanaidh taic leudaichte airson meur LTS de Java SE 8 gu 2030.

Leig dhuinn do chuimhneachadh, a’ tòiseachadh le sgaoileadh Java 10, gun do thionndaidh am pròiseact gu pròiseas leasachaidh ùr, a’ ciallachadh cearcall nas giorra airson fiosan ùra a chruthachadh. Tha comas-gnìomh ùr a-nis air a leasachadh ann an aon phrìomh mheur a tha air ùrachadh gu cunbhalach, a tha a’ toirt a-steach atharrachaidhean deiseil agus às am bi meuran air an roinn gach sia mìosan gus fiosan ùra a dhèanamh seasmhach.

Am measg nam feartan ùra ann an Java 22 tha:

  • Tha an neach-cruinneachaidh sgudail G1 a’ toirt a-steach taic airson pinadh sgìreil, a leigeas leat suidheachadh nithean Java a chàradh airson ùine mar chuimhneachan gus nach tèid an gluasad leis an neach-cruinneachaidh sgudail agus gus leigeil le iomraidhean air na stuthan sin a bhith air an gluasad gu sàbhailte eadar Java agus còd dùthchasach. Leigidh pinning leat latency a lughdachadh agus casg a chuir air cruinneachadh sgudail nuair a bhios tu a’ cur an gnìomh roinnean èiginneach de JNI (Java Native Interface) le còd dùthchasach (fhad ‘s a tha e a’ coileanadh nan earrannan sin, cha bu chòir don JVM nithean èiginneach co-cheangailte riutha a ghluasad gus suidheachaidhean cinnidh a sheachnadh). Bidh pinning a’ toirt air falbh nithean èiginneach bho shealladh an neach-cruinneachaidh sgudail, a dh’ fhaodas leantainn air adhart a’ glanadh raointean gun phronnadh.
  • Chaidh feart tòiseachaidh a chuir ris gus leigeil le abairtean a bhith air an sònrachadh ann an luchd-togail mus cuir iad fios gu super (...), air a chleachdadh gus neach-togail clas pàrant a ghairm gu soilleir bho neach-togail clas a chaidh a shealbhachadh mura h-eil na h-abairtean sin a’ toirt iomradh air eisimpleir a chruthaich an neach-togail. clas Outer {falamh hello () { System.out.println ("Hello"); } clas a-staigh { Taobh a-staigh () { hello (); sàr (); } } }
  • Tha an FFM (Foreign Function & Memory) API air a bhith seasmhach, a’ ceadachadh eadar-obrachadh de phrògraman Java le còd agus dàta bhon taobh a-muigh le bhith a’ gairm ghnìomhan bho leabharlannan taobh a-muigh agus a’ faighinn cothrom air cuimhne taobh a-muigh an JVM, gun a bhith a’ cleachdadh JNI (Java Native Interface).
  • Tha taic airson caochladairean gun ainm agus maids pàtrain air a chomasachadh - an àite caochladairean agus pàtrain nach deach a chleachdadh ach a tha riatanach nuair a bhios tu a’ gairm, faodaidh tu a-nis an caractar “_” a shònrachadh. // was String pageName = suidse (duilleag) { cùis GitHubIssuePage (var url, susbaint var, ceanglaichean var, int issueNumber) -> “ISSUE #” + issueNumber; ... }; // a-nis is urrainn dhut String pageName = tionndadh (duilleag) { cùis GitHubIssuePage(_, _, _, int issueNumber) -> “ISSUE #” + issueNumber; };
  • Thathas a’ moladh buileachadh tòiseachaidh den API Class-File airson parsadh, gineadh agus tionndadh faidhlichean clas Java. ClassFile cf = ClassFile.of(); ClassModel classModel = cf.parse(bytes); byte[] newBytes = cf.build(classModel.thisClass().asSymbol(), classBuilder -> { airson (ClassElement ce : classModel) { ma tha (!(ce instance of MethodModel mm && mm.methodName().stringValue(). startWith ("debug")) { classBuilder.with (ce); } } });
  • Tha an goireas java a’ toirt seachad comas prògraman Java a ruith, air an toirt seachad ann an cruth grunn fhaidhlichean còd no leabharlannan clas ro-ullaichte, gun a bhith a’ cur ri chèile na faidhlichean sin air leth agus gun a bhith a’ rèiteachadh an t-siostam togail. Tha am feart ùr ga dhèanamh nas fhasa prògraman a ruith anns a bheil còd diofar chlasaichean air a sgaradh ann am faidhlichean fa leth. Prog.java: clas Prog { prìomh falamh falamh poblach (String [] args) { Helper.run (); } } Helper.java: neach-cuideachaidh clas { ruith falamh statach () { System.out.println ("Hello!"); } }

    Mar eisimpleir, airson prògram a ruith anns a bheil dà fhaidhle “Prog.java” agus “Helper.java” tha e a-nis gu leòr “java Prog.java” a ruith, a chuireas ri chèile an clas Prog, mìnichidh e iomradh air a’ chlas Helper, lorg agus cuir ri chèile am faidhle Helper. java agus gairm am prìomh dhòigh.

  • Chuir sinn dàrna buileachadh tòiseachaidh de Theamplaidean String ris, air a chuir an gnìomh a bharrachd air litrichean sreang agus blocaichean teacsa. Leigidh teamplaidean sreang dhut teacsa a chur còmhla le abairtean àireamhaichte agus caochladairean gun a bhith a’ cleachdadh a’ ghnìomhaiche +. Bithear a’ cleachdadh ionadachadh abairtean le bhith a’ cleachdadh ionadan-ionaid \{..}, agus faodar làimhseachadh sònraichte a cheangal gus dèanamh cinnteach gu bheil na luachan a chaidh a chur nan àite ceart. Mar eisimpleir, bidh an einnsean SQL a’ sgrùdadh nan luachan a thèid a chuir a-steach don chòd SQL agus a’ tilleadh nì java.sql.Statement mar thoradh, fhad ‘s a bhios am pròiseasar JSON a’ cumail sùil air ceartachd luchd-ionaid JSON agus a ’tilleadh JsonNode. String query = "SELECT *FROM Person p WHERE p." + property + " = ' " + luach + "'"; // was Statement query = SQL." "" "SELECT* FROM Person p WHERE p.\{property} = '\{value}'" ""; // dh'fhàs
  • Chaidh seachdamh ro-shealladh den Vector API a chuir ris, a’ toirt seachad gnìomhan airson àireamhachadh vectar a thathas a’ coileanadh a’ cleachdadh stiùiridhean vector air pròiseasairean x86_64 agus AArch64 agus a’ ceadachadh obrachaidhean a chuir an sàs aig an aon àm ri ioma luachan (SIMD). Eu-coltach ris na comasan a tha air an toirt seachad ann an inneal-cruinneachaidh HotSpot JIT airson fèin-fhactaraidh gnìomhachd sgalar, tha an API ùr ga dhèanamh comasach smachd sònraichte a chumail air vectarization airson giullachd dàta co-shìnte.
  • Chaidh buileachadh tòiseachaidh den Stream API leudaichte a chuir ris a bheir taic do bhith a’ mìneachadh na h-obraichean eadar-mheadhanach agad fhèin, a dh’ fhaodadh a bhith feumail ann an cùisean far nach eil na h-obraichean eadar-mheadhanach togte gu leòr airson an cruth-atharrachadh dàta a tha thu ag iarraidh. Tha luchd-làimhseachaidh dùthchasach ceangailte a’ cleachdadh an obrachaidh eadar-mheadhanach ùr Stream ::gather(Gatherer), a bhios a’ pròiseasadh eileamaidean srutha le bhith a’ cur inneal-làimhseachaidh a tha ainmichte leis an neach-cleachdaidh orra. jshell> Stream.of(1,2,3,4,5,6,7,8,9).cruinnich(Uinneag ùrFixed(3)).toList() $1 ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  • Chaidh dàrna dreach den API deuchainneach airson Structured Concurrency a mholadh airson deuchainn, a bhios a’ sìmpleachadh leasachadh thagraidhean ioma-snàthainn le bhith a’ giullachd ioma-ghnìomhan air an cur an gnìomh ann an diofar snàithleanan mar aon bhloca.
  • Chaidh dàrna buileachadh tòiseachaidh a chuir ris de chlasaichean a chaidh ainmeachadh gu h-obann agus suidheachaidhean gun ainm den “phrìomh dhòigh”, a dh’ fhaodas cuir às do dhearbhaidhean poblach / statach, a’ dol seachad air grunn argamaidean, agus buidhnean eile co-cheangailte ri foillseachadh clas. // b’ e clas poblach HelloWorld { prìomh falamh falamh poblach (String [] args) { System.out.println ("Hello world!"); } } // a-nis faodaidh tu prìomh () { System.out.println ("Hello, World!"); }
  • Chaidh dàrna ro-shealladh a chuir an gnìomh de Luachan Scoped, a’ leigeil le dàta so-ruigsinneach a bhith air a roinn thairis air snàithleanan agus dàta a thoirt seachad gu h-èifeachdach eadar snàithleanan cloinne (tha luachan air an sealbhachadh). Thathas a’ leasachadh Luachan le farsaingeachd gus an uidheamachd caochladairean ionadail snàithlean a chur an àite agus tha iad nas èifeachdaiche nuair a thathar a’ cleachdadh àireamhan mòra de snàithleanan mas-fhìor (mìltean no milleanan de snàithleanan). Is e am prìomh eadar-dhealachadh eadar Luachan Scoped agus caochladairean snàithle-ionadail gu bheil a’ chiad fhear sgrìobhte aon uair, nach gabh atharrachadh san àm ri teachd, agus nach bi iad rim faighinn ach fhad ‘s a thèid an t-snàthainn a chur an gnìomh.
  • Tha an neach-cruinneachaidh sgudail Co-shìnte air coileanadh a leasachadh nuair a bhios e ag obair le raon farsaing de stuthan. Rinn optimization e comasach ann an cuid de dheuchainnean le raon farsaing de stuthan an dàil a lughdachadh mus tòisich thu a’ lorg nì le 20%.

A bharrachd air an sin, faodaidh tu toirt fa-near foillseachadh ùrachadh don àrd-ùrlar airson tagraidhean a chruthachadh le eadar-aghaidh grafaigeach JavaFX 22.

Source: fosgailtenet.ru

Cuir beachd ann