Ukukhutshwa kweJava SE17

Emva kweenyanga ezintandathu zophuhliso, i-Oracle ikhuphe i-Java SE 17 (i-Java Platform, i-Standard Edition 17) iqonga, esebenzisa iprojekthi yomthombo ovulekileyo we-OpenJDK njengokuphunyezwa kwereferensi. Ngaphandle kokususwa kwezinye iimpawu ezithotyiweyo, iJava SE 17 igcina ukuhambelana ngasemva kunye nokukhutshwa kwangaphambili kweqonga leJava-ininzi yeeprojekthi ezibhalwe ngaphambili zeJava zisasebenza ngaphandle kokuguqulwa xa ziqhutywa phantsi koguqulelo olutsha. Izakhiwo ezifakelwayo zeJava SE 17 (JDK, JRE, kunye ne-Server JRE) zilungiselelwe iLinux (x86_64, AArch64), Windows (x86_64), kunye ne-macOS (x86_64, AArch64). Iphuhliswe yiprojekthi ye-OpenJDK, ukuphunyezwa kwereferensi ye-Java 17 ngumthombo ovulekileyo ngokupheleleyo phantsi kwelayisensi ye-GPLv2 kunye ne-GNU ClassPath ngaphandle kokuvumela ukudibanisa okuguquguqukayo kwiimveliso zorhwebo.

IJava SE 17 ihlelwa njengeNkxaso yexesha elide (LTS), eya kuqhubeka ifumana uhlaziyo kude kube yi-2029. Uhlaziyo lweJava 16 yangaphambili yokhupho luye lwayekiswa. Isebe leLTS langaphambili leJava 11 liya kuxhaswa kude kube ngu-2026. Ukukhutshwa kweLTS okulandelayo kucwangciselwe uSeptemba 2024. Masikukhumbuze ukuba ukuqala ngokukhululwa kwe-Java 10, iprojekthi itshintshele kwinkqubo entsha yophuhliso, ethetha umjikelezo omfutshane wokuqulunqwa kwezinto ezintsha. Umsebenzi omtsha ngoku uphuhlisiwe kwisebe eliphambili elihlala lihlaziywa, elibandakanya iinguqu esele zenziwe kwaye amasebe afakwa kuwo rhoqo emva kweenyanga ezintandathu ukuzinzisa ukukhutshwa okutsha.

