Rhyddhad Java SE 15

Ar ôl chwe mis o ddatblygiad, Oracle rhyddhau platfform JavaSE 15 (Java Platform, Standard Edition 15), mae'r prosiect ffynhonnell agored OpenJDK yn cael ei ddefnyddio fel gweithrediad cyfeirio. Mae Java SE 15 yn cynnal cydnawsedd yn ôl â datganiadau blaenorol y platfform Java; bydd yr holl brosiectau Java a ysgrifennwyd yn flaenorol yn gweithio heb newidiadau pan gânt eu lansio o dan y fersiwn newydd. Adeiladau Java SE 15 sy'n barod i'w gosod (JDK, JRE a Server JRE) parod ar gyfer Linux (x86_64), Windows a macOS. Gweithredu cyfeirio a ddatblygwyd gan y prosiect OpenJDK Java 15 yn ffynhonnell gwbl agored o dan y drwydded GPLv2, gydag eithriadau GNU ClassPath yn caniatáu cysylltu deinamig â chynhyrchion masnachol.

Mae Java SE 15 wedi'i ddosbarthu fel datganiad cymorth cyffredinol a bydd yn parhau i dderbyn diweddariadau tan y datganiad nesaf. Dylai'r gangen Cymorth Hirdymor (LTS) fod yn Java SE 11, a fydd yn parhau i dderbyn diweddariadau tan 2026. Bydd cangen flaenorol LTS o Java 8 yn cael ei chefnogi tan fis Rhagfyr 2020. Mae'r datganiad LTS nesaf wedi'i drefnu ar gyfer mis Medi 2021. Gadewch inni eich atgoffa, gan ddechrau gyda rhyddhau Java 10, bod y prosiect wedi newid i broses ddatblygu newydd, gan awgrymu cylch byrrach ar gyfer ffurfio datganiadau newydd. Mae swyddogaethau newydd bellach yn cael eu datblygu mewn un brif gangen sy'n cael ei diweddaru'n gyson, sy'n cynnwys newidiadau parod ac y mae canghennau'n cael eu canghennu ohoni bob chwe mis i sefydlogi datganiadau newydd.

