Funkce a vylepšení Java 9



Modulární rámec vyvinutý v rámci projektu Jigsaw a hlavních funkcí Java 9 v tomto blogu jsou JShell (nástroj REPL), důležité změny API a změny na úrovni JVM.

Vydání funkcí Java 9 a Java 9 je milníkem pro ekosystém Java.Držet krok s novými verzemi je důležité pro udržení aktuálních informací o technologii a pochopení toho, co stojí za představením, vás přiblíží blíže vašemu .Modulární rámec vyvinutý v rámci projektu Jigsaw bude součástí tohoto vydání Java SE a jeho hlavními funkcemi jsou JShell (nástroj REPL), důležité změny API a změny na úrovni JVM za účelem zlepšení výkonu a laditelnosti JVM.

Než podrobně odhalíme funkce Java 9, podívejme se na předchozí verze Java a podívejme se, jaké byly nedostatky a jak Java 9 pomohla tyto anomálie překonat: -





  • Platforma Java Standard Edition a JDK nebyly splavné pro malá výpočetní zařízení
  • Neexistovala žádná celková bezpečnost a údržba JDK
  • Došlo k celkovému zlepšení výkonu aplikace
  • Pro vývojáře prostředí Java bylo obtížné budovat a udržovat knihovny kódů a větší aplikace pro platformy Java SE i EE.

V tomto příspěvku na blogu budu kategorizovat funkce Java 9 následujícím způsobem:



nastavení zatmění pro javu
  1. Zpracovat aktualizace API v prostředí Java 9
  2. Klient HTTP / 2 v prostředí Java 9
  3. Skriptování Java Shell (Read-Eval-Print-Loop) v Javě 9
  4. V Javě 9 je funkce souborů JAR s více verzemi
  5. Funkce více aktualizací souběžnosti v prostředí Java 9
  6. Projekt Jigsaw v Javě 9

Co je nového v prostředí Java 9?

Vybral jsem několik nových funkcí Java 9, o kterých si myslím, že stojí za to o nich vědět. Podívejme se, jaké jsou tyto funkce: -

Zpracovat aktualizace API v prostředí Java 9

Procesové rozhraní Java bylo docela primitivní,pouze s podporou spouštění nových procesů, přesměrovat výstup procesů a chybové toky. V tomto vydání aktualizace Process API umožňují následující:

  • Získání PID aktuálního procesu JVM a dalších procesů vytvořených JVM
  • Vyjmenujte procesy spuštěné v systému a získejte informace, jako je PID, název a využití prostředků
  • Správa procesních stromů
  • Správa podprocesů

Podívejme se na ukázkový kód, který vytiskne aktuální PID i aktuální informace o procesu:



