Ohjelmointi

JDK 10: Mitä uutta Java 10: ssä

JDK 10, Java Standard Edition 10 -ratkaisu, julkaistiin 20. maaliskuuta 2018. Tärkeimmät parannukset sisältävät paikallisia muuttujatyyppejä sekä parannuksia roskien keräämiseen ja kokoamiseen.

JDK 10: n on tarkoitus olla vain lyhytaikainen julkaisu, ja JDK 10: n julkisten päivitysten on määrä päättyä kuuden kuukauden kuluttua. Tuleva syyskuussa julkaistava JDK 11 on Java: n pitkäaikaisen tuen (LTS) versio. LTS-julkaisut toimitetaan kolmen vuoden välein.

Oracle on asettanut Java-julkaisuille kuuden kuukauden julkaisutiheyden. Tämän päivityksen ja seuraajien on ollut tarkoitus nimetä julkaisuvuoden ja -kuukauden perusteella. Ensimmäisen julkaisun nimi on Java 18.3. Mutta nämä suunnitelmat romutettiin, kun vastaväitteitä oli esitetty.

Mistä ladata Java JDK 10

Voit ladata JDK 10: n Oraclen verkkosivustolta.

Uudet ja parannetut ominaisuudet JDK 10: ssä

JDK 10: n tärkeimpiä ominaisuuksia ovat:

  • Paikallisen muuttujan tyypin päättely, Java-kielen parantamiseksi laajentamaan päätelmää paikallisten muuttujien ilmoituksiin alustusohjelmilla.
  • Rinnakkainen täysjätteen keräys G1-jätteenkerääjälle pahimpien viiveiden parantamiseksi.
  • Sovellusluokan ja tietojen jakaminen käynnistysajan ja jalanjäljen optimoimiseksi. Nykyistä Class-Data Sharing -ominaisuutta laajennetaan, joten sovellusluokat voidaan sijoittaa jaettuun arkistoon.
  • Kokeellista juuri-in-time-kääntäjää Graalia voidaan käyttää Linux / x64-alustalla.
  • Telakointitietoisuus. Suoritettaessa Linux-järjestelmissä Java Virtual Machine (JVM) tietää, onko se käynnissä Docker-säilössä. JVM poimii konttikohtaiset tiedot - säilöön varattujen suorittimien määrän ja kokonaismuistin - sen sijaan, että se kysyisi käyttöjärjestelmästä. (Java-prosessin käytettävissä olevien suorittimien määrä lasketaan määritetyistä sarjaista, jakoista tai suorittimien kiintiöistä.)
  • Kolme uutta JVM-vaihtoehtoa, jotta Docker-konttien käyttäjät voivat hallita järjestelmämuistia paremmin.
  • Virhekorjaus kiinnitysmekanismin korjaamiseksi, kun yritetään liittää isäntäprosessista Java-prosessiin, joka on Docker-säilössä.
  • Lyhyemmät jShell REPL -työkalun käynnistysajat, varsinkin kun käytössä on useita katkelmia sisältävä aloitustiedosto.
  • Uudet sovellusliittymät, joiden avulla muokkaamattomat kokoelmat voidaan luoda paremmin. kopio,Set.copyOfja Kartta. Kopio menetelmät luovat uusia keräilyesimerkkejä olemassa olevista instansseista. Uudet menetelmät toUnmodifiableList, toUnmodifiableSetja toUnmodifiableMap lisättiin Keräilijät luokka Stream-paketissa, jolloin Streamin elementit voidaan kerätä muokkaamattomaan kokoelmaan.
  • Paikallisen muuttujan tyyppinen päättely kielen parantamiseksi laajentamaan päätelmää paikallisiin muuttujiin. Tarkoituksena on vähentää koodaamiseen liittyvää "seremoniaa" säilyttäen samalla sitoutuminen staattisen tyyppiseen turvallisuuteen.
  • Puhdas roskakorin käyttöliittymä erilaisten jätteiden keräilijöiden lähdekoodien eristämisen parantamiseksi. Tämän ponnistelun tavoitteisiin kuuluu sisäisen roskakorikoodin modulaarisuuden parantaminen HotSpot-virtuaalikoneessa ja uuden roskakorin lisäämisen helpottaminen HotSpotiin.
  • Rinnakkainen täysjätteen keräys G1-jätteenkerääjälle. Tarkoitus on parantaa pahimmassa tapauksessa viiveitä toteuttamalla rinnakkaisuus.
  • Kun HotSpot sallii kohdistaa kasan käyttäjän määrittelemään vaihtoehtoiseen muistilaitteeseen, kuten NVDIMM-muistimoduuliin. Tämän ominaisuuden mukaan tulevilla järjestelmillä voi olla heterogeenisiä muistiarkkitehtuureja.
  • Mahdollistetaan Grall Java -pohjaisen juuri-in-time-kääntäjän käyttö kokeellisella tavalla Linux / x64-alustalla.
  • JDK-metsän arkistojen yhdistäminen yhdeksi arkistoksi kehityksen virtaviivaistamiseksi. Koodipohja on toistaiseksi jaettu useisiin repoihin, mikä voi aiheuttaa ongelmia lähdekoodien hallinnassa.
  • Sovellusluokan ja tietojen jakaminen, vähentää jalanjälkeä jakamalla yhteisiä luokan metatietoja prosessien välillä. Myös käynnistysaika on parantunut.
  • Thread-local kädenpuristukset, soittopyynnön suorittamiseksi ketjuissa suorittamatta globaalia virtuaalikoneen turvapistettä. Yksittäiset ketjut voidaan pysäyttää kaikkien ketjujen sijasta tai ilman ketjuja.
  • JDK: n oletusjoukon juurivarmenteen myöntäjän varmenteiden tarjoaminen. Tavoitteena on avoimen lähdekoodin juurivarmenteet Oraclen Java SE Root CA -ohjelmassa, jotta OpenJDK-rakenteet houkuttelisivat kehittäjiä.