Iimpawu ezintsha kwiJava 17 ziquka:

  • Kucetywa ukuphunyezwa kovavanyo lwepateni yokuthelekisa kumagama “wokutshintsha”, evumela ukuba kungasetyenziswanga amaxabiso achanekileyo kwielebhile “zemeko”, kodwa iitemplates eziguquguqukayo ezigquma uthotho lwamaxabiso ngaxeshanye, ekwakufuneka ngaphambili ukuba kusetyenziswe ubunzima. imixokelelwane yentetho ethi “ukuba...enye”. Ukongeza, "ukutshintsha" kunamandla okuphatha amaxabiso angama-NULL. Into o = 123L; Umtya ohleliweyo = tshintsha (o) { case Integer i -> String.format("int %d", i); ityala Long l -> String.format("ende %d", l); ityala kabini d -> String.format("double %f", d); icala Umtya s -> Umtya.format("Umtya %s", s); okungagqibekanga -> o.toString(); };
  • Inkxaso ezinzileyo kwiiklasi ezitywiniweyo kunye nojongano, olungenakusetyenziswa zezinye iiklasi kunye nojongano lokuxhamla ilifa, ukwandisa, okanye ukugqithisa ukuphunyezwa. Iiklasi ezitywiniweyo zikwabonelela ngendlela echazwe ngakumbi yokunqanda ukusetyenziswa kwe-superclass kunezilungisi zofikelelo, ngokusekwe edwelisweni ngokucacileyo ii-subclass ezivunyelwe ukwandiswa. iphakheji com.example.geometry; Iklasi etywiniweyo kawonke-wonke Iimvume zemilo com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}
  • Umboniso wesibini weVector API uyacetywa, obonelela ngemisebenzi yezibalo zevektha ezenziwa kusetyenziswa imiyalelo ye-vector kwi-x86_64 kunye ne-AArch64 processors kwaye ivumele imisebenzi ukuba isetyenziswe ngaxeshanye kumaxabiso amaninzi (SIMD). Ngokungafaniyo nesakhono esinikwe kwi-HotSpot JIT compiler ye-auto-vectorization ye-scalar operations, i-API entsha yenza ukuba kube lula ukulawula ngokucacileyo i-vectorization yokucubungula idatha efanayo.
  • Yongeza i-preview ye-Foreign Function yangaphandle kunye ne-Memory API, evumela ukuba izicelo zidibanise ikhowudi kunye nedatha ngaphandle kwexesha leJava. I-API entsha ikuvumela ukuba ubize ngokufanelekileyo imisebenzi engeyiyo ye-JVM kunye nokufikelela kwimemori engalawulwa yi-JVM. Ngokomzekelo, unokubiza imisebenzi kwiilayibrari ekwabelwana ngazo zangaphandle kunye nokufikelela kwidatha yenkqubo ngaphandle kokusebenzisa i-JNI.
  • I-injini yokunikezela ye-macOS enika amandla iJava 2D API, ethi yona inike amandla i-Swing API, ilungiselelwe ukusebenzisa iMetal graphics API. Iqonga le-macOS liyaqhubeka nokusebenzisa i-OpenGL ngokungagqibekanga, kwaye ukunika amandla inkxaso ye-Metal kufuna ukusetwa "-Dsun.java2d.metal=true" kwaye ubuncinci besebenzisa i-macOS 10.14.x.
  • Yongeza i-port ye-macOS/AArch64 iqonga (iikhompyuter ze-Apple ezisekwe kwi-chips entsha ye-Apple M1). Into ekhethekileyo yezibuko yinkxaso ye-W^X (Bhala XOR Phumeza) indlela yokukhusela imemori, apho amaphepha ememori akanakufikelelwa ngaxeshanye ekubhaleni nasekuphunyezweni. (ikhowudi inokuphunyezwa kuphela emva kokuba ukubhala kuvaliwe, kwaye ukubhala kwiphepha lememori kunokwenzeka kuphela emva kokuba ukuphunyezwa kuvaliwe).
  • Ibuyiselwe ekusebenziseni kuphela i-semantics ye-strictfp yeengongoma ezidadayo. Inkxaso ye-semantics "engagqibekanga", ekhoyo ukususela ekukhutshweni kweJava 1.2, iye yanqunyanyiswa, kubandakanywa ukwenza lula ukusebenza kwiisistim ezinee-coprocessors zezibalo ze-x87 ezindala kakhulu (emva kokufika kwemiyalelo ye-SSE2, imfuno ye-semantics eyongezelelweyo yanyamalala).
  • Iintlobo ezintsha ze-interfaces kwi-pseudorandom number generators ziye zaphunyezwa, kwaye i-algorithms eyongezelelweyo iphunyezwe ukuveliswa okungcono kwamanani angaqhelekanga. Izicelo zinikwa ithuba lokukhetha i-algorithm yokuvelisa iinombolo ze-pseudorandom. Inkxaso ephuculweyo yokuvelisa imijelo yento engacwangciswanga.
  • Ukunyanzeliswa kwe-encapsulation engqongqo yabo bonke abangaphakathi be-JDK, ngaphandle kwee-APIs ezibalulekileyo ezifana ne-sun.misc.Unsafe. Encapsulation engqongqo iibhloko iinzame ukusuka ikhowudi ukufikelela kwiiklasi zangaphakathi, iindlela, kunye namasimi. Ngaphambili, imowudi yobhalo engqongqo ibinokuvalwa kusetyenziswa u-"--illegal-access=permit" ukhetho, kodwa oku kuyekisiwe ngoku. Izicelo ezifuna ufikelelo kwiiklasi zangaphakathi, iindlela, kunye nemihlaba kufuneka ichaze ngokucacileyo usebenzisa i --yongeza-ivula ukhetho okanye i-Add-Ivula uphawu loyelelwano kwifayile ye-manifest.
  • Izicelo zinikwe amandla okuchaza izihluzi ze-deserialization zedatha, ezinokuchaphazeleka kwimeko kwaye zikhethwe ngokuguquguqukayo ngokusekelwe kwimisebenzi ethile ye-deserialization. Izihluzi ezikhankanyiweyo zisebenza kuwo wonke umatshini wenyani (JVM-wide), i.e. ayigqumeki kuphela isicelo ngokwaso, kodwa kunye namathala eencwadi angaphandle asetyenziswa kwisicelo.
  • I-Swing yongeze i-javax.swing.filechooser.FileSystemView.getSystemIcon indlela yokulayisha ii-icon ezinkulu ukuphucula i-UI kwi-High DPI izikrini.
  • I-java.net.DatagramSocket API ibonelela ngenkxaso yokudibanisa kumaqela e-Multicast ngaphandle kwesidingo se-java.net.MulticastSocket API eyahlukileyo.
  • I-IGV (I-Visualizer ye-Ideal Graph) iphuculwe, ibonelela ngokubonakalayo okusebenzisanayo kokumelwa kwekhowudi ephakathi kwi-HotSpot VM C2 JIT compiler.
  • KwiJavaDoc, ngokufaniswa nomqambi we-javac, xa impazamo iphuma, inani lomgca wengxaki kwifayile yomthombo kunye nendawo yempazamo ibonisiwe ngoku.
  • Kongezwe ipropathi ye native.encoding, ebonisa igama lenkqubo yokufakwa kweekhowudi kumbhalo (UTF-8, koi8-r, cp1251, njl.).
  • I-interface ye-java.time.InstantSource yongeziwe, ivumela ukusetyenziswa kwexesha ngaphandle kokubhekisela kwizowuni yexesha.
  • Kongezwe i-java.util.HexFormat API yokuguqula ukumelwa kwe-hexadecimal kunye nokunye.
  • Imodi ye-blackhole yongezwe kumqokeleli, ekhubaza imisebenzi yokuphelisa ikhowudi efileyo, engasetyenziselwa xa uqhuba iimvavanyo zokusebenza.
  • Yongezwe "-Xlog: async" ukhetho kwi-Runtime ukurekhoda iilog kwimowudi esynchronous.
  • Xa kumiselwa uqhagamshelo olukhuselekileyo, i-TLS 1.3 ivuliwe ngokungagqibekanga (ngaphambili i-TLS 1.2 yayisetyenziswa).
  • I Applet API echazwe ngaphambili ephelelwe lixesha (java.applet.Applet*, javax.swing.JApplet), eyayisetyenziselwa ukuqhuba izicelo zeJava kumkhangeli zincwadi, iye yasiwa kudidi olucetyelwe ukususwa (ukubaluleka okulahlekileyo emva kokuphela kwenkxaso. yeJava iplagi yabakhangeli).
  • Umphathi woKhuseleko, osele elahlekelwe kudala ukufaneleka kwawo kwaye wajika wangabangwa emva kokuphela kwenkxaso yeplagi yesikhangeli, uye wasiwa kudidi lwezo zicwangciselwe ukususwa.
  • Indlela ye-RMI Activation isusiwe, ephelelwe lixesha, ithotyelwe kudidi lokhetho kwiJava 8 kwaye phantse ayizange isetyenziswe kwindlela yanamhlanje.
  • Umqokeleli wovavanyo oxhasa iJIT (ngexesha nje) ukuqulunqwa okuguquguqukayo kwekhowudi yeJava yeHotSpot JVM, kunye nemowudi yokuqulunqa ulindelo (i-AOT, ngaphambi kwexesha) yeeklasi kwikhowudi yomatshini ngaphambi kokuqala umatshini wenyani. , isusiwe kwi-SDK. Umqambi wabhalwa kwiJava kwaye usekelwe kumsebenzi weprojekthi yeGraal. Kuyaphawulwa ukuba ukugcinwa komqokeleli kufuna umsebenzi omninzi, ongafanelekanga xa kungekho mfuno evela kubaphuhlisi.

umthombo: opennet.ru

Yongeza izimvo