O'r arloesiadau Java 15 all neb Marc:

  • Adeiledig cefnogaeth i algorithm creu llofnod digidol EdDSA (Edwards-Curve Digital Signature Algorithm). RFC 8032). Nid yw gweithrediad arfaethedig EdDSA yn dibynnu ar lwyfannau caledwedd, caiff ei ddiogelu rhag ymosodiadau sianel ochr (sicrheir amser cyson yr holl gyfrifiadau) ac mae'n gyflymach o ran perfformiad na gweithrediad presennol ECDSA a ysgrifennwyd yn iaith C, gyda'r un lefel o amddiffyniad. Er enghraifft, mae EdDSA sy'n defnyddio cromlin eliptig gydag allwedd 126-did yn dangos perfformiad tebyg i ECDSA gyda chromlin eliptig secp256r1 ac allwedd 128-did.
  • Wedi adio cefnogaeth arbrofol ar gyfer dosbarthiadau wedi'u selio a rhyngwynebau, na ellir eu defnyddio gan ddosbarthiadau a rhyngwynebau eraill i etifeddu, ymestyn, neu ddiystyru'r gweithredu. Mae dosbarthiadau wedi'u selio hefyd yn darparu ffordd fwy datganiadol i gyfyngu ar y defnydd o uwchddosbarth nag addaswyr mynediad, yn seiliedig ar restru'n benodol yr is-ddosbarthiadau y caniateir eu hymestyn.

    pecyn com.example.geometry;

    Siâp dosbarth wedi'i selio'n gyhoeddus
    yn caniatáu com.example.polar.Circle,
    com.example.quad.Rectangle,
    com.example.quad.simple.Square {…}

  • Wedi adio cefnogaeth ar gyfer dosbarthiadau cudd na ellir eu defnyddio'n uniongyrchol gan y cod beit o ddosbarthiadau eraill. Pwrpas allweddol dosbarthiadau cudd yw cael eu defnyddio mewn fframweithiau sy'n cynhyrchu dosbarthiadau yn ddeinamig ar amser rhedeg ac yn eu defnyddio'n anuniongyrchol, trwy adlewyrchiad. Mae gan ddosbarthiadau o'r fath gylchred bywyd cyfyngedig fel arfer, felly ni ellir cyfiawnhau eu cynnal ar gyfer mynediad o ddosbarthiadau a gynhyrchir yn statig a bydd ond yn arwain at fwy o ddefnydd cof. Mae dosbarthiadau cudd hefyd yn dileu'r angen am yr API ansafonol sun.misc.Unsafe::defineAnonymousClass, y bwriedir ei ddileu yn y dyfodol.
  • Mae casglwr sbwriel ZGC (Z Garbage Collector) wedi'i sefydlogi a chydnabyddir ei fod yn barod i'w ddefnyddio'n eang. Mae ZGC yn gweithredu mewn modd goddefol, yn lleihau hwyrni oherwydd casglu sbwriel gymaint â phosibl (nid yw amser y stondin wrth ddefnyddio ZGC yn fwy na 10 ms.) a gall weithio gyda phentyrrau bach ac enfawr, yn amrywio o ran maint o gannoedd o megabeit i lawer o terabytes.
  • Wedi'i sefydlogi a'i ganfod yn barod i'w ddefnyddio'n gyffredinol
    casglwr sbwriel Shenandoah, gweithio gyda seibiannau lleiaf (Casglwr Sbwriel Amser Saib Isel). Datblygwyd Shenandoah gan Red Hat ac mae'n nodedig am ei ddefnydd o algorithm sy'n lleihau'r amser stondin yn ystod casglu sbwriel trwy redeg glanhau ochr yn ochr â gweithredu cymwysiadau Java. Mae maint yr oedi a gyflwynir gan y casglwr sbwriel yn rhagweladwy ac nid yw'n dibynnu ar faint y domen, h.y. ar gyfer pentyrrau o 200 MB a 200 GB bydd yr oedi yr un fath (paid â dod allan y tu hwnt i 50 ms ac fel arfer o fewn 10 ms);

  • Mae cymorth wedi'i sefydlogi a'i gyflwyno i'r iaith blociau testun - ffurf newydd o lythrennau llinynnol sy'n eich galluogi i gynnwys data testun aml-linell yn y cod ffynhonnell heb ddefnyddio nod dianc a chadw'r fformat testun gwreiddiol yn y bloc. Mae'r bloc wedi'i fframio gan dri dyfynbris dwbl.

    Er enghraifft, yn lle'r cod

    Llinyn html = " »+
    \n" +" »+
    " +"\n\t\t" +" \"Mae Java 1 yma!\" »+
    \n" +" »+
    "\n" +" " ;

    gallwch chi nodi:

    Llinyn html = """


    »Java 1\
    sydd yma!

    """;

  • Wedi'i ailgynllunio API Legacy DatagramSocket. Mae hen weithrediadau java.net.DatagramSocket a java.net.MulticastSocket wedi'u disodli gan weithrediad modern sy'n haws ei ddadfygio a'i gynnal, ac sydd hefyd yn gydnaws â ffrydiau rhithwir a ddatblygwyd o fewn y prosiect Llawen. Mewn achos o anghydnawsedd posibl â'r cod presennol, nid yw'r hen weithrediad wedi'i ddileu a gellir ei alluogi gan ddefnyddio'r opsiwn jdk.net.usePlainDatagramSocketImpl.
  • Ail weithrediad arbrofol arfaethedig paru patrwm yn y gweithredwr “instanceof”, sy'n eich galluogi i ddiffinio newidyn lleol ar unwaith i gael mynediad at y gwerth wedi'i wirio. Er enghraifft, gallwch ysgrifennu ar unwaith “os (obj instance of String s && s.length()> 5) {.. s.contains(..) ..}” heb ddiffinio “String s = (String) obj” yn benodol.

    Oedd:

    os (obj enghraifft o Grŵp) {
    Grŵp grŵp = (Group) obj;
    cofnodion var = group.getEntries();
    }

    Nawr gallwch chi wneud heb y diffiniad “Group group = (Group) obj”:

    os (obj enghraifft o grŵp Grŵp) {
    cofnodion var = group.getEntries();
    }

  • Awgrymir ail weithrediad arbrofol yr allweddair "cofnod", sy'n darparu ffurf gryno ar gyfer diffinio dosbarthiadau, sy'n eich galluogi i osgoi diffinio'n benodol amrywiol ddulliau lefel isel megis equals(), hashCode() a toString() mewn achosion lle mae data'n cael ei storio mewn meysydd nad yw eu hymddygiad yn newid yn unig. Pan fydd dosbarth yn defnyddio gweithrediadau safonol y dulliau hafal (), hashCode() a toString(), gall wneud heb eu diffiniad penodol:

    cofnod cyhoeddus Trafodion Banc(dyddiad Dyddiad Lleol,
    swm dwbl
    Disgrifiad llinyn) {}

    Bydd y datganiad hwn yn ychwanegu gweithrediadau'r dulliau hafal (), hashCode() a toString() yn awtomatig yn ychwanegol at y dulliau lluniwr a getter.

  • Arfaethedig ail ragolwg o'r API Mynediad Tramor-Cof, gan ganiatáu i gymwysiadau Java gael mynediad diogel ac effeithlon i ranbarthau cof y tu allan i domen Java trwy drin y tyniadau MemorySegment, MemoryAddress, a MemoryLayout newydd.
  • Anabl ac yn anghymeradwyo'r dechneg optimeiddio Cloi Tuedd a ddefnyddiwyd yn y JVM HotSpot i leihau cloi uwchben. Mae'r dechneg hon wedi colli ei pherthnasedd ar systemau gyda chyfarwyddiadau atomig a ddarperir gan CPUs modern, ac mae'n rhy llafurddwys i'w chynnal oherwydd ei chymhlethdod.
  • Cyhoeddwyd mecanwaith hen ffasiwn RMI Actifadu, a fydd yn cael ei ddileu mewn datganiad yn y dyfodol. Nodir bod RMI Activation yn hen ffasiwn, wedi'i ollwng i'r categori opsiwn yn Java 8 ac nad yw bron byth yn cael ei ddefnyddio mewn arfer modern.
  • Wedi'i ddileu injan JavaScript rhino, a anghymeradwywyd yn Java SE 11.
  • Wedi'i dynnu porthladdoedd ar gyfer proseswyr Solaris OS a SPARC (Solaris/SPARC, Solaris/x64 a Linux/SPARC). Bydd cael gwared ar y porthladdoedd hyn yn caniatáu i'r gymuned gyflymu datblygiad nodweddion OpenJDK newydd heb wastraffu amser yn cynnal nodweddion penodol Solaris a SPARC.

Ffynhonnell: opennet.ru

Ychwanegu sylw