veřejná třída NewFeatures {public static void main (String [] args) {ProcessHandle currentProcess = ProcessHandle.current () System.out.println ('PID:' + currentProcess.getPid ()) ProcessHandle.Info currentProcessInfo = currentProcess.info () System.out.println ('Informace:' + currentProcessInfo)}

Klient HTTP / 2 v prostředí Java 9

Očekává se, že se tato funkce Java 9 v následujících verzích změní a může být dokonce zcela odstraněna.

Dříve Vývojáři se často uchylují k používání knihoven třetích stran, jako je Apache HTTP, Jersey atd. Kromě toho rozhraní Java API HTTP předchází specifikaci HTTP / 1.1 a je synchronní a obtížně se udržuje. Tato omezení volala po potřebě přidat nové API. Nové rozhraní API klienta HTTP poskytuje následující:

  • Jednoduché a stručné rozhraní API pro řešení většiny požadavků HTTP
  • Podpora specifikace HTTP / 2
  • Lepší výkon
  • Lepší zabezpečení
  • Několik dalších vylepšení

Podívejme se na ukázkový kód k vytvoření požadavku HTTP GET pomocí nových rozhraní API. Níže je definice modulu definovaná v souboru module-info.java:

nové funkce modulu {vyžaduje jdk.incubator.httpclient}

Následující kód používá rozhraní API klienta HTTP, které je součástí modulu jdk.incubator.httpclient:

import jdk.incubator.http. * import java.net.URI veřejná třída Http2Feature {public static void main (String [] args) vyvolá výjimku {HttpClient client = HttpClient.newBuilder (). build () HttpRequest request = HttpRequest .newBuilder ( nové URI (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String response = client.send (požadavek, HttpResponse.BodyHandler.asString ()) System.out.println ('Stavový kód:' + response.statusCode ())
System.out.println ('Tělo odpovědi:' + response.body ())}}}

Skriptování Java Shell (Read-Eval-Print-Loop) v Javě 9

Určitě jste viděli jazyky, jako je Ruby, Scala, Groovy, Clojure a další, které se dodávají s nástrojem, který se často nazývá REPL ( Read-Eval-Print-Loop ). Tento nástroj REPL je nesmírně užitečný při vyzkoušení jazykových funkcí. Například ve Scale můžeme napsat jednoduchý program Hello World jako scala> println („Hello World“)

Některé z výhod JShell REPL jsou následující:

  • Zkušení vývojáři mohou rychle prototypovat a experimentovat, než je přijmou ve své hlavní kódové základně
  • Vývojáři Java se nyní mohou chlubit REPL

Spustíme příkaz JShell, jak je znázorněno na následujícím obrázku:

Příklad JShell Hello World - Java 9 - Edureka

V Javě 9 je funkce souborů JAR s více verzemi

Od této chvíle mohou soubory JAR obsahovat třídy, které lze spustit pouze ve verzi Java, pro kterou byly kompilovány. Aby vývojáři knihoven využili nové funkce platformy Java v novějších verzích, musí vydat novější verzi své knihovny. Vývojáři budou brzy spravovat více verzí knihovny, což může být noční můra. Aby bylo možné toto omezení překonat, umožňují tyto funkce Java 9 víceúrovňových souborů JAR vývojářům vytvářet soubory JAR s různými verzemi souborů tříd pro různé verze Java.Následující příklad to objasňuje.

Zde je ukázka aktuálních souborů JAR:

jak vložit java na int v java
kořen sklenice - Třída - B. třída - C.třída

Takto vypadají soubory JAR s více verzemi:

kořen sklenice - Třída - B. třída - C.třída - META-INF - verze - 9 - Třída - 10 - B. třída

Na předchozím obrázku podporují soubory JAR soubory tříd pro dvě verze Java - 9 a 10.

Když je tedy dřívější JAR spuštěn v Javě 9, je pro provedení vyzvednuta A.class pod verzemi - 9 složek.

Na platformě, která nepodporuje soubory JAR pro více verzí, se třídy v adresáři verzí nikdy nepoužívají. Pokud tedy spustíte soubor JAR pro více verzí v prostředí Java 8, je to stejně dobré jako spuštění jednoduchého souboru JAR.

Funkce více aktualizací souběžnosti v prostředí Java 9

V této aktualizaci nová třída java.util.concurrent.Flow byla zavedena, která má vnořená rozhraní podporující implementaci rámce publikování a odběru. Rámec publikování a odběru umožňuje vývojářům vytvářet komponenty, které mohou asynchronně využívat živý datový proud nastavením vydavatelů, kteří produkují data, a předplatitelů, kteří data konzumují prostřednictvím předplatného, ​​které je spravuje. Čtyři nová rozhraní jsou následující:

  • java.util.concurrent.Flow.Publisher
  • java.util.concurrent.Flow.Subscriber
  • java.util.concurrent.Flow.Subscription
  • java.util.concurrent.Flow.Processor (který funguje jako vydavatel i odběratel).

Projekt Jigsaw v Javě 9

Hlavním cílem tohoto projektu je představit koncept modularita Podpěra, podpora pro vytváření modulů v Javě 9 a poté je aplikovat na JDK to je modulovat JDK .

Některé z výhody z modularita jsou následující:

  • Silné zapouzdření : Moduly mají přístup pouze k těm částem modulu, které byly zpřístupněny pro použití. Takže veřejné třídy v balíčku nejsou veřejné, pokud balíček není explicitně exportován v informačním souboru modulu.
  • Vymazat závislosti : Moduly musí deklarovat, které další moduly by používaly, pomocí klauzule require.
  • Kombinací modulů vytvoříte menší běhový modul, který lze snadno škálovat na menší výpočetní zařízení.
  • Spolehlivý : Aplikace jsou spolehlivější díky eliminaci run-time chyby . Příklad:- jistě jste zažili selhání aplikace během běhu kvůli chybějícím třídám, což mělo za následek ClassNotFoundException .

Existují různé JEP , které jsou součástí tohoto projektu:

  • JEP 200 - modulární JDK : Toto aplikuje systém modulů platformy Java na modularizaci JDK na sadu modulů, které lze kombinovat v době kompilace, v době sestavení nebo za běhu.
  • JEP 201 - modulární zdrojový kód : Tím se modularizuje zdrojový kód JDK na moduly a vylepšují se nástroje pro sestavování pro kompilaci modulů.
  • JEP 220 - modulární běhové obrázky : Toto restrukturalizuje běhové obrázky JDK a JRE tak, aby vyhovovaly modulům a zlepšily výkon, zabezpečení a udržovatelnost.
  • JEP 260 - zapouzdřuje většinu interních API : To umožňuje přístup k mnoha interním API přímo nebo prostřednictvím reflexe. Přístup k interním API, které se musí změnit, je docela riskantní. Aby se zabránilo jeho použití, jsou zapouzdřeny do modulů a jsou zpřístupněny pouze ty interní API, které jsou široce používány, dokud není na místě správné API.
  • JEP 261 - modulový systém : Toto implementuje specifikaci modulového systému Java změnou programovacího jazyka Java, JVM a dalších standardních API
  • JEP 282: jlink, linker Java : To umožňuje balení modulů a jejich závislostí na kratší doby chodu.

Takže to bylo všechno o Javě 9 a nových funkcích Javy 9.

Nyní, když jste pochopili funkce prostředí Java 9, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě.

G ot otázka pro nás? Uveďte to prosím v sekci komentářů tohoto blogu „Java 9“ a my se vám ozveme co nejdříve.