Javan pitkäaikainen tiekartta

Oracle on sanonut, että Java SE: n seuraavaa ja myöhempää versiota harkitaan:

  • Amber-projekti, joka on ollut pienempien, tuottavuuteen suuntautuvien kieliominaisuuksien inkubaattori, joka sisältää paikallisen muuttujan päätelmän, vähentää Java-koodin kirjoittamiseen liittyvää seremoniaa; parannetut enumit parantamaan enum-rakenteen ilmaisukykyä sallimalla tyyppimuuttujat enumissa ja suorittamalla terävämpi tyyppitarkistus enum-vakioille; ja lambda-jäännökset lambda- ja menetelmäviitteiden käytettävyyden parantamiseksi.
  • Projekti Panama, yhdistää JVM ja natiivikoodi, joka sisältää natiivitoiminnon kutsun JVM: ltä ja natiivin datan käytön JVM: ltä.
  • Valhalla, inkubaattoriprojekti edistyneille Java VM- ja kieliominaisuus ehdokkaille, mukaan lukien arvotyypit ja yleinen erikoistuminen.
  • Project Loom, samanaikaisten sovellusten kirjoittamisen monimutkaisuuden vähentämiseksi. Suunnitelma kehottaa lisäämään vaihtoehtoisia, käyttäjämuotoisia ketjutoteutuksia, rajattuja jatkoa ja muita rakenteita, joihin liittyy puhelupinon manipulointi. Tämän ehdotuksen päätavoitteena on tarjota vaihtoehtoinen ketjujen toteutus, jota hallitsevat Java-kirjoitetut ajurit. Tavallisten Java-säikeiden Java-ohjelmointimalli säilyisi, kun suorituskykyä parannetaan ja jalanjälki pienenee.

Uuden kuuden kuukauden julkaisuaikataulun avulla yhden julkaisun ohittamat ominaisuudet voivat viivästyä jopa kuusi kuukautta, kun seuraava julkaisu ilmestyy. JDK 10: lle ilmoitetun lisäksi Oracle ei ole sitoutunut siihen, milloin jokin uusista ehdotetuista ominaisuuksista todella tulee saataville Java-käyttöjärjestelmään.

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