A Java 9 és a Java 9 szolgáltatások kiadása mérföldkő a Java ökoszisztémában.Az új kiadásokkal való lépéstartás fontos ahhoz, hogy naprakész legyünk a technológiával, és megértsük, hogy a bevezetések mögött mi szükség van, közelebb kerülünk a .A Project Jigsaw keretében kifejlesztett moduláris keretrendszer része lesz ennek a Java SE kiadásnak, és ennek főbb jellemzői a JShell (REPL eszköz), a fontos API-változtatások és a JVM-szintű változtatások a JVM teljesítményének és hibakereshetőségének javítása érdekében.
Mielőtt részletesen kibontanánk a Java 9 szolgáltatásait, vessünk egy pillantást a korábbi Java verziókra, és nézzük meg, melyek voltak a hiányosságok és hogyan segített a Java 9 ezeknek a rendellenességeknek a leküzdésében: -
- A Java Standard Edition platform és a JDK nem volt navigálható kis számítástechnikai eszközök számára
- A JDK nem volt általános biztonságban és karbantartásban
- Az alkalmazás teljesítményében nem történt általános javulás
- A Java fejlesztők számára nehéz volt létrehozni és fenntartani a kódtárakat és a nagyobb alkalmazásokat, mind a Java SE, mind az EE platformok számára
Ebben a blogbejegyzésben a Java 9 szolgáltatásait a következő módon kategorizálom:
- Az API-frissítések feldolgozása a Java 9-ben
- HTTP / 2 kliens a Java 9-ben
- Java Shell parancsfájlok (Read-Eval-Print-Loop) a Java 9-ben
- Több kiadású JAR fájlok a Java 9 szolgáltatásban
- További egyidejű frissítések szolgáltatás a Java 9-ben
- Projekt Jigsaw Java 9-ben
Mi új a Java 9-ben?
Válogattam néhány új Java 9 funkciót, amelyekről úgy érzem, érdemes tudni. Nézzük meg, melyek ezek a funkciók: -
Az API-frissítések feldolgozása a Java 9-ben
A Java Process API meglehetősen primitív volt,csak új folyamatok elindításához, irányítsa át a folyamatok kimenetét és hibafolyamait. Ebben a kiadásban a Process API frissítései lehetővé teszik a következőket:
- Az aktuális JVM-folyamat és a JVM által létrehozott egyéb folyamatok PID-jének megszerzése
- Számolja fel a rendszerben futó folyamatokat, hogy információkat szerezzen, például PID, név és erőforrás-felhasználás
- A folyamatfák kezelése
- Alfolyamatok kezelése
Nézzünk meg egy mintakódot, amely kinyomtatja az aktuális PID-t és az aktuális folyamatadatokat:
public class 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 ('Info:' + currentProcessInfo)}
HTTP / 2 kliens a Java 9-ben
Ez a Java 9 szolgáltatás várhatóan megváltozik a későbbi kiadásokban, és akár teljesen eltávolítható is.
Korábban A fejlesztők gyakran igénybe vesznek harmadik féltől származó könyvtárakat, például Apache HTTP, Jersey stb. Ezen felül a Java HTTP API-ja megelőzi a HTTP / 1.1 specifikációt, szinkron és nehezen karbantartható. Ezek a korlátozások szükségessé tették egy új API hozzáadását. Az új HTTP kliens API a következőket biztosítja:
- Egyszerű és tömör API a legtöbb HTTP kérés kezelésére
- A HTTP / 2 specifikáció támogatása
- Jobb teljesítmény
- Jobb biztonság
- Néhány további fejlesztés
Lássunk egy mintakódot, amellyel HTTP GET-kérelmet küldhetünk az új API-k segítségével. Az alábbiakban a modul-info.java fájlban definiált moduldefiníció található:
modul új jellemzői {jdk.incubator.httpclient szükséges}
Az alábbi kód a HTTP Client API-t használja, amely a jdk.incubator.httpclient modul része:
névtér a c ++ - ban
import jdk.incubator.http. * import java.net.URI public class Http2Feature {public static void main (String [] args) dobja a Kivételt {HttpClient client = HttpClient.newBuilder (). build () HttpRequest request = HttpRequest .newBuilder ( új URI (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String response = client.send (request, HttpResponse.BodyHandler.asString ()) System.out.println ('Állapotkód:' + response.statusCode ())
System.out.println ('Response Body:' + response.body ())}}}
Java Shell parancsfájlok (Read-Eval-Print-Loop) a Java 9-ben
Biztosan látta, hogy olyan nyelvek, mint a Ruby, a Scala, a Groovy, a Clojure és mások szállítanak egy eszközzel, amelyet gyakran hívnak REPL ( Olvassa-értékelje-nyomtassa-hurok ). Ez a REPL eszköz rendkívül hasznos a nyelvi funkciók kipróbálásában. Például a Scalában írhatunk egy egyszerű Hello World programot as scala> println (“Hello World”)
Néhány előnye a JShell REPL a következő:
- A tapasztalt fejlesztők gyorsan prototípusokat készíthetnek és kísérletezhetnek, mielőtt átvennék a fő kódbázisukba
- A Java fejlesztők most REPL-lel büszkélkedhetnek
Futtassuk a JShell parancsot, a következő képen látható módon:
Több kiadású JAR fájlok a Java 9 szolgáltatásban
Mostantól a JAR fájlok olyan osztályokat tartalmazhatnak, amelyek csak azon a Java verzión futtathatók, amelyhez összeállították őket. A Java platform új funkcióinak kihasználása érdekében az újabb verziókban a könyvtár fejlesztőinek ki kell adniuk könyvtáruk újabb verzióját. Hamarosan több változata lesz a könyvtárnak, amelyet a fejlesztők fenntartanak, ami rémálom lehet. Ennek a korlátnak a leküzdése érdekében a több kiadású JAR fájlok ezen Java 9 szolgáltatásai lehetővé teszik a fejlesztők számára, hogy JAR fájlokat készítsenek osztályfájlok különböző verzióival különböző Java verziókhoz.A következő példa világosabbá teszi.
Itt látható a jelenlegi JAR fájlok illusztrációja:
üveggyökér - Osztály - B.osztály - C. osztály
Így néz ki a több kiadású JAR fájl:
üveggyökér - Osztály - B.osztály - C. osztály - META-INF - verziók - 9 - Osztály - 10 - B.osztály
Az előző ábrán a JAR fájlok két Java-verzió - 9 és 10 - osztályfájljait támogatják.
Tehát, amikor a korábbi JAR-t futtatják a Java 9-en, akkor a verziók-9 mappák alatti A.class végrehajtásra kerül.
Egy olyan platformon, amely nem támogatja a több kiadású JAR fájlokat, a verziók könyvtár alatti osztályokat soha nem használják. Tehát, ha a több kiadású JAR fájlt futtatja a Java 8 rendszeren, az ugyanolyan jó, mint egy egyszerű JAR fájl futtatása.
További egyidejű frissítések szolgáltatás a Java 9-ben
Ebben a frissítésben egy új osztály, java.util.concurrent.Flow bevezetésre került, amely beágyazott felületekkel támogatja a közzététel-feliratkozás keretrendszer megvalósítását. A közzététel-feliratkozás keretrendszer lehetővé teszi a fejlesztők számára olyan komponensek felépítését, amelyek aszinkron módon képesek elfogyasztani egy élő adatfolyamot, azáltal, hogy létrehozzák az adatokat előállító kiadókat és az előfizetőket, akik előfizetéssel fogyasztják az adatokat. A négy új interfész a következő:
- java.util.concurrent.Flow.Publisher
- java.util.concurrent.Flow.Subscriber
- java.util.concurrent.Flow.Subscription
- java.util.concurrent.Flow.Processor (amely megjelenítőként és előfizetőként is működik).
Projekt Jigsaw Java 9-ben
A projekt fő célja a modularitás támogatás modulok létrehozásához a Java 9-ben, majd alkalmazza ugyanezt a JDK vagyis: modulálja a JDK-t .
Néhány előnyöket nak,-nek modularitás a következő:
c ++ névtér példa
- Erős tokozás : A modulok csak azokhoz a részekhez férhetnek hozzá, amelyeket használatra bocsátottak. Tehát a csomag nyilvános osztályai nem nyilvánosak, hacsak a csomagot nem exportálják kifejezetten a modul információs fájljában.
- Törölje a függőségeket : A moduloknak meg kell adniuk, hogy melyik további modulokat használják a kötelező záradékon keresztül.
- Kombinálva a modulokat egy kisebb futási idő létrehozására, amely könnyen méretezhető kisebb számítási eszközökre.
- Megbízható : Az alkalmazások megbízhatóbbak, ha megszüntetik őket futási idő hibák . Példa:- biztosan tapasztalta, hogy az alkalmazás futás közben meghiúsult hiányzó osztályok miatt, ami azt eredményezte ClassNotFoundException .
Vannak különféle JEP-ek , amelyek a projekt részét képezik, az alábbiak szerint:
- JEP 200 - moduláris JDK : Ez a Java platform modulrendszert alkalmazza arra, hogy a JDK-t modulok halmazává modulálja, amelyek összeállíthatók fordításkor, összeállítási időben vagy futás közben.
- JEP 201 - moduláris forráskód : Ez modulárisan modulálja a JDK forráskódot, és javítja a buildeszközöket a modulok fordításához.
- JEP 220 - moduláris futásidejű képek : Ez átalakítja a JDK és JRE futásidejű képeket a modulok befogadására, valamint a teljesítmény, a biztonság és a karbantarthatóság javítására.
- JEP 260 - a legtöbb belső API-t beágyazza : Ez lehetővé teszi, hogy sok belső API-hoz hozzáférjen közvetlenül vagy reflektálás útján. A változásokhoz kötött belső API-k elérése meglehetősen kockázatos. Használatának megakadályozása érdekében modulokba foglalják őket, és csak azokat a belső API-kat teszik elérhetővé, amelyeket széles körben használnak, amíg megfelelő API nem lesz a helyén.
- JEP 261 - modulrendszer : Ez a modulrendszer Java specifikációját hajtja végre a Java programozási nyelv, a JVM és más szabványos API-k megváltoztatásával
- JEP 282: jlink, a Java linker : Ez lehetővé teszi a modulok csomagolását és azok függőségeit kisebb futási időkbe.
Szóval, ez a Java 9-ről és az új Java 9-es funkciókról szólt.
Most, hogy megértette a Java 9 szolgáltatásait, nézze meg a az Edureka, egy megbízható online tanulási vállalat, amelynek több mint 250 000 elégedett tanulóval rendelkező hálózata elterjedt az egész világon.
G Kérdés van nekünk? Kérjük, említse meg ennek a „Java 9” blognak a megjegyzés rovatában, és a lehető leghamarabb kapcsolatba lépünk Önnel.