Kutolewa kwa Java SE18

Baada ya miezi sita ya maendeleo, Oracle ilitoa Java SE 18 (Jukwaa la Java, Toleo la Kawaida la 18), ambayo hutumia mradi wa OpenJDK wa chanzo-wazi kama utekelezaji wa marejeleo. Isipokuwa kuondolewa kwa baadhi ya vipengele vilivyopitwa na wakati, Java SE 18 hudumisha upatanifu wa nyuma na matoleo ya awali ya jukwaa la Java - miradi mingi ya Java iliyoandikwa hapo awali itafanya kazi bila mabadiliko inapoendeshwa chini ya toleo jipya. Miundo iliyo tayari kusakinishwa ya Java SE 18 (JDK, JRE na Server JRE) imetayarishwa kwa ajili ya Linux (x86_64, AArch64), Windows (x86_64) na macOS (x86_64, AArch64). Iliyoundwa na mradi wa OpenJDK, utekelezaji wa marejeleo ya Java 18 ni chanzo wazi kabisa chini ya leseni ya GPLv2, na vighairi vya GNU ClassPath vinavyoruhusu kuunganisha kwa nguvu na bidhaa za kibiashara.

Java SE 18 imeainishwa kama toleo la kawaida la usaidizi na itaendelea kupokea masasisho hadi toleo lijalo. Tawi la Usaidizi wa Muda Mrefu (LTS) linapaswa kuwa Java SE 17, ambayo itaendelea kupokea masasisho hadi 2029. Hebu tukumbushe kwamba kuanzia na kutolewa kwa Java 10, mradi ulibadilika kwa mchakato mpya wa maendeleo, ikimaanisha mzunguko mfupi wa uundaji wa matoleo mapya. Utendaji mpya sasa unakuzwa katika tawi moja kuu lililosasishwa kila mara, ambalo linajumuisha mabadiliko yaliyotengenezwa tayari na ambayo matawi hukatwa kila baada ya miezi sita ili kuleta utulivu wa matoleo mapya.

Vipengele vipya katika Java 18 ni pamoja na:

  • Usimbaji chaguomsingi ni UTF-8. API za Java zinazochakata data ya maandishi kulingana na usimbaji wa herufi sasa zitatumia UTF-8 kwa chaguomsingi kwenye mifumo yote, bila kujali mipangilio ya mfumo na mipangilio ya lugha. Ili kurejea tabia ya zamani, ambapo usimbaji huchaguliwa kulingana na eneo la mfumo, unaweza kutumia chaguo "-Dfile.encoding=COMPAT".
  • Kifurushi hiki kinajumuisha kifurushi cha com.sun.net.httpserver, ambacho kinajumuisha matumizi ya jwebserver na API ya maktaba na utekelezaji wa seva rahisi ya http ya kuhudumia maudhui tuli (CGI na vidhibiti-kama servlet havitumiki). Seva ya HTTP iliyojengewa ndani haijaboreshwa kwa ajili ya mzigo wa kazi na haitumii udhibiti wa ufikiaji na uthibitishaji, kwa kuwa inalenga hasa kutumika katika mchakato wa kutengeneza prototyping, utatuzi na majaribio ya miradi.
  • JavaDoc hutoa usaidizi kwa lebo ya "@snippet" ili kupachika mifano ya kazi na vijisehemu vya msimbo kwenye hati za API, ambapo unaweza kutumia zana za uthibitishaji, uangaziaji wa sintaksia na ujumuishaji wa IDE.
  • Utekelezaji wa java.lang.reflect API (Core Reflection), iliyoundwa ili kupata taarifa kuhusu mbinu, mashamba na wajenzi wa darasa, pamoja na upatikanaji wa muundo wa ndani wa madarasa, imeundwa upya. API ya java.lang.reflect yenyewe bado haijabadilika, lakini sasa inatekelezwa kwa kutumia vishikizo vya mbinu vilivyotolewa na moduli ya java.lang.invoke, badala ya kutumia jenereta za bytecode. Mabadiliko hayo yalituruhusu kuunganisha utekelezaji wa java.lang.reflect na java.lang.invoke, na kurahisisha udumishaji wake.
  • Onyesho la kuchungulia la tatu la API ya Vekta limependekezwa, kutoa utendakazi kwa hesabu za vekta ambazo hutekelezwa kwa kutumia maagizo ya vekta kwenye vichakataji vya x86_64 na AArch64 na kuruhusu utendakazi kutumika kwa wakati mmoja kwa thamani nyingi (SIMD). Tofauti na uwezo uliotolewa katika mkusanyaji wa HotSpot JIT wa uwekaji vekta otomatiki wa shughuli za kadiri, API mpya huwezesha kudhibiti uwekaji vekta kwa uchakataji sambamba wa data.
  • Kiolesura cha SPI (kiolesura cha mtoa huduma) cha kusuluhisha majina ya seva pangishi na anwani za IP, huku kuruhusu kutumia visuluhishi mbadala katika java.net.InetAddress ambavyo havifungamani na vidhibiti vinavyotolewa na mfumo wa uendeshaji.
  • Onyesho la kuchungulia la pili la API ya Shughuli za Kigeni na Kumbukumbu imetolewa, ikiruhusu programu kuingiliana na msimbo na data nje ya muda wa utekelezaji wa Java. API mpya hukuruhusu kupiga simu kwa utendakazi zisizo za JVM na kufikia kumbukumbu isiyodhibitiwa na JVM. Kwa mfano, unaweza kupiga simu utendakazi kutoka kwa maktaba zilizoshirikiwa za nje na kufikia data ya mchakato bila kutumia JNI.
  • Utekelezaji wa pili wa majaribio wa ulinganishaji wa muundo katika misemo ya "badili" umeongezwa, ikiruhusu utumiaji wa muundo unaonyumbulika katika lebo za "kesi" badala ya maadili kamili, inayofunika safu ya maadili mara moja, ambayo hapo awali ilikuwa muhimu kutumia. minyororo migumu ya misemo ya "ikiwa ... vinginevyo". Kitu o = 123L; Kamba iliyoumbizwa = kubadili (o) { case Integer i -> String.format("int %d", i); kesi Long l -> String.format("nde %d", l); kesi Double d -> String.format("double %f", d); kesi Kamba s -> String.format("Kamba %s", s); chaguo-msingi -> o.toString(); };
  • Utaratibu wa kukamilisha na mbinu zake zinazohusiana kama vile Object.finalize(), Enum.finalize(), Runtime.runFinalization() na System.runFinalization() zimeacha kutumika na zitazimwa katika toleo lijalo.
  • ZGC (Kikusanya Takataka Z), SerialGC, na wakusanya takataka wa ParallelGC wanaunga mkono utenganishaji wa safu mlalo.

Chanzo: opennet.ru

Kuongeza maoni