Ukukhishwa kwe-Java SE 17

Ngemuva kwezinyanga eziyisithupha zokuthuthuka, i-Oracle ikhiphe i-Java SE 17 (i-Java Platform, i-Standard Edition 17), esebenzisa iphrojekthi ye-OpenJDK yomthombo ovulekile njengokuqaliswa kwereferensi. Ngaphandle kokususwa kwezinye izici ezingasasebenzi, i-Java SE 17 igcina ukuhambisana okusemuva nokukhishwa kwangaphambilini kweplathifomu ye-Java - amaphrojekthi amaningi e-Java abhalwe ngaphambilini azosebenza ngaphandle kwezinguquko lapho esebenza ngaphansi kwenguqulo entsha. Izakhiwo ezilungele ukufaka ze-Java SE 17 (JDK, JRE ne-Server JRE) zilungiselelwa i-Linux (x86_64, AArch64), Windows (x86_64) kanye ne-macOS (x86_64, AArch64). Ithuthukiswe iphrojekthi ye-OpenJDK, ukusetshenziswa kwesithenjwa se-Java 17 kuwumthombo ovulekile ngokugcwele ngaphansi kwelayisensi ye-GPLv2, okuhlukile kwe-GNU ClassPath okuvumela ukuxhumana okunamandla nemikhiqizo yezentengiso.

I-Java SE 17 ihlukaniswa njengokukhululwa kwe-Long Term Support (LTS), ezoqhubeka nokuthola izibuyekezo kuze kube ngu-2029. Ukubuyekezwa kokukhishwa kwangaphambilini kwe-Java 16 kunqanyuliwe. Igatsha langaphambilini le-LTS le-Java 11 lizosekelwa kuze kube ngu-2026. Ukukhishwa okulandelayo kwe-LTS kuhlelelwe uSepthemba 2024. Ake sikukhumbuze ukuthi kusukela ngokukhululwa kwe-Java 10, iphrojekthi ishintshele kunqubo entsha yokuthuthukisa, okusho umjikelezo omfushane wokwakhiwa kokukhishwa okusha. Ukusebenza okusha manje sekuthuthukisiwe egatsheni elilodwa eliyinhloko elivuselelwa njalo, elihlanganisa izinguquko esezilungile futhi lapho amagatsha enziwa khona njalo ngemva kwezinyanga eziyisithupha ukuze kuzinziswe ukukhishwa okusha.

