Programiranje

Java 9 je tukaj: Vse, kar morate vedeti

Java 9 - formalno različica Java Platform Standard Edition 9 - je končno tu in njen razvojni komplet Java (JDK) je na voljo razvijalcem za prenos.

Ima nekaj pomembnih, čeprav spornih novih funkcij, vendar je tudi zadnja vrstica za stari slog dostave Java.

Kje prenesti Java 9 JDK

Oracle je objavil Java SE 9 JDK in dokumentacijo za prenos s strani razvijalcev.

Ključne novosti v Javi 9

Že skoraj tri leta po Java SE 8 ima Java SE 9 več ključnih arhitekturnih sprememb in številne izboljšave.

Modularnost Java 9 spreminja igre

Nove, kontroverzne zmožnosti modularnosti, ki temeljijo na Project Jigsaw, bodo zagotovo vzbudile zanimanje vrhunskih trgovin Java, ki želijo videti, kaj JDK 9 zdaj ponuja, četudi se bolj konzervativne trgovine odločijo počakati, da modularnost dozori.

Modularnost - v obliki Java Platform Module System - deli JDK na nabor modulov za kombiniranje med izvajanjem, prevajanjem ali časom gradnje. Modularnost se imenuje »prehodna« sprememba, ki omogoča razumevanje odvisnosti med moduli.

Modularnost Java 9 naj bi razvijalcem omogočala lažje sestavljanje in vzdrževanje dovršenih aplikacij. Poleg tega bi morala Java izboljšati obseg na manjše naprave, hkrati pa izboljšati varnost in zmogljivost.

Vidiki modularnosti Java 9 vključujejo pakiranje aplikacij, modularizacijo samega JDK in reorganizacijo izvorne kode v module. Sistem gradnje je izboljšan za prevajanje modulov in uveljavljanje meja modulov v času gradnje. Slike JDK in Java Runtime Environment (JRE) so preoblikovane tako, da omogočajo obdelavo modulov. Nadzor JavaFX UI in API-ji CSS so zdaj na voljo zaradi modularnosti.

Podprte so številne konfiguracije; posledično je treba izboljšati razširljivost, varnost in delovanje aplikacij. Enostavnejše prilagajanje Jave na majhne naprave je ključno gonilo modularnih prizadevanj.

Z modularnostjo bodo razvijalci lažje sestavljali in vzdrževali knjižnice in velike programe za Java SE (Standard Edition) in Java EE (Enterprise Edition). Toda med razvojem Jave 9 so se Oracle, IBM, Red Hat in drugi močno spopadali glede tega, kako natančno spremeniti platformo. Sistem modulov je bil maja zavrnjen, nato pa je bil po drugem glasovanju odobren junija po napredku.

Kljub dogovoru med največjimi ponudniki Jave ostajajo polemike glede tega, ali bo modularnost razvijalcem Java koristila, nekateri strokovnjaki so odgovorili pritrdilno, drugi pa ne. Ne glede na to je Java 9 zdaj modulariziran.

Za lažjo selitev na modularizirano Javo 9 Java 9 omogoča nezakonit odsevni dostop za kodo na poti razreda, ki jo JRE uporablja za iskanje razredov in datotek virov. Ta možnost bo onemogočena po Javi 9.

Izboljšave prevajalnika za kodo Java 9

Nadgradnja Java 9 ima več novih zmogljivosti za prevajanje kode, med katerimi je glavna prednost predčasna (AoT) kompilacija. Še vedno v poskusni fazi ta zmožnost omogoča prevajanje razredov Java v izvorno kodo, preden se zažene v navideznem računalniku. Ta funkcija je namenjena izboljšanju časa zagona tako majhnih kot velikih aplikacij z omejenim vplivom na največjo zmogljivost.

Prevajalniki Just-in-time (JIT) so hitri, vendar so programi Java postali tako veliki, da traja dolgo, da se JIT popolnoma ogreje, nekatere Java metode pa ostanejo brez prevajanja in slabijo delovanje. Pripravljanje vnaprej je namenjeno reševanju teh vprašanj.

Toda Dmitrij Leskov, direktor trženja pri prodajalcu javanske tehnologije Excelsior, skrbi, da predčasna tehnologija kompilacije ni dovolj zrela, in si želi, da bi Oracle čakal na Java 10 za bolj trdno različico.

Java 9 ponuja tudi drugo fazo Oraclove pametne uvedbe prevajanja. Ta funkcija vključuje izboljšanjes javac stabilnost in prenosljivost orodja, tako da ga lahko privzeto uporabljate v JVM (Java Virtual Machine). Orodje bo tudi posplošeno, da se bo lahko uporabljalo za velike projekte zunaj JDK. JDK 9 je tudi posodobiljavac prevajalnik, tako da lahko sestavi programe Java 9 za zagon v nekaterih starejših različicah Jave.

