Pambuyo pa miyezi isanu ndi umodzi yokonza, Oracle yatulutsa nsanja ya Java SE 17 (Java Platform, Standard Edition 17), yomwe imagwiritsa ntchito pulojekiti ya OpenJDK yotseguka ngati njira yogwiritsira ntchito. Kupatula kuchotsa zinthu zina zomwe sizinagwiritsidwe ntchito, Java SE 17 imasunga kuyanjana kwachikale ndi zomwe zidatulutsidwa kale pa nsanja ya Java—mapulojekiti ambiri a Java omwe adalembedwa kale sadzagwira ntchito mosintha akamayendetsedwa pansi pa mtundu watsopano. Zomangamanga zokonzeka kukhazikitsidwa za Java SE 17 (JDK, JRE, ndi Server JRE) zakonzedwa kuti zigwiritsidwe ntchito. Linux (x86_64, AArch64), Windows (x86_64) ndi macOS (x86_64, AArch64). Yopangidwa ndi pulojekiti ya OpenJDK, kukhazikitsa kwa Java 17 ndi kotseguka kwathunthu pansi pa layisensi ya GPLv2 yokhala ndi GNU ClassPath Exception, yomwe imalola kulumikizana kwamphamvu ndi zinthu zamalonda.
Java SE 17 imayikidwa ngati Kutulutsidwa kwa Nthawi Yaitali Yothandizira (LTS), yomwe ipitilize kulandira zosintha mpaka 2029. Zosintha zakutulutsidwa koyambirira kwa Java 16 zasiyidwa. Nthambi yapita ya LTS ya Java 11 idzathandizidwa mpaka 2026. Kutulutsidwa kotsatira kwa LTS kukukonzekera Seputembara 2024. Tikukumbutseni kuti kuyambira ndikutulutsidwa kwa Java 10, pulojekitiyi idasinthiratu kunjira yatsopano yachitukuko, kutanthauza kuti kufupikitsa kupangidwa kwatsopano. Kugwira ntchito kwatsopano kumapangidwa munthambi imodzi yosinthidwa mosalekeza, yomwe imaphatikizapo zosintha zomwe zakonzedwa kale komanso zomwe nthambi zake zimayikidwa miyezi isanu ndi umodzi iliyonse kuti zikhazikitse zatsopano.
Zatsopano mu Java 17 zikuphatikiza:
- Kukhazikitsa koyeserera kofananira pamawu oti "switch" kumakonzedwa, komwe kumalola kugwiritsa ntchito ziwerengero zenizeni muzolemba za "nkhani", koma ma tempulo osinthika omwe amaphimba mndandanda wazinthu nthawi imodzi, zomwe m'mbuyomu zinali zofunikira kugwiritsa ntchito zovuta. maunyolo a mawu akuti "ngati ... kwina". Kuphatikiza apo, "kusintha" kumatha kuthana ndi ma NULL. chinthu o = 123L; Chingwe chosinthidwa = kusintha (o) { case Integer i -> String.format("int%d", i); mlandu Wautali l -> String.format("kutalika%d", l); mlandu kawiri d -> String.format("double%f", d); kesi Chingwe s -> String.format("Chingwe %s", s); zosasintha -> o.toString(); };
- Thandizo lokhazikika la makalasi osindikizidwa ndi ma interfaces, omwe sangathe kugwiritsidwa ntchito ndi makalasi ena ndi zolumikizira kuti alandire, kukulitsa, kapena kuwongolera kukhazikitsa. Makalasi osindikizidwa amaperekanso njira yodziwikiratu yoletsa kugwiritsa ntchito gulu lapamwamba kuposa zosintha zofikira, kutengera ndandanda yamagulu omwe amaloledwa kuwonjezera. phukusi com.example.geometry; Zilolezo za mawonekedwe agulu losindikizidwa com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}
- Chiwonetsero chachiwiri cha Vector API chikuperekedwa, chomwe chimapereka ntchito zowerengera vekitala zomwe zimagwiritsidwa ntchito pogwiritsa ntchito malangizo a vector pa x86_64 ndi purosesa ya AArch64 ndikulola kuti ntchito zizigwiritsidwa ntchito nthawi imodzi kuzinthu zingapo (SIMD). Mosiyana ndi mphamvu zomwe zimaperekedwa mu HotSpot JIT compiler for auto-vectorization of scalar operations, API yatsopano imapangitsa kuti zikhale zotheka kuwongolera bwino ma vectorization kuti agwirizane ndi deta.
- Anawonjezera chithunzithunzi cha Foreign Function & Memory API, chomwe chimalola mapulogalamu kuti azilumikizana ndi ma code ndi deta kunja kwa Java. API yatsopano imakulolani kuti muyimbire bwino ntchito zomwe si za JVM ndikupeza makumbukidwe osayendetsedwa ndi JVM. Mwachitsanzo, mutha kuyitanitsa ntchito kuchokera kumalaibulale omwe amagawana nawo akunja ndikupeza zambiri zamachitidwe osagwiritsa ntchito JNI.
- Injini yojambulira ya macOS, yomwe imapereka Java 2D API, yomwe imagwiritsidwanso ntchito mu Swing API, imasinthidwa kuti igwiritse ntchito Metal graphics API. Mwachisawawa, nsanjayi macOS OpenGL ikugwiritsidwabe ntchito, ndipo kuyatsa chithandizo cha Metal kumafuna kukhazikitsa gawo la "-Dsun.java2d.metal=true" ndikukhala ndi kutulutsidwa kochepa. macOS 10.14.x.
- Doko lowonjezera la nsanjayo macOS/AArch64 (Makompyuta a Apple otengera ma chip atsopano a Apple M1). Mbali yapadera ya doko ili ndi chithandizo cha njira yotetezera kukumbukira ya W^X (Write XOR Execute), yomwe imaletsa masamba okumbukira kuti asalembedwe komanso kuchitidwa nthawi imodzi. (Khodi imatha kuchitika pokhapokha mutaletsa mwayi wolemba, ndipo kulemba patsamba lokumbukira kumachitika pokhapokha mutaletsa mwayi wolemba.)
- Kubwereranso kukugwiritsa ntchito semantics ya strictfp pamawu oyandama. Thandizo la semantics "yosasinthika", yomwe ilipo kuyambira kutulutsidwa kwa Java 1.2, yathetsedwa, kuphatikizapo kuphweka kwa machitidwe omwe ali ndi ma coprocessors akale kwambiri a x87 (pambuyo pa kubwera kwa SSE2 malangizo, kufunikira kwa semantics yowonjezera kunasowa).
- Mitundu yatsopano yolumikizirana ndi majenereta a manambala a pseudorandom yakhazikitsidwa, ndipo ma algorithms owonjezera akhazikitsidwa kuti apangitse manambala mwachisawawa. Mapulogalamu amapatsidwa mwayi wosankha algorithm yopanga manambala a pseudorandom. Thandizo lotsogola lopangira zinthu zosasintha.
- Kulimbikitsa kutsekereza mwamphamvu kwa onse amkati a JDK, kupatula ma API ovuta monga sun.misc.Unsafe. Kukhazikika kwa encapsulation kumalepheretsa kuyesa kuchokera pamakhodi kuti mupeze makalasi amkati, njira, ndi magawo. M'mbuyomu, njira yotsekera mwamphamvu imatha kuzimitsidwa pogwiritsa ntchito njira ya "--illegal-access=permit", koma izi zatsitsidwa. Mapulogalamu omwe amafunikira mwayi wopeza makalasi amkati, njira, ndi magawo ayenera kutanthauzira momveka bwino pogwiritsa ntchito --add-opens kapena mawonekedwe a Add-Opens mufayilo yowonetsera.
- Mapulogalamu tsopano amatha kufotokoza zosefera za deta yochotsedwa, zomwe zingadalire nkhani komanso kusankhidwa mosiyanasiyana mogwirizana ndi ntchito zinazake zochotsedwa. Zosefera zomwe mumazifotokoza zimagwira ntchito pa zonse makina enieni (JVM lonse), mwachitsanzo, sizimangokhudza pulogalamu yokhayo, komanso malaibulale a chipani chachitatu omwe amagwiritsidwa ntchito mu pulogalamuyi.
- Swing wawonjezera njira ya javax.swing.filechooser.FileSystemView.getSystemIcon yokweza zithunzi zazikulu kuti ziwongolere UI pazithunzi za High DPI.
- API ya java.net.DatagramSocket imapereka chithandizo cholumikizira kumagulu a Multicast popanda kufunikira kosiyana java.net.MulticastSocket API.
- Chida cha IGV (Ideal Graph Visualizer) chakonzedwa bwino, ndikupereka chithunzithunzi chapakatikati choyimira ma code mu HotSpot VM C2 JIT compiler.
- Mu JavaDoc, pofanizira ndi javac compiler, cholakwika chikatuluka, kuchuluka kwa mzere wamavuto mufayilo yoyambira ndi pomwe cholakwika chikuwonetsedwa.
- Onjezani katundu wa native.encoding, wowonetsa dzina la kabisidwe ka zilembo zamakina (UTF-8, koi8-r, cp1251, ndi zina zotero).
- Mawonekedwe a java.time.InstantSource awonjezedwa, kulola kusokoneza nthawi popanda kutchula nthawi.
- Anawonjezera java.util.HexFormat API yosinthira kukhala mawonekedwe a hexadecimal ndi mosemphanitsa.
- Mawonekedwe a blackhole awonjezedwa kwa compiler, yomwe imalepheretsa ntchito zochotsa ma dead-code, zomwe zingagwiritsidwe ntchito poyesa ntchito.
- Onjezani njira ya "-Xlog: async" ku Runtime kuti mujambule zipika mumayendedwe asynchronous.
- Mukakhazikitsa zolumikizira zotetezeka, TLS 1.3 imayatsidwa mwachisawawa (kale TLS 1.2 idagwiritsidwa ntchito).
- Applet API yomwe idalengezedwa kale kuti ndi yachikale (java.applet.Applet*, javax.swing.JApplet), yomwe idagwiritsidwa ntchito poyendetsa mapulogalamu a Java mu msakatuli, yasunthidwa kupita kugulu lazomwe zikuyenera kuchotsedwa (kutayika kofunikira pambuyo potha kwa chithandizo. kwa pulogalamu yowonjezera ya Java ya asakatuli).
- Security Manager, yemwe wasiya kufunika kwa nthawi yayitali ndipo sanatchulidwe pambuyo pa kutha kwa chithandizo cha plugin ya msakatuli, wasunthidwa m'gulu la omwe akuyenera kuchotsedwa.
- Dongosolo la RMI Activation lachotsedwa, lomwe ndi lachikale, latsitsidwa m'gulu lachisankho mu Java 8 ndipo silinagwiritsidwe ntchito masiku ano.
- Wopanga zoyeserera yemwe amathandizira JIT (munthawi yake) pakuphatikiza kosinthika kwa Java code ya HotSpot JVM, komanso njira yopangira kuyembekezera (AOT, pasadakhale) makalasi kukhala makina a makina asanayambe makina enieni. , yachotsedwa ku SDK. Wopangayo adalembedwa ku Java ndikutengera ntchito ya Graal project. Zimadziwika kuti kukonza kwa compiler kumafuna ntchito zambiri, zomwe sizili zomveka ngati palibe chofunikira kuchokera kwa opanga.
Source: opennet.ru
