Programmering

JDK 10: Hvad er nyt i Java 10

JDK 10, en implementering af Java Standard Edition 10, blev frigivet den 20. marts 2018. Nøgleforbedringer inkluderer lokale variabeltyper samt forbedringer til affaldsindsamling og kompilering.

JDK 10 er planlagt til kun at være en kortvarig frigivelse, og offentlige opdateringer til JDK 10 er planlagt til at slutte om seks måneder. Den kommende JDK 11, der forventes i september, vil være en langvarig support (LTS) version af Java. LTS-udgivelser forfalder hvert tredje år.

Oracle har indstillet en seks måneders frigivelseskadens til Java-udgivelser. Der havde været planer om at navngive denne opgradering og efterfølgere baseret på året og måneden for udgivelsen, med den første udgivelse, der hedder Java 18.3. Men disse planer blev skrottet, efter at indvendinger blev fremsat.

Hvor downloades Java JDK 10

Du kan downloade JDK 10 fra Oracles websted.

Nye og forbedrede funktioner i JDK 10

Nøglefunktioner i JDK 10 inkluderer:

  • Lokal variabel type inferens for at forbedre Java-sproget for at udvide typeafledning til erklæringer om lokale variabler med initialiserere.
  • Parallel fuld affaldssamling til G1-affaldssamleren for at forbedre værst tænkelige latenstider.
  • Applikationsklasse-datadeling for at optimere opstartstid og fodaftryk. Den eksisterende klasse-datadeling-funktion udvides, så applikationsklasser kan placeres i det delte arkiv.
  • En eksperimentel just-in-time kompilator, Graal, kan bruges på Linux / x64 platformen.
  • Docker-bevidsthed. Når du kører på Linux-systemer, ved Java Virtual Machine (JVM), om den kører i en Docker-container. Containerspecifik information - antallet af CPU'er og den samlede hukommelse, der er allokeret til containeren - ekstraheres af JVM i stedet for at stille spørgsmål til operativsystemet. (Antallet af CPU'er, der er tilgængelige for Java-processen, beregnes ud fra specificerede sæt, aktier eller kvoter for processorer.)
  • Tre nye JVM-muligheder, der giver Docker-containerbrugere større kontrol over systemhukommelse.
  • En fejlrettelse for at rette vedhæftningsmekanismen, når du prøver at vedhæfte fra en værtsproces til en Java-proces, der er i en Docker-container.
  • Kortere opstartstider for jShell REPL-værktøjet, især når en startfil med mange uddrag er i brug.
  • Nye API'er, der bedre muliggør oprettelse af umodificerbare samlinger. Det copyOf,Set.copyOfog Map.copyOf metoder opretter nye samlingsforekomster fra eksisterende forekomster. Nye metoder toUnmodifiableList, toUnmodifiableSetog toUnmodifiableMap blev føjet til Samlere klasse i Stream-pakken, så elementerne i en Stream kan indsamles i en umodificerbar samling.
  • En lokal-variabel type inferens, for at forbedre sproget for at udvide type-inferens til lokale variabler. Hensigten er at reducere den "ceremoni", der er forbundet med kodning, samtidig med at der opretholdes en forpligtelse til sikkerhed af statisk type.
  • En ren interface til affaldssamler til forbedring af kildekodeisolering af forskellige affaldssamlere. Målene for denne indsats inkluderer bedre modularitet for intern affaldsindsamlingskode i HotSpot virtuelle maskine og gør det lettere at tilføje en ny affaldssamler til HotSpot.
  • Parallel fuld affaldssamling til G1 affaldssamleren. Hensigten er at forbedre værst tænkelige forsinkelser ved at implementere parallelisme.
  • Aktivering af HotSpot til at tildele objektbunken på en alternativ hukommelsesenhed, såsom et NVDIMM-hukommelsesmodul, der er specificeret af brugeren. Denne funktion forestiller sig, at fremtidige systemer kan have heterogene hukommelsesarkitekturer.
  • Gør det muligt for den Grall Java-baserede just-in-time-compiler at blive brugt på en eksperimentel måde på Linux / x64-platformen.
  • Konsolidering af opbevaringsstederne i JDK-skoven i et enkelt arkiv for at strømline udviklingen. Kodebasen er indtil nu opdelt i flere repos, hvilket kan forårsage problemer med kildekodestyring.
  • Deling af applikationsklasse-data for at reducere fodaftryk ved at dele almindelige klassemetadata på tværs af processer. Opstartstiden forbedres også.
  • Tråd-lokale håndtryk til udførelse af et tilbagekald på tråde uden at udføre et globalt VM-safepoint. Individuelle tråde kunne stoppes i stedet for enten alle tråde eller ingen tråde.
  • Levering af et standardsæt med rodcertifikatmyndighedscertifikater i JDK. Målet er at open-source rodcertifikater i Oracle's Java SE Root CA-program for at gøre OpenJDK-bygninger mere lokkende for udviklere.

Den langsigtede Java-køreplan

Her er, hvad Oracle har sagt, er under overvejelse til den næste og senere version af Java SE:

  • The Amber Project, som har været en inkubator for mindre, produktivitetsorienterede sprogfunktioner, der inkluderer lokal-variabel type inferens, for at mindske ceremonien forbundet med at skrive Java-kode; forbedrede enums for at forbedre ekspressionen af ​​enum-konstruktionen ved at tillade typevariabler i enums og udføre skarpere typekontrol af enum-konstanter; og lambda-rester for at øge anvendeligheden af ​​lambda og metodereferencer.
  • Projekt Panama for at sammenkoble JVM og native-kode med indbygget funktionskald fra JVM og native dataadgang fra JVM.
  • Valhalla, et inkubatorprojekt til avancerede Java VM og sprogfunktionskandidater inklusive værdityper og generisk specialisering.
  • Project Loom, for at reducere kompleksiteten i at skrive samtidige applikationer. Planen opfordrer til at tilføje alternative trådimplementeringer i brugertilstand, afgrænsede fortsættelser og andre konstruktioner, der involverer manipulation af call-stack. Hovedmålet med dette forslag er at tilbyde en alternativ implementering af tråde, der administreres af planlæggere skrevet i Java. Java-programmeringsmodellen af ​​almindelige Java-tråde bevares, mens ydeevnen forbedres og fodaftrykket reduceres.

Med den nye udgivelsesplan for seks måneder kan funktioner, der savner en udgivelse, blive forsinket så få som seks måneder, når den næste udgivelse kommer ud. Ud over hvad der er annonceret for JDK 10, har Oracle ikke forpligtet sig til, hvornår nogen af ​​de nye foreslåede funktioner rent faktisk vil blive gjort tilgængelige i Java.