Druga nova, vendar eksperimentalna funkcija prevajanja je vmesnik JVM Compiler Interface na ravni Java (JVMCI). Ta vmesnik omogoča, da JVM kot dinamični prevajalnik uporablja prevajalnik, napisan v Javi. API JVMCI ponuja mehanizme za dostop do struktur VM, namestitev prevedene kode in priključitev na sistem prevajanja JVM.

Pisanje prevajalnika JVM v Javi bi moralo omogočiti visokokakovosten prevajalnik, ki ga je lažje vzdrževati in izboljšati kot obstoječi prevajalniki, napisani v jeziku C ali C ++. Zato bi morali biti prevajalniki, napisani v sami Javi, enostavnejši za vzdrževanje in izboljšanje. Druga obstoječa prizadevanja za omogočanje prevajalnikov v Javi vključujejo projekt Graal in Project Metropolis.

Nova zmožnost nadzora prevajalnika je namenjena zagotavljanju natančnega nadzora in od konteksta metode odvisnega nadzora nad prevajalniki JVM, s čimer omogoča razvijalcem, da med izvajanjem spreminjajo možnosti nadzora prevajalnika brez poslabšanja zmogljivosti. Orodje omogoča tudi rešitve za napake prevajalnika JVM.

REPL končno pride na Javo 9

Java 9 vključuje orodje zanke za branje in tiskanje (REPL) - še en dolgoročni cilj za Javo, ki se v tej različici uresničuje po letih razvoja v okviru projekta Kulia.

Java 9 REPL, imenovan jShell, interaktivno ocenjuje deklarativne izjave in izraze. Razvijalci lahko dobijo povratne informacije o programih pred prevajanjem samo z vnosom nekaterih vrstic kode.

Zmogljivosti orodja ukazne vrstice vključujejo dokončanje zavihkov in samodejno dodajanje potrebnih podpičkov na terminalu. API jShell omogoča funkcijo jShell v IDE-jih in drugih orodjih, čeprav samo orodje ni IDE.

Pomanjkanje REPL je bilo navedeno kot razlog, da se šole odmaknejo od Jave. (Jeziki, kot sta Python in Scala, že dolgo imajo REPL.) Toda ustanovitelj jezika Scala Martin Odersky dvomi o uporabnosti REPL-a v Javi, češ da je Java usmerjena v izjave, medtem ko so REPL-ji usmerjeni v izraze.

Izboljšave API-ja Streams v Javi 9

Pretoki v Javi omogočajo razvijalcem izražanje izračunov, tako da je mogoče paralelnost podatkov učinkovito izkoristiti. Zmogljivost pretoka v Javi 8 je namenjena deklarativni obdelavi podatkov, medtem ko izkorišča večjedrne arhitekture.

V Javi 9 API Streams doda metode za pogojno zajemanje in spuščanje elementov iz Streama, ponovitev elementov Stream in ustvarjanje toka iz ničelne vrednosti, hkrati pa širi nabor API-jev Java SE, ki lahko služijo kot viri Streams.

Predpomnilnik kode je mogoče razdeliti v Javi 9

JDK 9 omogoča razdeljevanje predpomnilnika kode na segmente za izboljšanje zmogljivosti in omogoča razširitve, kot je natančno zaklepanje. Rezultate bi bilo treba izboljšati v času čiščenja, ker specializirani iteratorji preskočijo kodo brez metode; ločevanje nemetodne, profilirane in neprofilirane kode; in izboljšanje časa izvajanja nekaterih meril uspešnosti.

Boljša podpora JavaScript v Javi 9 prek Project Nashorn

Projekt Nashorn, ki zagotavlja lahek čas izvajanja JavaScripta za Javo, se izboljšuje v JDK 9. Projekt Nashorn si je prizadeval za izvajanje zelo zmogljivega, vendar lahkega izvajalnega okolja JavaScript v Javi, po projektu Rhino, ki se je začel v Netscapeu. Projekt Nashorn je bil zadolžen za omogočanje vdelave JavaScripta v Java programe. Javi je zagotovil mehanizem JavaScript v JDK 8.

JDK 9 vključuje API razčlenjevalnika za Nashornovo sintaksno drevo ECMAScript. API omogoča analizo kode ECMAScript z IDE-ji in ogrodji na strani strežnika, ne glede na notranje razrede implementacije Project Nashorn.

API odjemalca HTTP / 2 pride na Javo 9