Izici ezintsha ku-Java 17 zifaka:

  • Kuhlongozwa ukuqaliswa kokuhlolwa kokumataniswa kwephethini enkulumweni ethi "switch", okuvumela ukusebenzisa amanani angaqondile kumalebula "esimweni", kodwa izifanekiso eziguquguqukayo ezimboza uchungechunge lwamanani ngesikhathi esisodwa, okwakudingeka ngaphambilini ukuthi kusetshenziswe kanzima. amaketango ezinkulumo ezithi β€œuma...kungenjalo”. Ngaphezu kwalokho, "ukushintsha" kunamandla okuphatha amanani angu-NULL. Into o = 123L; Intambo ifomethiwe = shintsha (o) {icala eliphelele i -> String.format("int %d", i); icala elide l -> String.format("inde %d", l); icala d kabili -> String.format("double %f", d); icala Intambo s -> String.format("String %s", s); okuzenzakalelayo -> o.toString(); };
  • Usekelo oluzinzile lwezigaba ezivaliwe nezixhumi ezibonakalayo, ezingakwazi ukusetshenziswa ezinye izigaba nezixhumi ezibonakalayo ukuze zizuze ifa, zinwebe, noma zikhiphe ukusetshenziswa. Amakilasi avaliwe futhi ahlinzeka ngendlela edalula kakhulu yokukhawulela ukusetshenziswa kwe-superclass kunezilungisi zokufinyelela, ngokusekelwe ekufakweni kuhlu ngokusobala izigaba ezingaphansi ezivunyelwe ukunwetshwa. iphakheji com.example.geometry; Izimvume zomumo wekilasi elivaliwe com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}
  • Kuhlongozwa ukubuka kuqala kwesibili kweVector API, ehlinzeka ngemisebenzi yezibalo zevekhtha ezenziwa kusetshenziswa imiyalelo ye-vector kumaphrosesa we-x86_64 kanye ne-AArch64 futhi ivumele imisebenzi ukuthi isetshenziswe ngesikhathi esisodwa kumanani amaningi (SIMD). Ngokungafani namandla anikezwe kusihlanganisi se-HotSpot JIT okwenziwa ngokuzenzakalela kwemisebenzi ye-scalar, i-API entsha yenza kube nokwenzeka ukulawula ngokusobala ukwenziwa kwe-vector ukuze kucutshungulwe idatha efanayo.
  • Kwengezwe ukubuka kuqala kwe-Foreign Function & Memory API, evumela izinhlelo zokusebenza ukuthi zihlanganyele nekhodi nedatha ngaphandle kwesikhathi sokusebenza se-Java. I-API entsha ikuvumela ukuthi ushayele kahle imisebenzi okungeyona eye-JVM futhi ufinyelele imemori engaphethwe yi-JVM. Isibonelo, ungashayela imisebenzi kusuka kumalabhulali abiwe angaphandle futhi ufinyelele idatha yenqubo ngaphandle kokusebenzisa i-JNI.
  • Injini enikezela nge-macOS enika amandla i-Java 2D API, yona enika amandla i-Swing API, iguqulelwe ukusebenzisa i-Metal graphics API. Inkundla ye-macOS iyaqhubeka nokusebenzisa i-OpenGL ngokuzenzakalelayo, futhi ukunika amandla ukusekelwa kwe-Metal kudinga ukusetha okuthi "-Dsun.java2d.metal=true" futhi okungenani isebenzisa i-macOS 10.14.x.
  • Kwengezwe imbobo yesikhulumi se-macOS/AArch64 (amakhompyutha we-Apple asekelwe kuma-chips amasha we-Apple M1). Isici esikhethekile sechweba ukusekelwa kwendlela yokuvikela inkumbulo ye-W^X (Bhala i-XOR Execute), lapho amakhasi enkumbulo engakwazi ukufinyelelwa ngesikhathi esisodwa ukuze kubhalwe futhi kwenziwe. (ikhodi ingenziwa kuphela ngemuva kokuthi ukubhala kukhutshaziwe, futhi ukubhala ekhasini lememori kungenzeka kuphela ngemuva kokuthi ukubulawa kukhutshaziwe).
  • Ibuyiselwe ekusebenziseni i-semantics ye-strictfp kuphela yezinkulumo zamaphuzu antantayo. Ukusekelwa kwe-semantics "ezenzakalelayo", etholakala kusukela kwakhululwa i-Java 1.2, kunqanyuliwe, okuhlanganisa ukwenza lula ukusebenza kumasistimu anama-coprocessors wezibalo we-x87 amadala kakhulu (ngemuva kokufika kwemiyalo ye-SSE2, isidingo se-semantics eyengeziwe sanyamalala).
  • Izinhlobo ezintsha zokusebenzelana kuya kumajeneretha ezinombolo mbumbulu ziye zasetshenziswa, futhi ama-algorithm engeziwe asetshenzisiwe ukuze kwenziwe kangcono izinombolo ezingahleliwe. Izicelo zinikezwa ithuba lokukhetha i-algorithm yokwenza izinombolo zomgunyathi. Usekelo oluthuthukisiwe lokukhiqiza ukusakazwa kwento okungahleliwe.
  • Ukufaka i-encapsulation okuqinile kwabo bonke abangaphakathi be-JDK, ngaphandle kwama-API abalulekile afana ne-sun.misc.Unsafe. I-encapsulation eqinile ivimba imizamo kusuka kukhodi ukuze ifinyelele amakilasi angaphakathi, izindlela, nezinkambu. Ngaphambilini, imodi ye-encapsulation eqinile ibingakhutshazwa kusetshenziswa inketho ethi "--illegal-access=permit", kodwa lokhu manje sekwehlisiwe. Izinhlelo zokusebenza ezidinga ukufinyelela kumakilasi angaphakathi, izindlela, nezinkambu kufanele zizichaze ngokucacile zisebenzisa inketho --engeza-ivula noma isibaluli se-Engeza-Ivula kufayela le-manifest.
  • Izinhlelo zokusebenza zinikezwa ikhono lokuchaza izihlungi ze-deserialization zedatha, ezingaba bucayi komongo futhi zikhethwe ngokuguquguqukayo ngokusekelwe emisebenzini ethile ye-deserialization. Izihlungi ezishiwo zisebenza kuwo wonke umshini we-virtual (JVM-wide), i.e. akubandakanyi kuphela uhlelo lokusebenza ngokwalo, kodwa namalabhulali ezinkampani zangaphandle asetshenziswa kuhlelo lokusebenza.
  • U-Swing wengeze indlela ye-javax.swing.filechooser.FileSystemView.getSystemIcon yokulayisha izithonjana ezinkulu ukuze kuthuthukiswe i-UI kuzikrini eziphezulu ze-DPI.
  • I-java.net.DatagramSocket API inikeza usekelo lokuxhuma kumaqembu e-Multicast ngaphandle kwesidingo se-java.net.MulticastSocket API ehlukile.
  • Isisetshenziswa se-IGV (Ideal Graph Visualizer) sithuthukisiwe, sinikeza ukuboniswa okusebenzisanayo kokumelwa kwekhodi okumaphakathi kumhlanganisi we-HotSpot VM C2 JIT.
  • Ku-JavaDoc, ngokufanisa ne-javac compiler, lapho iphutha liphuma, inombolo yomugqa oyinkinga kufayela eliwumthombo kanye nendawo yephutha manje kukhonjisiwe.
  • Kwengezwe isici se-native.encoding, esibonisa igama lombhalo wekhodi wesistimu (UTF-8, koi8-r, cp1251, njll.).
  • Isixhumi esibonakalayo se-java.time.InstantSource sengeziwe, okuvumela ukukhohliswa kwesikhathi ngaphandle kokubhekisela kundawo yesikhathi.
  • Kwengezwe i-java.util.HexFormat API yokuguqulela ekumeleleni okuyi-hexadecimal futhi okuphambene nalokho.
  • Imodi ye-blackhole yengeziwe kumhlanganisi, evimbela imisebenzi yokususa ikhodi efile, engasetshenziswa lapho kwenziwa ukuhlolwa kokusebenza.
  • Kwengezwe inketho ethi "-Xlog:async" ku-Runtime ukuze urekhode izingodo ngemodi evumelanayo.
  • Lapho kusungulwa ukuxhumeka okuvikelekile, i-TLS 1.3 inikwa amandla ngokuzenzakalelayo (ngaphambilini i-TLS 1.2 yayisetshenziswa).
  • I-Applet API eyamenyezelwa ngaphambilini ukuthi isiphelelwe yisikhathi (java.applet.Applet*, javax.swing.JApplet), eyasetshenziswa ukusebenzisa izinhlelo zokusebenza ze-Java esipheqululini, iyiswe esigabeni sokuhlelelwe ukususwa (ukulahlekelwa ukuhlobana ngemva kokuphela kosekelo. ye-plugin ye-Java yeziphequluli).
  • I-Security Manager, osekunesikhathi eside yalahlekelwa ukuhambisana kwayo futhi kwavela ukuthi ayizange ifunelwe ngemva kokuphela kosekelo lwe-plugin yesiphequluli, ihanjiswe esigabeni salezo ezihlelelwe ukususwa.
  • Indlela ye-RMI Activation isusiwe, esiphelelwe yisikhathi, yehliselwe esigabeni senketho ku-Java 8 futhi cishe ayikaze isetshenziswe emisebenzini yesimanje.
  • Iqoqo lokuhlola elisekela i-JIT (isikhathi nje) yokuhlanganiswa okunamandla kwekhodi ye-Java ye-HotSpot JVM, kanye nemodi yokuhlanganiswa okulindelekile (i-AOT, kusengaphambili) yamakilasi abe ikhodi yomshini ngaphambi kokuqala umshini obonakalayo. , ikhishiwe ku-SDK. I-comiler yabhalwa nge-Java futhi isekelwe emsebenzini wephrojekthi ye-Graal. Kuyaphawulwa ukuthi ukugcinwa kwe-compiler kudinga umsebenzi omningi, okungenasisekelo uma kungekho sidingo esivela kubathuthukisi.

Source: opennet.ru

Engeza amazwana