JDK 10: Što je novo u Javi 10

JDK 10, implementacija Java Standard Edition 10, objavljen je 20. ožujka 2018. Ključna poboljšanja uključuju vrste lokalnih varijabli, kao i poboljšanja za prikupljanje i kompilaciju smeća.

JDK 10 bi trebao biti samo kratkoročno izdanje, a javna ažuriranja za JDK 10 trebala bi završiti za šest mjeseci. Nadolazeći JDK 11, koji bi trebao biti objavljen u rujnu, bit će verzija Java-a s dugoročnom podrškom (LTS). LTS izdanja trebaju se objaviti svake tri godine.

Oracle je odredio šestomjesečni ritam izdanja Java izdanja. Bilo je planova za imenovanje ove nadogradnje i nasljednika na temelju godine i mjeseca izdanja, s tim da se prvo izdanje zvalo Java 18.3. Ali ti su planovi ukinuti nakon iznošenja prigovora.

Gdje preuzeti Java JDK 10

JDK 10 možete preuzeti s web stranice tvrtke Oracle.

Nove i poboljšane značajke u JDK 10

Ključne značajke JDK 10 uključuju:

  • Izvođenje tipa lokalne varijable, za poboljšanje Java jezika za proširivanje zaključka tipa na deklaracije lokalnih varijabli s inicijalizatorima.
  • Paralelno potpuno odvoz smeća za G1 sakupljač smeća, radi poboljšanja najgorih kašnjenja.
  • Razmjena podataka klase aplikacija radi optimizacije vremena pokretanja i otiska. Postojeća značajka dijeljenja podataka klase proširena je tako da se klase aplikacija mogu smjestiti u zajedničku arhivu.
  • Na Linux / x64 platformi može se koristiti eksperimentalni pravodobni kompajler, Graal.
  • Docker svijest. Kada se izvodi na Linux sustavima, Java Virtual Machine (JVM) znat će radi li u Docker spremniku. Informacije specifične za spremnik - broj CPU-a i ukupna memorija dodijeljena spremniku - izdvojit će JVM umjesto da postavlja upit operativnom sustavu. (Broj CPU-a dostupnih Java procesu izračunava se iz određenih skupova, udjela ili kvota procesora.)
  • Tri nove JVM opcije, kako bi korisnici Dockerovih spremnika imali veću kontrolu nad sistemskom memorijom.
  • Ispravka programske pogreške za ispravljanje mehanizma za pričvršćivanje pri pokušaju povezivanja iz procesa hosta s Java procesom koji se nalazi u spremniku Docker.
  • Kraće vrijeme pokretanja alata jShell REPL, posebno kada se koristi početna datoteka s mnogo isječaka.
  • Novi API-ji za bolje omogućavanje stvaranja neizmijenjivih kolekcija. copyOf, Set.copyOf, I Map.copyOfmetode stvoriti nove instance zbirka od postojećih slučajeva. Nove metode toUnmodifiableList, toUnmodifiableSette toUnmodifiableMapsu dodani Collectorsklase u tok paketa, čime elementi Stream će se prikupljati u unmodifiable kolekciju.
  • Lokalno varijabilno zaključivanje tipa, kako bi se poboljšao jezik za proširivanje zaključka tipa na lokalne varijable. Namjera je smanjiti "ceremoniju" povezanu s kodiranjem, zadržavajući pri tom posvećenost sigurnosti statičkog tipa.
  • Čisto sučelje sakupljača smeća za poboljšanje izolacije izvornog koda različitih sakupljača smeća. Ciljevi ovog napora uključuju bolju modularnost internog koda za sakupljanje smeća u virtualnom stroju HotSpot i olakšavanje dodavanja novog sakupljača smeća u HotSpot.
  • Paralelno potpuno odvoz smeća za G1 sakupljač smeća. Namjera je poboljšati najgore moguće latencije primjenom paralelizma.
  • Omogućavanje HotSpot-a da dodijeli hrpu objekata na alternativnom memorijskom uređaju, kao što je NVDIMM memorijski modul, koji je odredio korisnik. Ova značajka predviđa da budući sustavi mogu imati heterogene memorijske arhitekture.
  • Omogućavanje pravodobnog kompajlera temeljenog na Grall Javi da se eksperimentalno koristi na platformi Linux / x64.
  • Objedinjavanje spremišta šume JDK u jedinstveno spremište, radi pojednostavljenja razvoja. Baza koda do sada je razbijena na više repo-mjesta, što može uzrokovati probleme u upravljanju izvornim kodom.
  • Razmjena podataka klase aplikacije, kako bi se smanjio otisak dijeljenjem zajedničkih metapodataka klase kroz procese. Poboljšava se i vrijeme pokretanja.
  • Rukovanje lokalno na niti, za izvršavanje povratnog poziva na nitima bez izvođenja globalne VM sigurne točke. Pojedinačne niti mogu se zaustaviti umjesto svih niti ili bez niti.
  • Pružanje zadanog skupa certifikata ovlaštenja izdavatelja korijena u JDK. Cilj je korijenski certifikati otvorenog koda u Oracleovom programu Java SE Root CA kako bi OpenJDK gradio primamljivije programere.

Dugoročni Java plan

Evo što je Oracle rekao da se razmatra za sljedeće i novije verzije Java SE:

  • Projekt Amber, koji je bio inkubator manjih jezičnih značajki usmjerenih na produktivnost koje uključuju zaključivanje tipa lokalne varijable, kako bi se smanjilo pisanje Java koda povezano s ceremonijom; poboljšane enume, za poboljšanje izražajnosti enum konstrukcije dopuštanjem varijabli tipa u enumima i izvođenjem oštrije provjere tipa za konstante enuma; i ostaci lambde, kako bi se povećala upotrebljivost lambda i referenci metoda.
  • Projekt Panama, za međusobno povezivanje JVM-a i izvornog koda, koji uključuje pozivanje matične funkcije iz JVM-a i pristup izvornim podacima iz JVM-a.
  • Valhalla, projekt inkubatora za napredne Java VM i kandidate za jezične značajke, uključujući vrste vrijednosti i generičku specijalizaciju.
  • Projekt Loom, kako bi se smanjila složenost pisanja istodobnih aplikacija. Plan zahtijeva dodavanje alternativnih implementacija niti u korisničkom načinu, ograničenih nastavaka i drugih konstrukcija koje uključuju manipulaciju hrpom poziva. Glavni cilj ovog prijedloga je ponuditi alternativnu implementaciju niti kojom upravljaju planeri napisani na Javi. Java programerski model običnih Java niti sačuvao bi se dok se poboljšavaju performanse i smanjuje otisak.

S novim šestomjesečnim rasporedom izdanja, značajke koje propuste jedno izdanje mogu se odgoditi već za šest mjeseci kada izađe sljedeće izdanje. Osim onoga što je najavljeno za JDK 10, Oracle se nije obvezao ni na to kada će bilo koja od novih predloženih značajki stvarno biti dostupna na Javi.