Rhyddhad Java SE 14

Ar ôl chwe mis o ddatblygiad, Oracle rhyddhau platfform JavaSE 14 (Java Platform, Standard Edition 14), mae'r prosiect ffynhonnell agored OpenJDK yn cael ei ddefnyddio fel gweithrediad cyfeirio. Mae Java SE 14 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 14 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 14 yn ffynhonnell gwbl agored o dan y drwydded GPLv2, gydag eithriadau GNU ClassPath yn caniatáu cysylltu deinamig â chynhyrchion masnachol.

Mae Java SE 14 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 14 all neb Marc:

  • Ychwanegwyd cefnogaeth arbrofol 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();
    }

  • Ychwanegwyd cefnogaeth arbrofol ar gyfer yr allweddair newydd "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.

  • Safonedig ac mae cefnogaeth ar gyfer ffurf newydd o ymadroddion “switsh” wedi'i alluogi yn ddiofyn, nad oes angen nodi'r gweithredwr “torri”, sy'n caniatáu ichi gyfuno labeli ailadroddus a gellir eu defnyddio nid yn unig ar ffurf gweithredwr, ond hefyd fel gweithredwr mynegiant.

    var log = switsh (digwyddiad) {
    achos CHWARAE -> "Defnyddiwr wedi sbarduno'r botwm chwarae";
    achos STOPIO, PAUSE -> “Defnyddiwr angen seibiant”;
    rhagosodedig -> {
    Neges llinynnol = event.toString();
    LocalDateTime nawr = LocalDateTime.now();
    cynnyrch "Digwyddiad anhysbys" + neges +
    » wedi mewngofnodi » + nawr;
    }
    };

  • Cefnogaeth arbrofol estynedig 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. Yn Java 14, mae blociau testun nawr yn cefnogi'r dilyniant dianc "\s" i ddiffinio gofod sengl a "\" i gyd-fynd â'r llinell nesaf (gan anwybyddu llinellau newydd pan fydd angen i chi argraffu llinell hir iawn). Er enghraifft, yn lle cod

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

    gallwch chi nodi:

    Llinyn html = """


    »Java 1\
    sydd yma!

    """;

  • Mae cynnwys gwybodaeth diagnosteg pan geir eithriadau wedi'i ehangu NullPointerException. Er mai dim ond at rif y llinell y cyfeiriodd y neges gwall yn flaenorol, nawr mae'n nodi pa ddull a achosodd yr eithriad. Dim ond pan gaiff ei lansio gyda'r faner “-XX:+ ShowCodeDetailsInExceptionMessages” y mae diagnosteg uwch yn cael ei alluogi ar hyn o bryd. Er enghraifft, wrth nodi'r faner hon, yr eithriad yn y llinell

    var name = user.getLocation().getCity().getName();

    bydd yn arwain at neges

    Eithriad yn yr edefyn "prif" java.lang.NullPointerException: Methu galw "Location.getCity()"
    oherwydd bod gwerth dychwelyd "User.getLocation()" yn null
    yn NullPointerExample.main(NullPointerExample.java:5):5)

    sy'n ei gwneud yn glir na chafodd y dull Location.getCity() ei alw a dychwelodd User.getLocation() null.

  • Gweithredwyd Rhagolwg o'r 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.
  • I'r casglwr sbwriel G1 wedi adio mecanwaith dyrannu cof newydd sy'n ystyried manylion gweithio ar systemau mawr gan ddefnyddio'r bensaernïaeth YN. Mae'r dyraniad cof newydd wedi'i alluogi gan ddefnyddio'r faner “+ XX: + UseNUMA” a gall wella perfformiad ar systemau NUMA yn sylweddol.
  • Wedi adio API ar gyfer monitro ar-y-hedfan o ddigwyddiadau JFR (JDK Flight Recorder), er enghraifft ar gyfer trefnu monitro parhaus.
  • Wedi adio modiwl jdk.nio.mapmode, sy'n cynnig moddau newydd (READ_ONLY_SYNC, WRITE_ONLY_SYNC) ar gyfer creu byfferau beit wedi'u mapio (MappedByteBuffer) sy'n cyfeirio at gof anweddol (NVM).
  • Gweithredwyd Rhagolwg o'r API Mynediad Cof Tramor, sy'n caniatáu i gymwysiadau Java gael mynediad diogel ac effeithlon i ranbarthau cof y tu allan i'r domen Java trwy drin y tyniadau MemorySegment, MemoryAddress, a MemoryLayout newydd.
  • Cyhoeddwyd porthladdoedd anghymeradwy ar gyfer proseswyr Solaris OS a SPARC (Solaris/SPARC, Solaris/x64 a Linux/SPARC) gyda’r bwriad o gael gwared ar y porthladdoedd hyn yn y dyfodol. Bydd dibrisio'r porthladdoedd hyn yn caniatáu i'r gymuned gyflymu datblygiad nodweddion OpenJDK newydd heb wastraffu amser yn cynnal nodweddion Solaris a SPARC-benodol.
  • Wedi'i ddileu casglwr sbwriel CMS (Concurrent Mark Sweep), a gafodd ei nodi'n anarferedig ddwy flynedd yn ôl ac yn parhau i fod heb ei gynnal (disodlwyd CMS ers talwm gan gasglwr sbwriel G1). Heblaw, cyhoeddi yn anghymeradwyo'r defnydd o gyfuniad o algorithmau casglu sbwriel ParallelScavenge a SerialOld (rhedeg gyda'r opsiynau “-XX:+UseParallelGC -XX:-UseParallelOldGC”).
  • Mae cefnogaeth arbrofol ar gyfer casglwr sbwriel ZGC (Z Garbage Collector) wedi'i ddarparu ar lwyfannau macOS a Windows (a gefnogwyd yn flaenorol ar Linux yn unig). 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 dynnu Pecyn cymorth ac API ar gyfer cywasgu ffeiliau JAR gan ddefnyddio algorithm Pack200.

Ffynhonnell: opennet.ru

Ychwanegu sylw