Kutolewa kwa Java SE15

Baada ya miezi sita ya maendeleo, Oracle iliyotolewa jukwaa Java SE15 (Jukwaa la Java, Toleo la Kawaida la 15), mradi wa OpenJDK wa chanzo huria unatumika kama utekelezaji wa marejeleo. Java SE 15 hudumisha utangamano wa nyuma na matoleo ya awali ya jukwaa la Java; miradi yote iliyoandikwa hapo awali ya Java itafanya kazi bila mabadiliko ikizinduliwa chini ya toleo jipya. Tayari kusakinisha Java SE 15 miundo (JDK, JRE na Server JRE) tayari kwa Linux (x86_64), Windows na macOS. Utekelezaji wa marejeleo uliotengenezwa na mradi wa OpenJDK Java 15 ni chanzo wazi kabisa chini ya leseni ya GPLv2, na vighairi vya GNU ClassPath vinavyoruhusu kuunganisha kwa nguvu na bidhaa za kibiashara.

Java SE 15 imeainishwa kama toleo la jumla la usaidizi na itaendelea kupokea masasisho hadi toleo lijalo. Tawi la Usaidizi wa Muda Mrefu (LTS) linapaswa kuwa Java SE 11, ambayo itaendelea kupokea masasisho hadi 2026. Tawi la awali la LTS la Java 8 litatumika hadi Desemba 2020. Toleo linalofuata la LTS limepangwa Septemba 2021. 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.

