Programmering

JDK 14: De nye funksjonene i Java 14

Java Development Kit (JDK) 14 har nådd GA og ankommer en generell tilgjengelighetsutgivelse for produksjonsutrulling. Oppgraderingen til standard Java inkluderer nye funksjoner som JDK Flight Recorder-streaming, mønstermatching og bryteruttrykk.

JDK 14 er en funksjonsutgivelse av Java, i stedet for en langtidsstøtte (LTS) -utgivelse, etter seks måneders utgivelseskadens for Java. JDK 14 vil motta sikkerhetsoppdateringer i april og juli før de blir erstattet av JDK 15, også en ikke-LTS-utgivelse, som forfaller i september. Den nåværende LTS-utgivelsen er JDK 11.

De nye funksjonene og forbedringene i JDK 14 inkluderer:

  • JFR Event Streaming gir et API for kontinuerlig forbruk av JFR-data fra både applikasjoner som er i prosess og utenfor prosess. JFR er et verktøy for å samle inn profilering og diagnostikkdata om et Java-program og JVM når de kjører. Forslaget om hendelsesstrømning registrerer det samme settet med hendelser som for saken som ikke streamer, med overhead på mindre enn en prosent hvis mulig. Event streaming må eksistere samtidig med ikke-streaming-opptak, både diskbasert og minnebasert. Motivering av dette forslaget er en situasjon der HotSpot VM sender ut mer enn 500 datapunkter ved bruk av JFR, de fleste er bare tilgjengelige ved parsing av loggfiler. For øyeblikket må en bruker starte et opptak, stoppe det, dumpe innholdet til disken og deretter analysere opptaksfilen. Dette fungerer bra for applikasjonsprofilering, men ikke for overvåkingsformål. Et eksempel på overvåking av bruken er et dashbord som viser dynamiske oppdateringer av data. Det er overhead med å lage et opptak, for eksempel å kopiere data fra diskregisteret til en separat opptaksfil. Hvis det var en måte å lese data som ble tatt opp fra diskregisteret uten å opprette en ny opptaksfil, kunne mye av overhead unngås.
  • Den planlagte forbedringen tilNullPointerExceptions gjelder å forbedre brukbarheten til unntakene som genereres av JVM ved å beskrive nøyaktig hvilken variabel som var null. Forfatterne av forslaget ønsker å gi nyttig informasjon til utviklere og støttepersonell om for tidlig avslutning av et program og forbedre programforståelsen ved å tydeligere knytte et dynamisk unntak til statisk programkode. Et mål er å redusere forvirring og bekymringer utviklere har om NullPointerExceptions.
  • Ikke-flyktige kartlagte bytebuffere vil legge til nye JDK-spesifikke filmappingsmoduser som gjør at FileChannel API kan brukes til å opprette MappedByteBuffer tilfeller som refererer til ikke-flyktig minne (NVM). NVM gjør det mulig for programmerere å bygge og oppdatere programtilstand på tvers av programkjøringer uten å pådra seg de betydelige kopierings- eller oversettelseskostnadene som inngangs- og utdataoperasjoner vanligvis krever. Dette er spesielt viktig for transaksjonsprogrammer. Dermed er hovedmålet med dette JDK Enhancement-forslaget å sikre at klienter får tilgang til og oppdaterer NVM fra et Java-program sammenhengende og effektivt. Et sekundært mål er å implementere denne oppførselsatferden ved hjelp av en begrenset, JDK-intern API definert i klassen Usikre, slik at den kan brukes på nytt av andre klasser enn MappedByteBuffer som kanskje må forplikte seg til NVM. Et annet mål er å la buffere som er kartlagt over NVM spores av eksisterende API-er for overvåking og styring. Mål-OS / CPU-plattformer inkluderer Linux / x64 og Linux / AArch64.
  • Bryteruttrykk forenkler koding ved å utvidebytte om slik at den kan brukes enten som et utsagn eller et uttrykk. Bryteruttrykk forventes å være en permanent funksjon i JDK 14, etter å ha blitt forhåndsvist i både JDK 12 og JDK 13. Bryteruttrykk forbereder seg også på bruk av mønstermatching i bytte om. Mønstertilpasning gjør at utviklere kan trekke komponenter ut av objekter mer kortfattet og trygt.
  • NUMA-bevisst minnetildeling for G1 søppeloppsamleren, ment å forbedre G1 ytelse på store maskiner.
  • Fjerning av Concurrent Mark Sweep (CMS) søppeloppsamler, som tidligere ble avskaffet og planlagt for fjerning. Etterfølgere til CMS har oppstått, inkludert ZGC og Shenandoah.
  • Portering av ZGC til MacOS. Det har bare blitt støttet på Linux så langt.
  • Fjerning av pack200 og unpack200 verktøy og Pack200 API i java.util.jar pakke. Disse ble alle avskrevet i Java SE 11 med den hensikt å fjerne dem i fremtiden. Pack200 er et komprimeringsskjema for JAR-filer.
  • Records, som vil gi en kompakt syntaks for å erklære klasser som er gjennomsiktige innehavere for grunne uforanderlige data. Registreringer gjør det enkelt å lage klasser som i det vesentlige er databærere uten å måtte skrive mye kokeplate. I forslaget heter det at det skal være enkelt og kortfattet å erklære grunnt uforanderlige, veloppdragen, nominelle dataggregater.
  • Et emballeringsverktøy, i en inkubatorfase for utvikling, for emballering av selvstendige Java-applikasjoner. Verktøyet vil være basert på JavaFX javapackager. Et slikt verktøy hadde blitt inkludert i Java, men ble kuttet fra JDK 11 som en del av fjerningen av JavaFX.
  • Forbedre språket med mønstermatching for tilfelle av operatør. Dette vil være en forhåndsvisning av JDK 14. Mønstermatching gjør at vanlig logikk i et program, hovedsakelig betinget utvinning av komponenter fra objekter, kan uttrykkes mer kortfattet og trygt. Koden kan gjøres kort og typesikker.
  • En ny forhåndsvisning av tekstblokker, en strenglinje med flere linjer som unngår behovet for de fleste escape-sekvenser og automatisk formaterer strengen på en forutsigbar måte. Tekstblokker vil gi utvikleren kontroll over formatet når det er ønskelig, forenkle skrivingen av Java-programmer og forbedre lesbarheten til strenger. Tekstblokker ble forhåndsvist i JDK 13; JDK 14-iterasjonen vil legge til rømningssekvenser for å håndtere eksplisitte hvite mellomrom og kontroll av ny linje.
  • Forfalske kombinasjonen av Parallel Scavenge og Serial Old søppeloppsamlingsalgoritmer. Java-vedlikeholdere mener at denne kombinasjonen brukes veldig lite, men krever mye vedlikehold.
  • Portering av ZGC (Z Garbage Collector) til Windows. Denne funksjonen har igjen flyttet til den offisielt målrettede listen, etter å ha blitt tilbakestilt til listen som er foreslått for målretting.
  • API for fremmedminnetilgang, med introduksjonen av et API for Java-programmer for sikker og effektiv tilgang til utenlandsk minne utenfor Java-haugen. Denne API-en skal tjene som et alternativ til hovedveiene som Java-programmer får tilgang til minne, inkludert nio.ByteBuffer og sun.misc. usikre. Den nye API-en skal kunne operere på forskjellige typer minne, inkludert innfødt, vedvarende minne og administrert heap. Det skal ikke være mulig for API å undergrave sikkerheten til JVM. Memory deallocation bør være eksplisitt i kildekoden. API forventes å hjelpe til med utviklingen av den opprinnelige interoperasjonsstøtten som er målet for Project Panama.
  • Avvikling av Solaris / Sparc, Solaris / x64 og Linux / Sparc-portene, med den hensikt å fjerne dem i en fremtidig utgivelse. Hvis du slipper støtte for disse portene, vil OpenJDK-bidragsytere akselerere utviklingen av nye funksjoner. Selv om Solaris og Sparc var linchpin-teknologier hos Sun Microsystems, den opprinnelige skaperen av Java, har de blitt erstattet i teknologirommet de siste årene av Linux OS og Intel-prosessorer.

Hvor laster du ned JDK 14

Du kan laste ned åpen kildekode JDK 14 fra jdk.java.net for Linux, Windows og macOS. Du kan laste ned Oracle kommersielle Java SE 14 nedlastinger fra Oracle.com.

$config[zx-auto] not found$config[zx-overlay] not found