JDK 14: De nya funktionerna i Java 14

Java Development Kit (JDK) 14 har nått GA och anländer till en version för allmän tillgänglighet för produktionsdistributioner. Uppgraderingen till standard-Java inkluderar nya funktioner som JDK Flight Recorder-händelsestreaming, mönstermatchning och switchuttryck. 

JDK 14 är en funktionslansering av Java, snarare än en långtidsstöd (LTS) -version, efter sex månaders släppkadens för Java. JDK 14 kommer att få säkerhetsuppdateringar i april och juli innan de ersätts av JDK 15, också en icke-LTS-utgåva, som förfaller i september. Den nuvarande LTS-utgåvan är JDK 11. 

De nya funktionerna och förbättringarna i JDK 14 inkluderar:

  • JFR Event Streaming tillhandahåller ett API för kontinuerlig konsumtion av JFR-data från både in-process och out-of-process-applikationer. JFR är ett verktyg för att samla in profilerings- och diagnostikdata om ett Java-program och JVM när de körs. Förslaget för händelseströmning registrerar samma uppsättning händelser som för fallet som inte strömmar, med omkostnader om mindre än en procent om möjligt. Händelseströmning måste finnas samtidigt med inspelningar som inte strömmar, både diskbaserade och minnesbaserade. Att motivera detta förslag är en situation där HotSpot VM sänder ut mer än 500 datapunkter med JFR, de flesta är endast tillgängliga genom att analysera loggfiler. För närvarande måste en användare starta en inspelning, stoppa den, dumpa innehållet till disken och sedan analysera inspelningsfilen. Detta fungerar bra för applikationsprofilering, men inte för övervakningssyfte.Ett exempel på övervakning av användningen är en instrumentpanel som visar dynamiska uppdateringar av data. Det finns kostnader för att skapa en inspelning, till exempel att kopiera data från diskförvaret till en separat inspelningsfil. Om det fanns ett sätt att läsa data som lagras från diskförvaret utan att skapa en ny inspelningsfil, kan mycket av omkostnaderna undvikas.
  • Den planerade förbättringen  NullPointerExceptionsavser att förbättra användbarheten för de undantag som genereras av JVM genom att beskriva exakt vilken variabel som var null. Författarna till förslaget vill ge användbar information till utvecklare och supportpersonal om för tidigt avslutande av ett program och förbättra programförståelsen genom att tydligare associera ett dynamiskt undantag med statisk programkod. Ett mål är att minska förvirring och oro som utvecklare har om NullPointerExceptions.
  • Icke-flyktiga mappade bytebuffertar skulle lägga till nya JDK-specifika filmappningslägen som gör att FileChannel API kan användas för att skapa MappedByteBufferinstanser som hänvisar till icke-flyktigt minne (NVM). NVM gör det möjligt för programmerare att bygga och uppdatera programtillstånd över programkörningar utan att medföra de betydande kopierings- eller översättningskostnader som in- och utmatningsoperationer vanligtvis kräver. Detta är särskilt viktigt för transaktionsprogram. Således är huvudmålet med detta JDK Enhancement-förslag att säkerställa att klienter kan komma åt och uppdatera NVM från ett Java-program på ett enhetligt och effektivt sätt. Ett sekundärt mål är att implementera detta åtagandebeteende med ett begränsat, JDK-internt API definierat i klassen Unsafe, så det kan återanvändas av andra klasser änMappedByteBuffersom kan behöva förbinda sig till NVM. Ett annat mål är att låta buffertar som är kartlagda över NVM spåras av befintliga API: er för övervakning och hantering. Mål OS / CPU-plattformar inkluderar Linux / x64 och Linux / AArch64.
  • Växlingsuttryck förenklar kodning genom att förlänga  switchså att den kan användas som antingen ett uttalande eller ett uttryck. Växeluttryck förväntas vara en permanent funktion i JDK 14, efter förhandsgranskning i både JDK 12 och JDK 13. Växeluttryck förbereder också för användning av mönstermatchning i switch. Mönstermatchning gör det möjligt för utvecklare att villkorligt extrahera komponenter från objekt mer kortfattat och säkert. 
  • NUMA-medveten minnestilldelning för G1-sopuppsamlaren, avsedd att förbättra G1-prestanda på stora maskiner. 
  • Borttagning av sopuppsamlaren Concurrent Mark Sweep (CMS), som tidigare avskaffats och planerats för borttagning. Efterföljare till CMS har uppstått inklusive ZGC och Shenandoah. 
  • Portering av ZGC till MacOS. Det har hittills endast stöds på Linux.
  • Borttagning av pack200- och unpack200-verktygen och Pack200 API i java.util.jarpaketet. Dessa avfölls alla i Java SE 11 i avsikt att ta bort dem i framtiden. Pack200 är ett komprimeringsschema för JAR-filer.
  • Records, som skulle ge en kompakt syntax för att deklarera klasser som är transparenta innehavare för grunda oföränderliga data. Rekord gör det enkelt att skapa klasser som i huvudsak är databärare utan att behöva skriva mycket panna. I förslaget anges att det ska vara enkelt och koncist att förklara grundligt oföränderliga, välskötta, nominella dataggregat.
  • Ett förpackningsverktyg, i en inkubatorfas av utveckling, för förpackning av fristående Java-applikationer. Verktyget skulle baseras på JavaFX javapackager. Ett sådant verktyg hade inkluderats i Java men klipptes från JDK 11 som en del av borttagningen av JavaFX.
  • Förbättra språket med mönstermatchning för instanceof operatören. Detta skulle vara en förhandsgranskningsfunktion i JDK 14. Mönstermatchning gör att vanlig logik i ett program, huvudsakligen den villkorliga extraheringen av komponenter från objekt, kan uttryckas mer kortfattat och säkert. Koden kan göras kort och typsäker.
  • En andra förhandsgranskning av textblock, en bokstav med flera rader som undviker behovet av de flesta escape-sekvenser och automatiskt formaterar strängen på ett förutsägbart sätt. Textblock skulle ge utvecklaren kontroll över formatet om så önskas, förenkla skrivningen av Java-program och förbättra läsbarheten för strängar. Textblock förhandsgranskades i JDK 13; JDK 14-iterationen skulle lägga till escape-sekvenser för hantering av explicita vita utrymmen och kontroll av ny linje.
  • Försvagar kombinationen av Parallel Scavenge och Serial Old sopsamlingsalgoritmer. Java-underhållare tror att denna kombination används väldigt lite men kräver mycket underhåll.
  • Portering av ZGC (Z Garbage Collector) till Windows. Denna funktion har återigen flyttat till den officiellt riktade listan efter att ha återställts till den föreslagna-för-inriktningslistan.
  • API för främmande minnesåtkomst, med införandet av ett API för Java-program för att säkert och effektivt komma åt främmande minne utanför Java-högen. Detta API bör fungera som ett alternativ till de viktigaste vägarna genom vilka Java-program får åtkomst till minne, inklusive nio.ByteBufferoch sun.misc.Unsafe. Det nya API: n ska kunna fungera på olika typer av minne inklusive inbyggt, ihållande minne och hanterad heap. Det borde inte vara möjligt för API: et att undergräva säkerheten för JVM. Memory deallocation bör vara explicit i källkoden. API: et förväntas hjälpa till med utvecklingen av det inbyggda interoperationsstödet som är målet för Project Panama.
  • Avskrivning av Solaris / Sparc, Solaris / x64 och Linux / Sparc-portarna, med avsikt att ta bort dem i en framtida version. Genom att tappa stöd för dessa portar kan OpenJDK-bidragsgivare påskynda utvecklingen av nya funktioner. Även om Solaris och Sparc var linchpin-tekniker hos Sun Microsystems, den ursprungliga skaparen av Java, har de ersatts i teknikutrymmet de senaste åren av Linux OS och Intel-processorer.

Var kan jag ladda ner JDK 14

Du kan ladda ner JDK 14 från öppen källkod från jdk.java.net för Linux, Windows och macOS. Du kan ladda ner Oracle kommersiella Java SE 14-nedladdningar från Oracle.com.