Rhyddhad Java SE 16

Ar ôl chwe mis o ddatblygiad, rhyddhaodd Oracle Java SE 16 (Java Platform, Standard Edition 16), sy'n defnyddio'r prosiect OpenJDK fel gweithrediad cyfeirio. Mae Java SE 16 yn cynnal cydnawsedd yn ôl â datganiadau blaenorol o'r 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. Mae adeiladau parod i'w gosod o Java SE 16 (JDK, JRE a Server JRE) yn cael eu paratoi ar gyfer Linux (x86_64, AArch64), Windows a macOS. Wedi'i ddatblygu gan y prosiect OpenJDK, mae gweithrediad cyfeirio Java 16 yn ffynhonnell agored lawn o dan y drwydded GPLv2, gydag eithriadau GNU ClassPath yn caniatáu cysylltu deinamig â chynhyrchion masnachol.

Mae Java SE 16 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. 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.

Wrth baratoi ar gyfer y datganiad newydd, mae datblygiad wedi symud o'r system rheoli fersiwn Mercurial i Git a llwyfan datblygu cydweithredol GitHub. Disgwylir i'r mudo wella perfformiad gweithrediadau ystorfa, cynyddu effeithlonrwydd storio, darparu mynediad i newidiadau trwy gydol hanes y prosiect, gwella cefnogaeth ar gyfer adolygu cod, a galluogi APIs i awtomeiddio llifoedd gwaith. Yn ogystal, mae'r defnydd o Git a GitHub yn gwneud y prosiect yn fwy deniadol i ddechreuwyr a datblygwyr sy'n gyfarwydd â Git.

