Programmering

JDK 14: De nye funktioner i Java 14

Java Development Kit (JDK) 14 har nået GA og ankommer i en version med generel tilgængelighed til produktionsinstallationer. Opgraderingen til standard Java inkluderer nye funktioner såsom JDK Flight Recorder-streaming af hændelser, mønstermatchning og switch-udtryk.

JDK 14 er en funktionsudgivelse af Java snarere end en langvarig support (LTS) -udgivelse efter seks måneders frigivelseskadence for Java. JDK 14 vil modtage sikkerhedsopdateringer i april og juli, inden de afløses af JDK 15, også en ikke-LTS-udgivelse, som forventes i september. Den aktuelle LTS-udgivelse er JDK 11.

De nye funktioner og forbedringer i JDK 14 inkluderer:

  • JFR Event Streaming giver en API til kontinuerligt forbrug af JFR-data fra både processer og out-of-process-applikationer. JFR er et værktøj til indsamling af profilering og diagnosticeringsdata om en Java-applikation og JVM, når de kører. Forslaget om begivenhedsstreaming registrerer det samme sæt begivenheder som for sagen, der ikke streamer, med overhead på mindre end en procent, hvis det er muligt. Begivenhedsstreaming skal eksistere sammen med ikke-streaming-optagelser, både diskbaseret og hukommelsesbaseret. At motivere dette forslag er en situation, hvor HotSpot VM udsender mere end 500 datapunkter ved hjælp af JFR, hvoraf de fleste kun er tilgængelige ved parsing af logfiler. I øjeblikket skal en bruger starte en optagelse, stoppe den, dumpe indholdet til disken og derefter analysere optagelsesfilen. Dette fungerer godt til profilering af applikationer, men ikke til overvågningsformål. Et eksempel på overvågning af brugen er et dashboard, der viser dynamiske opdateringer til data. Der er overhead med at oprette en optagelse, såsom at kopiere data fra diskopbevaringsstedet til en separat optagelsesfil. Hvis der var en måde at læse data på, der blev optaget fra diskopbevaringsstedet uden at oprette en ny optagelsesfil, kunne meget af overhead undgås.
  • Den planlagte forbedring tilNullPointerExceptions vedrører forbedring af anvendeligheden af ​​de undtagelser, der genereres af JVM ved at beskrive nøjagtigt, hvilken variabel der var nul. Forfatterne af forslaget søger at give nyttige oplysninger til udviklere og supportmedarbejdere om for tidlig afslutning af et program og forbedre programforståelsen ved mere tydeligt at knytte en dynamisk undtagelse til statisk programkode. Et mål er at reducere forvirring og bekymring, som udviklere har omkring NullPointerExceptions.
  • Ikke-flygtige kortlagte bytebuffere tilføjer nye JDK-specifikke filtilknytningstilstande, der gør det muligt at bruge FileChannel API til at oprette MappedByteBuffer tilfælde, der henviser til ikke-flygtig hukommelse (NVM). NVM giver programmører mulighed for at opbygge og opdatere programtilstand på tværs af programkørsler uden at pådrage sig de betydelige kopierings- eller oversættelsesomkostninger, som input- og outputoperationer normalt kræver. Dette er især vigtigt for transaktionsprogrammer. Således er hovedmålet med dette JDK Enhancement-forslag at sikre, at klienter kan få adgang til og opdatere NVM fra et Java-program sammenhængende og effektivt. Et sekundært mål er at implementere denne forpligtelsesadfærd ved hjælp af en begrænset, JDK-intern API defineret i klassen Usikker, så det kan genbruges af andre klasser end MappedByteBuffer der muligvis er forpligtet til NVM. Et andet mål er at tillade, at buffere, der er kortlagt over NVM, spores af eksisterende API'er til overvågning og styring. Mål-OS / CPU-platforme inkluderer Linux / x64 og Linux / AArch64.
  • Switch-udtryk forenkler kodning ved at udvidekontakt så det kan bruges som enten en erklæring eller et udtryk. Switch-udtryk forventes at være en permanent funktion i JDK 14, efter at de er blevet vist i både JDK 12 og JDK 13. Switch-udtryk forbereder sig også til brug af mønstermatchning i kontakt. Mønstertilpasning giver udviklere mulighed for at udvinde komponenter fra objekter mere præcist og sikkert.
  • NUMA-opmærksom hukommelsesallokering til G1-affaldssamleren, der har til formål at forbedre G1-ydelsen på store maskiner.
  • Fjernelse af Concurrent Mark Sweep (CMS) affaldssamleren, som tidligere blev udfaset og beregnet til fjernelse. Efterfølgere til CMS er opstået inklusive ZGC og Shenandoah.
  • Portering af ZGC til MacOS. Det er hidtil kun blevet understøttet på Linux.
  • Fjernelse af pack200 og unpack200-værktøjerne og Pack200 API i java.util.jar pakke. Disse blev alle udfaset i Java SE 11 med det formål at fjerne dem i fremtiden. Pack200 er et komprimeringsskema for JAR-filer.
  • Optegnelser, som giver en kompakt syntaks til at erklære klasser, der er gennemsigtige indehavere for lavt uforanderlige data. Records gør det let at oprette klasser, der i det væsentlige er databærere uden at skulle skrive en masse kedelplade. I forslaget hedder det, at det skal være let og kortfattet at erklære overfladisk uforanderlige, velopdragen, nominelle dataggregater.
  • Et emballeringsværktøj i en inkubatorfase under udvikling til emballering af selvstændige Java-applikationer. Værktøjet ville være baseret på JavaFX javapackager. Et sådant værktøj var inkluderet i Java, men blev skåret fra JDK 11 som en del af fjernelsen af ​​JavaFX.
  • Forbedre sproget med mønstertilpasning til forekomst af operatør. Dette ville være en preview-funktion i JDK 14. Mønstertilpasning tillader, at fælles logik i et program, hovedsageligt den betingede udvinding af komponenter fra objekter, udtrykkes mere kortfattet og sikkert. Koden kan gøres kort og typesikker.
  • En anden forhåndsvisning af tekstblokke, en bogstavelig streng med flere linjer, der undgår behovet for de fleste escape-sekvenser og automatisk formaterer strengen på en forudsigelig måde. Tekstblokke giver udvikleren kontrol over formatet, når det ønskes, forenkler skrivningen af ​​Java-programmer og forbedrer læsbarheden af ​​strenge. Tekstblokke blev vist i JDK 13; JDK 14-iteration ville tilføje escape-sekvenser til styring af eksplicit hvide rum og newline-kontrol.
  • Forælder kombinationen af ​​Parallel Scavenge og Serial Old skraldopsamlingsalgoritmer. Java-vedligeholdere mener, at denne kombination bruges meget lidt, men kræver meget vedligeholdelse.
  • Portering af ZGC (Z Garbage Collector) til Windows. Denne funktion er igen flyttet til den officielt målrettede liste efter at være blevet vendt tilbage til den foreslåede målretningsliste.
  • API til fremmedhukommelsesadgang med introduktionen af ​​en API til Java-programmer til sikker og effektiv adgang til fremmed hukommelse uden for Java-bunken. Denne API skal fungere som et alternativ til de vigtigste veje, hvormed Java-programmer får adgang til hukommelse, inklusive nio.ByteBuffer og sun.misc. usikker. Den nye API skal kunne fungere på forskellige slags hukommelse, herunder indfødt, vedvarende hukommelse og administreret bunke. Det burde ikke være muligt for API at underminere JVM's sikkerhed. Memory deallocation skal være eksplicit i kildekoden. API forventes at hjælpe med udviklingen af ​​den native interoperationsstøtte, der er målet for Project Panama.
  • Forældelse af Solaris / Sparc, Solaris / x64 og Linux / Sparc-portene med det formål at fjerne dem i en fremtidig frigivelse. Ved at droppe support til disse porte kan OpenJDK-bidragydere fremskynde udviklingen af ​​nye funktioner. Selvom Solaris og Sparc var linchpin-teknologier hos Sun Microsystems, den oprindelige skaber af Java, er de i de senere år blevet afløst af teknologirummet af Linux OS og Intel-processorer.

Hvor downloades JDK 14

Du kan downloade open source JDK 14 fra jdk.java.net til Linux, Windows og macOS. Du kan downloade Oracle kommercielle Java SE 14 downloads fra Oracle.com.