Programmering

JDK 10: Hva er nytt i Java 10

JDK 10, en implementering av Java Standard Edition 10, ble utgitt 20. mars 2018. Viktige forbedringer inkluderer lokale variabeltyper samt forbedringer for søppelinnsamling og kompilering.

JDK 10 er planlagt å være bare en kortsiktig utgivelse, og offentlige oppdateringer for JDK 10 er planlagt å slutte om seks måneder. Den kommende JDK 11, som forfaller i september, vil være en langvarig støtte (LTS) -versjon av Java. LTS-utgivelser forfaller hvert tredje år.

Oracle har satt en seks måneders utgivelseskadens for Java-utgivelser. Det hadde vært planer om å navngi denne oppgraderingen og etterfølgere basert på året og måneden for utgivelsen, med den første utgivelsen som ble kalt Java 18.3. Men planene ble skrinlagt etter at innvendinger ble reist.

Hvor laster du ned Java JDK 10

Du kan laste ned JDK 10 fra Oracles nettsted.

Nye og forbedrede funksjoner i JDK 10

Viktige funksjoner i JDK 10 inkluderer:

  • Lokal variabel type inferens, for å forbedre Java-språket for å utvide type inferens til erklæringer om lokale variabler med initialiserere.
  • Parallell full søppelsamling for G1 søppeloppsamleren, for å forbedre worst-case forsinkelser.
  • Deling av applikasjonsklasse for å optimalisere oppstartstid og fotavtrykk. Den eksisterende Class-Data Sharing-funksjonen utvides slik at applikasjonsklasser kan plasseres i det delte arkivet.
  • En eksperimentell just-in-time kompilator, Graal, kan brukes på Linux / x64-plattformen.
  • Docker bevissthet. Når du kjører på Linux-systemer, vil Java Virtual Machine (JVM) vite om den kjører i en Docker-container. Containerspesifikk informasjon - antall CPUer og totalt minne som er tildelt beholderen - blir hentet ut av JVM i stedet for at den spør etter operativsystemet. (Antall prosessorer som er tilgjengelige for Java-prosessen beregnes fra spesifiserte sett, aksjer eller kvoter av prosessorer.)
  • Tre nye JVM-alternativer, for å gi brukere av Docker-containere større kontroll over systemminnet.
  • En feilretting for å rette på vedleggsmekanismen når du prøver å feste fra en vertsprosess til en Java-prosess som er i en Docker-container.
  • Kortere oppstartstider for jShell REPL-verktøyet, spesielt når en startfil med mange utdrag er i bruk.
  • Nye API-er som bedre muliggjør oppretting av umodifiserbare samlinger. De kopi av,Set.copyOf, og Map.copyOf metoder oppretter nye samlingsforekomster fra eksisterende forekomster. Nye metoder toUnmodifiableList, toUnmodifiableSet, og toUnmodifiableMap ble lagt til Samlere klasse i Stream-pakken, slik at elementene i en Stream kan samles inn i en umodifiserbar samling.
  • En lokal variabel type inferens, for å forbedre språket for å utvide type inferens til lokale variabler. Hensikten er å redusere ”seremonien” knyttet til koding, samtidig som man opprettholder en forpliktelse til statisk sikkerhet.
  • Et rent søppelsamlergrensesnitt for å forbedre kildekodeisolering av forskjellige søppeloppsamlere. Målene for denne innsatsen inkluderer bedre modularitet for intern søppelinnsamlingskode i HotSpot virtuelle maskin og gjør det lettere å legge til en ny søppeloppsamler til HotSpot.
  • Parallell full søppelsamling for G1 søppeloppsamleren. Hensikten er å forbedre worst-case forsinkelser ved å implementere parallellitet.
  • Gjør det mulig for HotSpot å tildele objektbunken på en alternativ minneenhet, for eksempel en NVDIMM-minnemodul, spesifisert av brukeren. Denne funksjonen ser for seg at fremtidige systemer kan ha heterogene minnearkitekturer.
  • Gjør det mulig å bruke den Grall Java-baserte just-in-time kompilatoren på en eksperimentell måte på Linux / x64-plattformen.
  • Konsolidering av lagrene til JDK-skogen i et enkelt arkiv for å effektivisere utviklingen. Kodebasen til nå er delt inn i flere repoer, noe som kan forårsake problemer med kildekodeadministrasjon.
  • Deling av applikasjonsklasse for å redusere fotavtrykket ved å dele vanlige klassemetadata på tvers av prosesser. Oppstartstiden forbedres også.
  • Tråd-lokale håndtrykk, for å utføre en tilbakeringing på tråder uten å utføre et globalt VM-safepunkt. Individuelle tråder kan stoppes i stedet for enten alle tråder eller ingen tråder.
  • Levering av et standardsett med rotsertifikat autoritetssertifikater i JDK. Målet er å åpne kildekodesertifikater i Oracle's Java SE Root CA-program for å gjøre OpenJDK-bygninger mer lokkende for utviklere.

Den langsiktige Java-veikartet

Dette er hva Oracle har sagt er under vurdering for neste og senere versjoner av Java SE:

  • The Amber Project, som har vært en inkubator for mindre, produktivitetsorienterte språkfunksjoner som inkluderer lokal variabel type inferens, for å redusere seremonien forbundet med å skrive Java-kode; forbedrede enums, for å forbedre ekspressiviteten til enumkonstruksjonen ved å tillate typevariabler i enums og utføre skarpere typekontroll for enumkonstanter; og lambda-rester, for å øke brukbarheten til lambda og metodereferanser.
  • Prosjekt Panama, for å koble sammen JVM og innfødt kode, med innfødte funksjonssamtaler fra JVM og innfødt datatilgang fra JVM.
  • Valhalla, et inkubatorprosjekt for avanserte Java VM og språkfunksjonskandidater, inkludert verdityper og generisk spesialisering.
  • Project Loom, for å redusere kompleksiteten i å skrive samtidige applikasjoner. Planen krever at du legger til alternative trådimplementeringer i brukermodus, avgrensede fortsettelser og andre konstruksjoner som involverer manipulering av samtalestakk. Hovedmålet med dette forslaget er å tilby en alternativ implementering av tråder, administrert av planleggere skrevet i Java. Java-programmeringsmodellen for vanlige Java-tråder vil bli bevart mens ytelsen forbedres og fotavtrykket reduseres.

Med den nye utgivelsesplanen for seks måneder kan funksjoner som savner en utgivelse bli forsinket så få som seks måneder når neste utgivelse kommer ut. Utover det som er kunngjort for JDK 10, har Oracle ikke forpliktet seg til når noen av de nye foreslåtte funksjonene faktisk blir gjort tilgjengelig i Java.