Beta HTTP / 2 odjemalec API je prišel na JDK 9 in v Javi izvaja nadgradnjo na osnovni spletni protokol HTTP. WebSocket podpira tudi API.

API HTTP / 2 lahko nadomesti API HttpURLConnection, ki je imel težave, vključno s tem, da je bil zasnovan s protokoli, ki zdaj ne delujejo, pred HTTP / 1, da je preveč abstrakten in da ga je težko uporabljati.

Izboljšana podpora HTML5 in Unicode v Javi 9

V JDK 9 je orodje za dokumentacijo Javadoc izboljšano za ustvarjanje oznak HTML5. Podprt je tudi standard kodiranja Unicode 8.0, ki doda 8.000 znakov, 10 blokov in šest skriptov.

Varnostni API DTLS je dodan Javi 9

Zaradi varnosti Java 9 doda API za DTLS (Datagram Transport Layer Security). Protokol je zasnovan tako, da preprečuje prisluškovanje, nedovoljeno spreminjanje in ponarejanje sporočil v komunikaciji odjemalec / strežnik. Na voljo je izvedba za odjemalski in strežniški način.

Kaj Java 9 opusti in odstrani

Java 9 opusti ali odstrani več funkcij, ki niso več v modi. Glavni med njimi je Applet API, ki je zastarel. Zdaj je postalo brez mode, saj proizvajalci brskalnikov, ki se zavedajo varnosti, odstranjujejo podporo za vtičnike brskalnika Java. Pojav HTML5 je prav tako pripomogel k njihovi smrti. Razvijalci se zdaj vodijo po alternativah, kot je Java Web Start, za zagon aplikacij iz brskalnika ali namestljive aplikacije.

Opuščeno je tudi orodje za pregledovanje aplikacij.

Java 9 tudi onemogoča zbiralnik smeti Concurrent Mark Sweep (CMS), s podporo pa bo prenehal v prihodnji izdaji. Namen je pospešiti razvoj drugih zbiralcev smeti v navideznem stroju HotSpot. Zbiralnik smeti G1 z nizko pavzo naj bi bil dolgoročna zamenjava za CMS.

Medtem se kombinacije zbiranja smeti, ki so bile predhodno zastarele v JDK 8, odstranijo v JDK 9. Sem spadajo redko uporabljene kombinacije, kot so Incremental CMS, ParNew + SerialOld in DefNew + CMS, ki so dodali dodatno kompleksnost kodi zbiralca smeti.

Java 9 tudi izbriše opozorila Java v izjavah o uvozu, da pomaga pri čiščenju velikih baz kod iz opozoril o drobcih. S temi kodnimi osnovami je treba nekaj časa podpirati zastarelo funkcionalnost, vendar uvoz zastarele konstrukcije ne upravičuje opozorilnega sporočila, če je uporaba konstrukta namenska in onemogočena.

V Javi 9 je odstranjena tudi možnost izbire JRE ob zagonu s pomočjo funkcije Multiple JRE (mJRE). Sposobnost se je redko uporabljala, kar je zapletlo izvajanje zaganjalnika Java in ob prvem nastopu v JDK 5 ni bilo nikoli v celoti dokumentirano.

Oracle je odstranil agenta JVM TI (Tool Interface) hprof (Profiliranje kopice), ki je bil nadomeščen v JVM. Odstranjeno je bilo tudi orodje jhat, ki je postalo zastarelo z vrhunskimi vizualizatorji kopice in analizatorji.

Java 9 je konec vrstice, ko se začne nova vrstica Java 9

Lahko bi rekli, da gre Java 9 z vsemi novimi zmožnostmi. Oracle je pred kratkim razkril, da je Java 9 zadnja tovrstna po svoji oznaki in času, ki je pretekel med večjimi izdajami.

Od tu naprej naj bi imela Java šestmesečno kadenco, z naslednjo večjo različico, imenovano Java 18.3, do marca 2018, sledila pa ji bo Java 18.9 šest mesecev kasneje.

Nova kadenca izdaje Java pomeni tudi, da JDK 9 ne bo imenovan za dolgoročno podporo. Namesto tega bo naslednja dolgoročna izdaja Java 18.9.

Java-ova hitrejša kadenca izdaje pomeni, da razvijalcem ne bo treba čakati tako dolgo na večje izdaje.Tudi lahko pomeni, da bodo razvijalci preskočili Javo 9 in njene "nezrele" funkcije modularnosti ter čakali šest mesecev na novo različico, ki bi verjetno želela kinks, je dejal Simon Maple, direktor zagovorništva Java pri proizvajalcu orodij Java ZeroTurnaround.

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