Java SE 17 saor an asgaidh

Às deidh sia mìosan de leasachadh, leig Oracle a-mach Java SE 17 (Java Platform, Standard Edition 17), 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 17 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 17 (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 17 gu tur fosgailte fo chead GPLv2, le eisgeachdan GNU ClassPath a’ ceadachadh ceangal fiùghantach le toraidhean malairteach.

Tha Java SE 17 air a sheòrsachadh mar fhoillseachadh Taic Fad-ùine (LTS), a chumas air adhart a’ faighinn ùrachaidhean gu 2029. Chaidh stad a chuir air ùrachaidhean airson an sgaoileadh clach-mhìle Java 16 roimhe seo. Bidh am meur LTS roimhe de Java 11 a’ faighinn taic gu 2026. Tha an ath fhoillseachadh LTS clàraichte airson Sultain 2024. 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 cur còmhla gach sia mìosan gus fiosan ùra a dhèanamh seasmhach.

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

  • Thathas a’ moladh buileachadh deuchainneach de mhaidseadh pàtrain ann an abairtean “switch”, a leigeas le bhith a’ cleachdadh chan e luachan mionaideach ann am bileagan “cùis”, ach teamplaidean sùbailte a ’còmhdach sreath de luachan aig an aon àm, airson an robh e riatanach roimhe seo a bhith trom. slabhraidhean abairtean “ma tha...eile”. A bharrachd air an sin, tha comas aig “switch” luachan NULL a làimhseachadh. Rud o = 123L; String formatted = suidse (o) { cùis Integer i -> String.format ("int %d", i); cùis Long l -> String.format ("fada %d", l); cùis Dùbailte d -> String.format ("dùbailte %f", d); cùis String s -> String.format ("String %s", s); bunaiteach -> o.toString(); };
  • Taic seasmhach airson clasaichean seulaichte agus eadar-aghaidh, nach urrainn clasaichean agus eadar-aghaidh eile a chleachdadh gus am buileachadh a shealbhachadh, a leudachadh no a chuir thairis. Bidh clasaichean seulaichte cuideachd a’ toirt seachad dòigh nas dearbhaiche air cleachdadh sàr-chlas a chuingealachadh na luchd-atharrachaidh ruigsinneachd, stèidhichte air a bhith a’ liostadh gu soilleir na fo-chlasaichean a tha ceadaichte airson leudachadh. pasgan com.example.geometry; clas seulaichte poblach Ceadan cumadh com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}
  • Thathas a’ moladh dàrna ro-shealladh den Vector API, a bheir seachad gnìomhan airson àireamhachadh vector a thèid a chuir gu bàs le bhith a’ cleachdadh stiùiridhean vector air pròiseasairean x86_64 agus AArch64 agus a leigeas le gnìomhachd a bhith air 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 scalar, tha an API ùr ga dhèanamh comasach smachd sònraichte a chumail air vectarization airson giullachd dàta co-shìnte.
  • Chuir sinn ris ro-shealladh den API Gnìomh & Cuimhne Cèin, a leigeas le tagraidhean eadar-obrachadh le còd agus dàta taobh a-muigh ùine ruith Java. Leigidh an API ùr leat gnìomhan neo-JVM a ghairm gu h-èifeachdach agus faighinn gu cuimhne nach eil air a riaghladh le JVM. Mar eisimpleir, faodaidh tu gnìomhan a ghairm bho leabharlannan co-roinnte taobh a-muigh agus faighinn gu dàta pròiseas gun a bhith a’ cleachdadh JNI.
  • Chaidh an einnsean tairgse macOS a bheir cumhachd don API Java 2D, a tha e fhèin a’ toirt cumhachd don Swing API, atharrachadh gus an API grafaigean meatailt a chleachdadh. Tha an àrd-ùrlar macOS a’ leantainn air adhart a’ cleachdadh OpenGL gu bunaiteach, agus a’ comasachadh taic meatailt feumaidh suidheachadh “-Dsun.java2d.metal=true” agus co-dhiù ruith macOS 10.14.x.
  • Chuir sinn port ris airson an àrd-ùrlar macOS / AAarch64 (coimpiutaran Apple stèidhichte air na sgoltagan ùra Apple M1). Is e feart sònraichte den phort taic don inneal dìon cuimhne W^X (Write XOR Execute), anns nach fhaighear cothrom air duilleagan cuimhne aig an aon àm airson sgrìobhadh agus coileanadh. (chan urrainnear an còd a chuir an gnìomh ach às deidh an sgrìobhadh a bhith ciorramach, agus chan urrainnear sgrìobhadh gu duilleag cuimhne ach às deidh a chuir gu bàs).
  • Air tilleadh gu bhith a’ cleachdadh dìreach semantics strictfp airson abairtean puing fleòdraidh. Chaidh stad a chuir air taic don semantics “bunaiteach”, a tha ri fhaighinn bho chaidh Java 1.2 a leigeil ma sgaoil, a’ toirt a-steach sìmpleachadh airson a bhith ag obair air siostaman le coprocessors matamataig x87 fìor aosta (às deidh stiùireadh SSE2 a thighinn, chaidh an fheum air semantics a bharrachd à bith).
  • Chaidh seòrsachan ùra de eadar-aghaidh gu gineadairean àireamhan pseudorandom a chuir an gnìomh, agus chaidh algorithms a bharrachd a chuir an gnìomh airson gineadh nas fheàrr de àireamhan air thuaiream. Thathas a’ toirt cothrom do thagraidhean algorithm a thaghadh airson àireamhan meallta a ghineadh. Taic nas fheàrr airson sruthan nithean air thuaiream a ghineadh.
  • Cuir a-steach cuairteachadh teann de gach taobh a-staigh JDK, ach a-mhàin APIan èiginneach leithid sun.misc.Unsafe. Bidh encapsulation teann a’ bacadh oidhirpean bhon chòd gus faighinn gu clasaichean a-staigh, dòighean agus raointean. Roimhe seo, dh’ fhaodadh am modh dùmhlachaidh a bhith air a chur à comas leis an roghainn “--illegal-access=permit”, ach chan eil seo a-nis air a mholadh tuilleadh. Bu chòir do thagraidhean a dh’ fheumas ruigsinneachd air clasaichean a-staigh, dòighean-obrach agus raointean am mìneachadh gu soilleir a’ cleachdadh an roghainn --add-opens no am feart Add-Opens anns an fhaidhle fhollaiseach.
  • Tha comas aig tagraidhean sìoltachain deserialization dàta a mhìneachadh, a dh’ fhaodas a bhith mothachail air co-theacsa agus a thaghadh gu dinamach stèidhichte air gnìomhachd dì-shreathachaidh sònraichte. Tha na sìoltachain ainmichte buntainneach don inneal brìgheil gu lèir (JVM air feadh), i.e. còmhdach chan e a-mhàin an tagradh fhèin, ach cuideachd na leabharlannan treas-phàrtaidh a thathas a’ cleachdadh san tagradh.
  • Tha Swing air modh javax.swing.filechooser.FileSystemView.getSystemIcon a chuir ris gus ìomhaighean mòra a luchdachadh gus an UI air scrionaichean Àrd DPI a leasachadh.
  • Tha an java.net.DatagramSocket API a’ toirt seachad taic airson ceangal ri buidhnean Multicast gun fheum air Java.net.MulticastSocket API air leth.
  • Chaidh an goireas IGV (Ideal Graph Visualizer) a leasachadh, a’ toirt seachad sealladh eadar-ghnìomhach de riochdachadh còd eadar-mheadhanach anns an inneal-cruinneachaidh HotSpot VM C2 JIT.
  • Ann an JavaDoc, a rèir an coimeas ris an inneal-cruinneachaidh javac, nuair a tha mearachd air a thoirt a-mach, tha àireamh na loidhne trioblaideach san fhaidhle stòr agus far a bheil a’ mhearachd air an comharrachadh a-nis.
  • Chuir sinn ris an t-seilbh native.encoding, a’ nochdadh ainm còdachadh caractar an t-siostaim (UTF-8, koi8-r, cp1251, msaa).
  • Chaidh an eadar-aghaidh java.time.InstantSource a chur ris, a’ ceadachadh làimhseachadh ùine gun iomradh a thoirt air sòn ùine.
  • Java.util.HexFormat API air a chur ris airson atharrachadh gu riochdachadh hexadecimal agus a chaochladh.
  • Chaidh modh toll-dubh a chuir ris an inneal-cruinneachaidh, a tha a’ cuir às do ghnìomhachd cuir às do chòd marbh, a ghabhas cleachdadh nuair a bhios tu a’ dèanamh deuchainnean coileanaidh.
  • Chuir sinn roghainn “-Xlog: async” ri Runtime gus logaichean a chlàradh ann am modh asyncronach.
  • Nuair a bhios tu a’ stèidheachadh cheanglaichean tèarainte, tha TLS 1.3 air a chomasachadh gu bunaiteach (chaidh TLS 1.2 a chleachdadh roimhe seo).
  • Chaidh an Applet API a chaidh ainmeachadh roimhe (java.applet.Applet*, javax.swing.JApplet), a chaidh a chleachdadh gus tagraidhean Java a ruith sa bhrobhsair, a ghluasad chun roinn sglèat airson a thoirt air falbh (buinteanas air chall às deidh deireadh an taic airson am plugan Java airson brobhsairean).
  • Tha am Manaidsear Tèarainteachd, a tha air a bhuntanas a chall o chionn fhada agus nach deach iarraidh às deidh deireadh taic plugan a’ bhrobhsair, air a ghluasad chun roinn den fheadhainn a tha clàraichte airson a thoirt air falbh.
  • Chaidh an uidheamachd RMI Activation a thoirt air falbh, a tha seann-fhasanta, air a chuir sìos gu roinn roghainn ann an Java 8 agus cha mhòr nach tèid a chleachdadh a-riamh ann an cleachdadh an latha an-diugh.
  • Compiler deuchainneach a bheir taic do JIT (dìreach ann an àm) airson cruinneachadh fiùghantach de chòd Java airson HotSpot JVM, a bharrachd air a’ mhodh cruinneachaidh dùil (AOT, ro-làimh) de chlasaichean a-steach do chòd inneal mus tòisich iad air an inneal mas-fhìor. , air a thoirt air falbh bhon SDK. Chaidh an compiler a sgrìobhadh ann an Java agus stèidhichte air obair a' phròiseict Ghual. Thathas a’ toirt fa-near gu bheil feum air tòrr saothair airson cumail suas compiler, nach eil air fhìreanachadh nuair nach eil iarrtas bho luchd-leasachaidh.

Source: fosgailtenet.ru

Cuir beachd ann