Programování

Java 9 je zde: Vše, co potřebujete vědět

Java 9 - formálně verze Java Platform Standard Edition verze 9 - je konečně tady a její vývojová sada Java (JDK) je vývojářům k dispozici ke stažení.

Má několik důležitých, pokud kontroverzních nových funkcí, ale je také poslední z řady pro starý styl doručování Java.

Kam stáhnout Java 9 JDK

Oracle zveřejnil Java SE 9 JDK a dokumentaci ke stažení vývojáři.

Klíčové nové funkce v prostředí Java 9

Debutující téměř tři roky po Java SE 8 má Java SE 9 několik klíčových architektonických změn a také řadu vylepšení.

Modularita Java 9 mění hru

Nové, kontroverzní možnosti modularity založené na Project Jigsaw jistě vzbudí zájem o špičkové obchody v Javě, které chtějí vidět, co JDK 9 nyní nabízí, i když konzervativnější obchody se rozhodnou počkat, až modularita dozraje.

Modularita - ve formě systému Java Platform Module System - rozděluje JDK na sadu modulů pro kombinování za běhu, kompilace nebo sestavení. Modularitě se říká „přechodná“ změna, která umožňuje pochopit závislosti mezi moduly.

Modularita Java 9 má vývojářům umožnit snadnější sestavování a údržbu sofistikovaných aplikací. Mělo by to také umožnit Javě lépe se škálovat na menší zařízení, zatímco se zlepší zabezpečení a výkon.

Aspekty modularity Java 9 zahrnují balení aplikací, modularizaci samotné JDK a reorganizaci zdrojového kódu do modulů. Systém sestavení je vylepšen o kompilaci modulů a vynucení hranic modulů v době sestavení. Obrázky JDK a Java Runtime Environment (JRE) jsou restrukturalizovány tak, aby zpracovávaly moduly. Také ovládací prvky uživatelského rozhraní JavaFX a CSS API jsou nyní přístupné pro modularitu.

Je podporována řada konfigurací; v důsledku toho by se měla zlepšit škálovatelnost, zabezpečení a výkon aplikací. Klíčovým faktorem modulárního úsilí je snazší škálování jazyka Java až na malá zařízení.

Díky modularitě budou vývojáři schopni lépe vytvářet a udržovat knihovny a velké aplikace pro Java SE (Standard Edition) a Java EE (Enterprise Edition). Během vývoje Java 9 však Oracle, IBM, Red Hat a další měli velké neshody ohledně toho, jak provést takovou radikální změnu v platformě. Samotný modulový systém byl v květnu zamítnut, jen aby byl schválen druhým hlasováním v červnu poté, co bylo dosaženo pokroku.

I po dohodě mezi hlavními prodejci Javy stále přetrvávají spory o tom, zda modularita bude vývojářům Javy dělat hodně dobře, přičemž někteří odborníci říkají ano a jiní ne. Bez ohledu na to je Java 9 nyní modularizovaná.

Aby migrace na modularizovanou prostředí Java 9 byla jednodušší, umožňuje Java 9 nelegální reflexní přístup ke kódu na cestě ke třídě, který JRE používá k vyhledávání tříd a souborů prostředků. Tato funkce bude po Javě 9 zakázána.

Vylepšení kompilátoru pro kód Java 9

Upgrade na Java 9 obsahuje několik nových funkcí pro kompilaci kódu, mezi nimiž je především kompilace předem (AoT). Tato funkce stále v experimentální fázi umožňuje kompilaci tříd Java do nativního kódu před spuštěním ve virtuálním stroji. Tato funkce je určena ke zlepšení doby spuštění malých i velkých aplikací s omezeným dopadem na špičkový výkon.

Kompilátory Just-in-time (JIT) jsou rychlé, ale programy Java se staly tak velkými, že se JIT plně zahřeje, což ponechává některé metody Java nekompilované a oslabuje výkon. Předběžná kompilace je určena k řešení těchto problémů.

Ale Dmitrij Leskov, marketingový ředitel dodavatele technologie Java Excelsior, se obává, že technologie kompilace v předstihu není dostatečně vyspělá, a přeje si, aby společnost Oracle počkala na Java 10 na pevnější verzi.