Ya ubunifu Java 15 mtu anaweza Weka alama:

  • Imejengwa ndani msaada kwa EdDSA (Edwards-Curve Digital Signature Algorithm) algoriti ya kuunda sahihi ya dijiti RFC 8032) Utekelezaji uliopendekezwa wa EdDSA hautegemei majukwaa ya vifaa, unalindwa dhidi ya mashambulizi ya njia ya kando (muda wa mara kwa mara wa mahesabu yote unahakikishwa) na ni kasi zaidi katika utendaji kuliko utekelezaji uliopo wa ECDSA ulioandikwa kwa lugha ya C, na kiwango sawa cha ulinzi. Kwa mfano, EdDSA kwa kutumia mkunjo wa duaradufu yenye ufunguo wa biti-126 huonyesha utendakazi sawa na ECDSA yenye mkunjo wa duaradufu secp256r1 na kitufe cha 128-bit.
  • Imeongezwa usaidizi wa majaribio kwa madarasa na violesura vilivyofungwa, ambavyo haviwezi kutumiwa na madarasa mengine na violesura kurithi, kupanua au kubatilisha utekelezaji. Madarasa yaliyofungwa pia hutoa njia dhahiri zaidi ya kuzuia matumizi ya darasa kuu kuliko virekebishaji vya ufikiaji, kulingana na kuorodhesha kwa uwazi mada ndogo zinazoruhusiwa kwa upanuzi.

    kifurushi com.example.jiometri;

    Umbo la darasa lililofungwa kwa umma
    vibali com.mfano.polar.Mduara,
    com.mfano.mstatili.quad.
    com.example.quad.simple.Square {…}

  • Imeongezwa msaada kwa madarasa yaliyofichwa ambayo hayawezi kutumiwa moja kwa moja na bytecode ya madarasa mengine. Kusudi kuu la madarasa yaliyofichwa ni kutumika katika mifumo ambayo hutoa darasa kwa nguvu wakati wa kukimbia na kuzitumia kwa njia isiyo ya moja kwa moja, kupitia kutafakari. Madarasa kama haya huwa na mzunguko mdogo wa maisha, kwa hivyo kuyadumisha kwa ufikiaji kutoka kwa madarasa yanayotokana na takwimu sio haki na itasababisha kuongezeka kwa matumizi ya kumbukumbu. Madarasa yaliyofichwa pia huondoa hitaji la API isiyo ya kawaida sun.misc.Unsafe::defineAnonymousClass, ambayo imepangwa kuondolewa katika siku zijazo.
  • Chombo cha kuzoa taka cha ZGC (Mkusanyaji takataka cha Z) kimeimarishwa na kinatambulika kuwa tayari kwa matumizi makubwa. ZGC inafanya kazi katika hali ya passiv, inapunguza latency kutokana na ukusanyaji wa takataka iwezekanavyo (muda wa duka wakati wa kutumia ZGC hauzidi 10 ms.) na inaweza kufanya kazi na lundo ndogo na kubwa, kuanzia ukubwa wa megabytes mia kadhaa hadi terabytes nyingi.
  • Imetulia na kupatikana tayari kwa matumizi ya jumla
    mtoza takataka Shenandoah, kufanya kazi na pause kidogo (Low-Pause-Muda wa Kukusanya Takataka). Shenandoah ilitengenezwa na Red Hat na inajulikana kwa matumizi yake ya algoriti ambayo inapunguza muda wa kuhifadhi wakati wa ukusanyaji wa takataka kwa kufanya usafishaji sambamba na utekelezaji wa programu za Java. Ukubwa wa ucheleweshaji ulioletwa na mtozaji wa takataka unatabirika na hautegemei ukubwa wa chungu, i.e. kwa lundo la MB 200 na GB 200 ucheleweshaji utakuwa sawa (usitoke nje zaidi ya 50 ms na kawaida ndani ya 10 ms);

  • Usaidizi umeimarishwa na kuletwa katika lugha vizuizi vya maandishi - aina mpya ya herufi halisi ambayo hukuruhusu kujumuisha data ya maandishi ya safu-nyingi kwenye msimbo wa chanzo bila kutumia herufi kutoroka na kuhifadhi umbizo la maandishi asilia kwenye kizuizi. Kizuizi kimeandaliwa na nukuu tatu mara mbili.

    Kwa mfano, badala ya kanuni

    String html = " Β» +
    "\n\t" + " Β» +
    "\n\t\t" + " \"Java 1 iko hapa!\" Β» +
    "\n\t" + " Β» +
    "\n" + " ";

    unaweza kubainisha:

    String html = """


    Β»Java 1\
    iko hapa!

    """;

  • Imeundwa upya Legacy DatagramSocket API. Utekelezaji wa zamani wa java.net.DatagramSocket na java.net.MulticastSocket umebadilishwa na utekelezwaji wa kisasa ambao ni rahisi kutatua na kudumisha, na pia unaweza kuendana na mitiririko pepe iliyotengenezwa ndani ya mradi. Loom. Ikiwa kuna uwezekano wa kutopatana na msimbo uliopo, utekelezaji wa zamani haujaondolewa na unaweza kuwashwa kwa kutumia chaguo la jdk.net.usePlainDatagramSocketImpl.
  • Utekelezaji wa pili wa majaribio ulipendekezwa vinavyolingana na muundo katika opereta "mfano", ambayo hukuruhusu kufafanua mara moja kibadilishaji cha ndani ili kufikia thamani iliyoangaliwa. Kwa mfano, unaweza kuandika mara moja "ikiwa (obj exampleof String s && s.length() > 5) {.. s.contains(..) ..}" bila kufafanua kwa uwazi "String s = (String) obj".

    Ilikuwa:

    ikiwa (obj exampleof Group) {
    Kikundi cha kikundi = (Kikundi) obj;
    var entries = group.getEntries();
    }

    Sasa unaweza kufanya bila ufafanuzi "Kikundi cha Kikundi = (Kikundi) obj":

    ikiwa (obj mfano wa kikundi cha Kikundi) {
    var entries = group.getEntries();
    }

  • Imependekezwa Utekelezaji wa pili wa majaribio ya neno kuu "rekodi", ambayo hutoa fomu ya kompakt ya kufafanua madarasa, hukuruhusu kuzuia kufafanua kwa uwazi njia tofauti za kiwango cha chini kama vile equals(), hashCode() na toString() katika hali ambapo data huhifadhiwa tu katika nyanja ambazo tabia yake haibadiliki. Wakati darasa linapotumia utekelezwaji wa kawaida wa njia za equals(), hashCode() na toString(), inaweza kufanya bila ufafanuzi wao wazi:

    rekodi ya umma Transaction Bank(Tarehe ya Mitaa,
    kiasi mara mbili
    Maelezo ya kamba) {}

    Tamko hili litaongeza kiotomati utekelezaji wa njia za equals(), hashCode() na toString() pamoja na mbinu za mjenzi na getter.

  • Imependekezwa onyesho la kuchungulia la pili la API ya Ufikiaji wa Kumbukumbu ya Kigeni, inayoruhusu programu za Java kufikia maeneo ya kumbukumbu kwa usalama na kwa ufanisi nje ya lundo la Java kwa kuchezea sehemu mpya ya MemorySegment, MemoryAddress, na MemoryLayout.
  • Imezimwa na kuacha kutumia mbinu ya uboreshaji wa Kufunga kwa Upendeleo inayotumiwa katika HotSpot JVM ili kupunguza kufunga kwa njia ya juu. Mbinu hii imepoteza umuhimu wake kwa mifumo iliyo na maagizo ya atomiki yaliyotolewa na CPU za kisasa, na ni ngumu sana kudumisha kwa sababu ya ugumu wake.
  • Imetangazwa utaratibu wa kizamani Uanzishaji wa RMI, ambayo itaondolewa katika toleo la baadaye. Imebainika kuwa Uanzishaji wa RMI umepitwa na wakati, umeachwa kwa kategoria ya chaguo katika Java 8 na karibu haitumiki katika mazoezi ya kisasa.
  • Imefutwa Injini ya JavaScript Nashorn, ambayo iliacha kutumika katika Java SE 11.
  • Imeondolewa bandari za Solaris OS na vichakataji vya SPARC (Solaris/SPARC, Solaris/x64 na Linux/SPARC). Kuondoa bandari hizi kutaruhusu jumuiya kuharakisha uundaji wa vipengele vipya vya OpenJDK bila kupoteza muda kudumisha vipengele mahususi vya Solaris na SPARC.

Chanzo: opennet.ru

Kuongeza maoni