Mae nodweddion newydd yn Java 16 yn cynnwys:

  • Ychwanegwyd modiwl arbrofol jdk.incubator.vector gyda gweithrediad y Vector API, sy'n darparu swyddogaethau ar gyfer cyfrifiadau fector sy'n cael eu perfformio gan ddefnyddio cyfarwyddiadau fector ar broseswyr x86_64 ac AArch64 ac yn caniatáu i weithrediadau gael eu cymhwyso ar yr un pryd i werthoedd lluosog (SIMD). Yn wahanol i'r galluoedd a ddarperir yn y casglwr HotSpot JIT ar gyfer auto-fectoreiddio gweithrediadau sgalar, mae'r API newydd yn caniatáu ichi reoli fectoreiddio yn benodol ar gyfer prosesu data cyfochrog.
  • Caniateir i god HotSpot JDK a VM a ysgrifennwyd yn C ++ ddefnyddio nodweddion a gyflwynwyd yn y fanyleb C ++14. Yn flaenorol, caniatawyd safonau C++98/03.
  • Mae'r ZGC (Z Garbage Collector), sy'n gweithredu mewn modd goddefol ac yn lleihau oedi oherwydd casglu sbwriel gymaint â phosibl, wedi ychwanegu'r gallu i brosesu staciau edau yn gyfochrog heb oedi edafedd cymhwyso. Bellach dim ond gwaith sy'n gofyn am ataliad sydd gan y ZGC, sydd ag oedi cyson, fel arfer heb fod yn fwy na ychydig gannoedd o ficroeiliadau.
  • Ychwanegwyd cefnogaeth ar gyfer socedi Unix (AF_UNIX) i'r dosbarthiadau SocketChannel, ServerSocketChannel a java.nio.channels.
  • Mae porthladd wedi'i weithredu ar gyfer y dosbarthiad Linux Alpaidd gyda'r musl llyfrgell safonol C, sy'n boblogaidd mewn amgylcheddau ar gyfer cynwysyddion, microservices, cwmwl a systemau gwreiddio. Mae'r porthladd arfaethedig mewn amgylcheddau o'r fath yn caniatáu ichi redeg rhaglenni Java fel cymwysiadau rheolaidd. Yn ogystal, gan ddefnyddio jlink, gallwch gael gwared ar yr holl fodiwlau nas defnyddiwyd a chreu amgylchedd lleiaf posibl sy'n ddigonol i redeg y rhaglen, sy'n eich galluogi i greu delweddau cryno sy'n benodol i'r rhaglen.
  • Mae'r mecanwaith Metaspace Elastig wedi'i roi ar waith, gan wneud y gorau o'r gweithrediadau o ddyrannu a dychwelyd cof a feddiannir gan fetadata dosbarth (metaspace) yn JVM HotSpot. Mae'r defnydd o Elastic Metaspace yn lleihau darnio cof, yn lleihau gorbenion llwythwr dosbarth, ac mae hefyd yn cael effaith fuddiol ar berfformiad cymwysiadau gweinydd hirdymor oherwydd dychweliad cyflymach cof a feddiannir gan fetadata dosbarth nas defnyddiwyd i'r system weithredu. I ddewis y modd rhyddhau cof ar ôl dadlwytho dosbarthiadau, cynigir yr opsiwn “-XX:MetaspaceReclaimPolicy=(cytbwys | ymosodol | dim)”.
  • Mae porthladd JDK wedi'i ychwanegu ar gyfer systemau Windows sy'n rhedeg ar galedwedd gyda phroseswyr yn seiliedig ar bensaernïaeth AArch64.
  • Mae trydydd rhagolwg o'r API Mynediad Cof Tramor wedi'i gynnig, 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.
  • Mae API Cyswllt Tramor arbrofol wedi'i roi ar waith, sy'n darparu mynediad o Java i god brodorol. Ynghyd â'r API Cof Tramor, mae'r rhyngwyneb rhaglennu newydd yn ei gwneud hi'n llawer haws creu deunydd lapio dros lyfrgelloedd confensiynol a rennir.
  • Ychwanegwyd y cyfleustodau jpackage, sy'n eich galluogi i greu pecynnau ar gyfer cymwysiadau Java hunangynhwysol. Mae'r cyfleustodau'n seiliedig ar javapackager o JavaFX ac mae'n caniatáu ichi greu pecynnau mewn fformatau sy'n frodorol i wahanol lwyfannau (msi ac exe ar gyfer Windows, pkg a dmg ar gyfer macOS, deb a rpm ar gyfer Linux). Mae'r pecynnau'n cynnwys yr holl ddibyniaethau gofynnol.
  • Galluogir amgįu caeth o holl fewnolion JDK yn ddiofyn, ac eithrio APIs hanfodol megis sun.misc.Unsafe. Mae gwerth yr opsiwn “--illegal-access” bellach wedi'i osod i “wadu” yn lle “caniatáu” yn ddiofyn, a fydd yn rhwystro ymdrechion rhag cod i gael mynediad i'r mwyafrif o ddosbarthiadau, dulliau a meysydd mewnol. I osgoi'r cyfyngiad, defnyddiwch yr opsiwn "-illegal-access=permit".
  • Mae gweithredu paru patrwm yn y gweithredwr “instanceof” wedi'i sefydlogi, sy'n eich galluogi i ddiffinio newidyn lleol ar unwaith i gyfeirio 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: if (obj instanceof Group) { Group group = (Group) obj; cofnodion var = group.getEntries(); } Nawr gallwch chi wneud heb ddiffinio “Group group = (Group) obj”: os (obj instanceof Grŵp grŵp) { var cofnodion = group.getEntries(); }
  • Mae gweithrediad yr allweddair "cofnod" wedi'i sefydlogi, gan ddarparu ffurf gryno ar gyfer diffiniadau dosbarth sy'n dileu'r angen i ddiffinio'n benodol amrywiol ddulliau lefel isel fel hafaliadau (), hashCode () a toString () mewn achosion lle mae data'n cael ei storio dim ond mewn meysydd lle nad yw'n newid. Pan fydd dosbarth yn defnyddio gweithrediadau safonol y dulliau hafal (), hashCode() a toString(), gall wneud heb eu diffiniad penodol: cofnod cyhoeddus Trafodaeth Banc(Dyddiad Lleol, swm dwbl, disgrifiad llinynnol) {}

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

  • Cynigir ail ddrafft ar gyfer dosbarthiadau wedi'u selio a rhyngwynebau na ellir eu defnyddio gan ddosbarthiadau a rhyngwynebau eraill i etifeddu, ymestyn, neu ddiystyru gweithrediadau. 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; dosbarth wedi'i selio cyhoeddus yn caniatáu Siâp com.example.polar.Circle, com.example.quad.Rectangle, com.example.quad.simple.Square {…}

Ffynhonnell: opennet.ru

Ychwanegu sylw