Java 9 také nabízí druhou fázi nasazení inteligentní kompilace Oracle. Tato funkce zahrnuje vylepšenís javac stabilita a přenositelnost nástroje, takže jej lze ve výchozím nastavení použít v JVM (Java Virtual Machine). Nástroj bude také zobecněn, aby ho bylo možné použít pro velké projekty mimo JDK. JDK 9 také aktualizovaljavac překladač, aby mohl kompilovat programy Java 9 tak, aby fungovaly v některých starších verzích Java.

Další novou - ale experimentální - funkcí kompilace je rozhraní JVM Compiler Interface (JVMCI) na úrovni Java. Toto rozhraní umožňuje kompilátor napsaný v Javě použít JVM jako dynamický kompilátor. API JVMCI poskytuje mechanismy pro přístup ke strukturám VM, instalaci kompilovaného kódu a zapojení do kompilačního systému JVM.

Psaní kompilátoru JVM v Javě by mělo umožňovat vysoce kvalitní kompilátor, který se snáze udržuje a vylepšuje než stávající kompilátory napsané v C nebo C ++. Výsledkem by mělo být snazší údržbu a vylepšování překladačů napsaných v samotné Javě. Mezi další existující snahy o povolení překladačů v jazyce Java patří Graal Project a Project Metropolis.

Nová funkce ovládání kompilátoru je určena k zajištění jemného a kontextově závislého řízení kompilátorů JVM, což umožňuje vývojářům měnit možnosti řízení kompilátoru za běhu bez snížení výkonu. Nástroj také umožňuje řešení chyb kompilátoru JVM.

REPL konečně přichází na Javu 9

Java 9 je vybaven nástrojem REPL (read-eval-print loop) - dalším dlouhodobým cílem pro Javu, který se v této verzi po letech vývoje v rámci projektu Kulia stává skutečností.

Produkt REPL Java 9 nazvaný jShell interaktivně vyhodnocuje deklarativní příkazy a výrazy. Vývojáři mohou získat zpětnou vazbu k programům před kompilací pouhým zadáním několika řádků kódu.

Mezi funkce nástroje příkazového řádku patří doplňování záložek a automatické přidávání potřebných koncových středníků. Rozhraní jShell API umožňuje funkci jShell v IDE a dalších nástrojích, i když samotný nástroj není IDE.

Nedostatek REPL byl uváděn jako důvod, proč se školy vzdálily od Javy. (Jazyky jako Python a Scala již dlouho mají REPL.) Zakladatel jazyka Scala Martin Odersky však zpochybňuje užitečnost REPL v Javě a říká, že Java je orientovaná na příkazy, zatímco REPL jsou na výraz.

Vylepšení rozhraní Streams API v prostředí Java 9

Proudy v Javě umožňují vývojářům vyjadřovat výpočty, aby bylo možné efektivně využívat paralelismus dat. Funkce Stream v prostředí Java 8 slouží ke deklarativnímu zpracování dat při využití vícejádrových architektur.

V Javě 9 rozhraní Streams API přidává metody k podmíněnému převzetí a odebrání položek ze Stream, iteraci přes Stream prvky a vytvoření proudu z hodnoty s možnou hodnotou Null při rozšiřování sady API Java SE, které mohou sloužit jako zdroje Streamů.

Mezipaměť kódu lze rozdělit v prostředí Java 9

JDK 9 umožňuje rozdělení mezipaměti kódu do segmentů, aby se zlepšil výkon a umožnilo rozšíření, jako je jemnozrnné zamykání. Výsledky by měly být vylepšeny časy zametání kvůli specializovaným iterátorům přeskakujícím kód bez metody; oddělování nezměněného, ​​profilovaného a neprofilovaného kódu; a zkrácení doby provádění u některých referenčních hodnot.

Lepší podpora JavaScriptu v Javě 9 prostřednictvím Project Nashorn

Projekt Nashorn, který poskytuje lehký běhový modul JavaScriptu pro Javu, se vylepšuje v JDK 9. Projekt Nashorn byl snahou o implementaci vysoce výkonného, ​​ale lehkého běhového JavaScriptu v Javě v návaznosti na projekt Rhino, který byl zahájen v Netscape. Projekt Nashorn byl pověřen povolením vkládání JavaScriptu do aplikací Java. Poskytla Javě v JDK 8 modul JavaScriptu.

JDK 9 obsahuje analyzátor API pro Nashornův ECMAScript syntaxový strom. API umožňuje analýzu kódu ECMAScript pomocí IDE a rámců na straně serveru bez závislosti na interních třídách implementace Project Nashorn.

Klientské rozhraní API HTTP / 2 přichází do prostředí Java 9

Klientské rozhraní API HTTP / 2 verze beta přišlo na JDK 9 a implementovalo v Javě upgrade na základní protokol HTTP. WebSocket podporuje také API.

Rozhraní HTTP / 2 API může nahradit rozhraní HttpURLConnection API, které mělo problémy, včetně toho, že byl navržen s dnes již zaniklými protokoly, předcházel HTTP / 1, byl příliš abstraktní a těžko použitelný.

Vylepšená podpora HTML5 a Unicode v prostředí Java 9

V JDK 9 je dokumentační nástroj Javadoc vylepšen o generování značek HTML5. Podporován je také standard kódování Unicode 8.0 - který přidává 8 000 znaků, 10 bloků a šest skriptů.

Do Java 9 je přidáno bezpečnostní API DTLS

Z důvodu zabezpečení Java 9 přidává API pro DTLS (Datagram Transport Layer Security). Protokol byl navržen tak, aby zabránil odposlechu, neoprávněné manipulaci a padělání zpráv v komunikaci klient / server. Implementace je poskytována pro klientský i serverový režim.

Co Java 9 odmítá a odstraňuje

Java 9 nepodporuje nebo odstraňuje několik funkcí, které již nejsou v módě. Hlavním z nich je API Applet, které je zastaralé. Nyní, když tvůrci prohlížečů zaměřených na zabezpečení odebírali podporu pro zásuvné moduly prohlížeče Java, vyšlo z módy. Příchod HTML5 také pomohl způsobit jejich zánik. Vývojáři jsou nyní vedeni k alternativám, jako je Java Web Start, pro spouštění aplikací z prohlížeče nebo instalovatelné aplikace.

Podpora appletvieweru je rovněž zastaralá.

Java 9 rovněž odmítá sběratel odpadků Concurrent Mark Sweep (CMS), s podporou pro ukončení v budoucím vydání. Záměrem je urychlit vývoj dalších sběratelů odpadků ve virtuálním stroji HotSpot. Sběrač odpadků G1 s nízkou pauzou má být dlouhodobou náhradou za CMS.

Mezitím jsou v JDK 9 odstraněny kombinace uvolňování paměti, které byly dříve zastaralé v JDK 8. Patří mezi ně zřídka používané kombinace, jako je Incremental CMS, ParNew + SerialOld a DefNew + CMS, které přidaly další složitost základně kódu sběrače odpadků.

Java 9 také eliminuje varování Java na příkazech importu, aby pomohla vyčistit velké kódové základny od upozornění na vlákna. U těchto kódových základen musí být po určitou dobu podporovaná funkce zastaralá, ale import zastaralé konstrukce nezaručuje varovnou zprávu, pokud jsou použití konstrukce záměrná a potlačená.

Také v Javě 9 byla odstraněna možnost vybrat JRE v době spuštění pomocí funkce Multiple JRE (mJRE). Tato schopnost byla používána jen zřídka, komplikovala implementaci spouštěče Java a při debutu v JDK 5 nebyla nikdy plně zdokumentována.

Společnost Oracle odstranila agenta hprof (Heap Profiling) JVM TI (Tool Interface), který byl v JVM nahrazen. Byl odstraněn také nástroj jhat, který byl zastaralý vynikajícími vizualizéry haldy a analyzátory.

Java 9 je konec své řady, protože začíná nová řada Java 9

Dalo by se říci, že Java 9 jde ven se všemi novými schopnostmi. Oracle nedávno odhalil, že Java 9 je poslední svého druhu, pokud jde o jeho označení a čas, který uplynul mezi hlavními vydáními.

Od této chvíle je plánováno, že Java bude mít šestiměsíční kadenci vydání, přičemž další hlavní verze, která se bude jmenovat Java 18.3, má být vydána v březnu 2018, následovaná Java 18.9 o šest měsíců později.

Nová kadence vydání Java také znamená, že JDK 9 nebude označeno jako vydání dlouhodobé podpory. Místo toho bude dalším dlouhodobým vydáním Java 18.9.

Rychlejší kadence vydání Java znamená, že vývojáři nebudou muset čekat na hlavní vydání tak dlouho. Může to také znamenat, že vývojáři přeskočí Java 9 a její „nezralé“ funkce modularity a počkají šest měsíců na novou verzi, což by pravděpodobně vyžehli Kinks, řekl Simon Maple, ředitel advokacie Java u dodavatele nástrojů Java ZeroTurnaround.

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