Caracteristici și îmbunătățiri Java 9

Cadrul modular dezvoltat în cadrul Project Jigsaw și caracteristicile majore Java 9 din acest blog sunt JShell (instrument REPL), modificări importante ale API-ului și modificări la nivel de JVM.

Lansarea caracteristicilor Java 9 și Java 9 este o piatră de hotar pentru ecosistemul Java.Ținerea la curent cu noile versiuni este importantă pentru a fi la curent cu tehnologia și pentru a înțelege nevoia din spatele a ceea ce este introdus te va apropia de .Cadrul modular dezvoltat în cadrul Project Jigsaw va face parte din această versiune Java SE și caracteristicile majore din aceasta sunt JShell (instrument REPL), modificări importante ale API-ului și modificări la nivelul JVM pentru a îmbunătăți performanța și depanabilitatea JVM.

Înainte de a dezlega în detaliu caracteristicile Java 9, permiteți-ne să aruncăm o privire asupra versiunilor Java anterioare și să vedem care au fost neajunsurile și cum Java 9 a ajutat la depășirea acestor anomalii: -





  • Platforma Java Standard Edition și JDK nu erau navigabile pentru dispozitivele de calcul mici
  • Nu a existat securitate și întreținere generală a JDK
  • Nu a existat o îmbunătățire generală a performanței aplicației
  • Era dificil pentru dezvoltatorii Java să construiască și să susțină bibliotecile de coduri și aplicațiile mai mari, atât pentru platformele Java SE, cât și pentru platformele EE

În această postare de blog voi clasifica caracteristicile Java 9 în modul următor:



  1. Procesați actualizări API în Java 9
  2. Client HTTP / 2 în Java 9
  3. Java Shell Scripting (Read-Eval-Print-Loop) în Java 9
  4. Fișierele JAR cu mai multe versiuni sunt disponibile în Java 9
  5. Mai multe actualizări simultane caracteristică în Java 9
  6. Proiect Jigsaw în Java 9

Ce este nou în Java 9?

Am ales câteva noi caracteristici Java 9, despre care consider că merită să le cunosc. Să vedem care sunt aceste caracteristici: -

Procesați actualizări API în Java 9

API-ul procesului Java a fost destul de primitiv,cu sprijin doar pentru lansarea de noi procese, redirecționează ieșirea proceselor și fluxurile de erori. În această versiune, actualizările la API-ul Process permit următoarele:

  • Obținerea PID a procesului JVM curent și a oricăror alte procese generate de JVM
  • Enumerați procesele care rulează în sistem pentru a obține informații precum PID, numele și utilizarea resurselor
  • Gestionarea arborilor de proces
  • Gestionarea subproceselor

Să vedem un exemplu de cod, care tipărește PID-ul curent, precum și informațiile actuale despre proces:



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)}

Client HTTP / 2 în Java 9

Această caracteristică Java 9 se așteaptă să se schimbe în versiunile ulterioare și poate fi chiar eliminată complet.

Mai devreme Dezvoltatorii recurg adesea la utilizarea de biblioteci terță parte, cum ar fi Apache HTTP, Jersey și așa mai departe. În plus, API-ul HTTP Java este anterior specificației HTTP / 1.1 și este sincron și greu de întreținut. Aceste limitări impuneau necesitatea adăugării unui nou API. Noul API client HTTP oferă următoarele:

cum se convertește binarul în zecimal în java
  • Un API simplu și concis pentru a face față majorității cererilor HTTP
  • Suport pentru specificații HTTP / 2
  • Performanță mai bună
  • O securitate mai bună
  • Câteva îmbunătățiri

Să vedem un exemplu de cod pentru a face o solicitare HTTP GET folosind noile API-uri. Mai jos este definiția modulului definită în fișierul module-info.java:

caracteristicile noi ale modulului {necesită jdk.incubator.httpclient}

Următorul cod utilizează API-ul HTTP Client, care face parte din modulul jdk.incubator.httpclient:

exemplu de invocare a metodei la distanță Java
import jdk.incubator.http. * import java.net.URI public class Http2Feature {public static void main (String [] args) throws Exception {HttpClient client = HttpClient.newBuilder (). build () HttpRequest request = HttpRequest .newBuilder ( URI nou (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String response = client.send (request, HttpResponse.BodyHandler.asString ()) System.out.println ('Cod de stare:' + response.statusCode ())
System.out.println ('Corpul de răspuns:' + response.body ())}}}

Java Shell Scripting (Read-Eval-Print-Loop) în Java 9

Probabil că ați văzut limbi, cum ar fi Ruby, Scala, Groovy, Clojure și altele livrate cu un instrument, care este adesea numit REPL ( Read-Eval-Print-Loop ). Acest instrument REPL este extrem de util în încercarea caracteristicilor lingvistice. De exemplu, în Scala, putem scrie un program simplu Hello World ca scala> println („Hello World”)

Unele dintre avantajele JShell REPL sunt după cum urmează:

  • Dezvoltatorii experimentați pot prototipa și experimenta rapid înainte de a-l adopta în baza lor principală de cod
  • Dezvoltatorii Java se pot lăuda acum cu un REPL

Să executăm comanda JShell, așa cum se arată în următoarea imagine:

JShell Hello World Exemplu - Java 9 - Edureka

Fișierele JAR cu mai multe versiuni sunt disponibile în Java 9

De acum, fișierele JAR pot conține clase care pot rula numai pe versiunea Java pentru care au fost compilate. Pentru a beneficia de noile caracteristici ale platformei Java pe versiuni mai noi, dezvoltatorii de biblioteci trebuie să lanseze o versiune mai nouă a bibliotecii lor. În curând, vor exista mai multe versiuni ale bibliotecii care vor fi întreținute de dezvoltatori, ceea ce poate fi un coșmar. Pentru a depăși această limitare, aceste caracteristici Java 9 ale fișierelor JAR cu versiuni multiple permit dezvoltatorilor să construiască fișiere JAR cu diferite versiuni de fișiere de clasă pentru diferite versiuni Java.Următorul exemplu îl face mai clar.

Iată o ilustrare a fișierelor JAR curente:

rădăcină de borcan - O clasa - clasa B. - Clasa C.

Iată cum arată fișierele JAR cu mai multe versiuni:

rădăcină de borcan - O clasa - clasa B. - Clasa C. - META-INF - versiuni - 9 - O clasa - 10 - clasa B.

În ilustrația precedentă, fișierele JAR acceptă fișiere de clasă pentru două versiuni Java – 9 și 10.

Deci, când JAR-ul anterior este executat pe Java 9, clasa A. din versiuni - 9 foldere sunt preluate pentru executare.

Pe o platformă care nu acceptă fișiere JAR cu versiuni multiple, clasele din directorul versiuni nu sunt utilizate niciodată. Deci, dacă rulați fișierul JAR cu versiuni multiple pe Java 8, este la fel de bun ca rularea unui fișier JAR simplu.

Mai multe actualizări simultane caracteristică în Java 9

În această actualizare, o nouă clasă, java.util.concurrent.Flow a fost introdus, care a imbricat interfețe care susțin implementarea unui cadru de publicare-abonare. Cadrul de publicare-abonare le permite dezvoltatorilor să construiască componente care pot consuma în mod asincron un flux live de date prin configurarea editorilor care produc datele și a abonaților care consumă datele prin abonament, care le gestionează. Cele patru noi interfețe sunt după cum urmează:

ce face math.abs în java
  • java.util.concurrent.Flow.Publisher
  • java.util.concurrent.Flow.Subscriber
  • java.util.concurrent.Flow.Subscription
  • java.util.concurrent.Flow.Processor (care acționează atât ca editor, cât și ca abonat).

Proiect Jigsaw în Java 9

Scopul principal al acestui proiect este de a introduce conceptul de modularitate a sustine pentru crearea de module în Java 9 și apoi aplicați același lucru la JDK acesta este, modularizați JDK .

Unele dintre beneficii de modularitate sunt după cum urmează:

  • Incapsulare puternică : Modulele pot accesa numai acele părți ale modulului care au fost puse la dispoziție pentru utilizare. Deci, clasele publice dintr-un pachet nu sunt publice decât dacă pachetul este exportat în mod explicit în fișierul cu informații despre modul.
  • Ștergeți dependențele : Modulele trebuie să declare ce alte module ar folosi prin clauza require.
  • Combinând module pentru a crea un timp de rulare mai mic, care poate fi scalat cu ușurință pe dispozitive de calcul mai mici.
  • De încredere : Aplicațiile sunt mai fiabile prin eliminare timp de rulare erori . Exemplu:- trebuie să fi experimentat eșecul aplicației dvs. în timpul rulării din cauza lipsei de clase, rezultând ClassNotFoundException .

Există diverse JEP , care fac parte din acest proiect, după cum urmează:

  • JEP 200 - JDK modular : Aceasta aplică sistemul de module platformă Java pentru a modulariza JDK într-un set de module care pot fi combinate la timp de compilare, timp de construire sau timp de execuție.
  • JEP 201 - cod sursă modulară : Aceasta modularizează codul sursă JDK în module și îmbunătățește instrumentele de construcție pentru a compila modulele.
  • JEP 220 - imagini modulare de rulare : Aceasta restructurează imaginile de rulare JDK și JRE pentru a găzdui module și pentru a îmbunătăți performanța, securitatea și mentenanța.
  • JEP 260 - încapsulează majoritatea API-urilor interne : Aceasta permite accesul direct la o mulțime de API-uri interne sau prin reflecție. Accesarea API-urilor interne care sunt obligate să se schimbe este destul de riscantă. Pentru a preveni utilizarea acestuia, acestea sunt încapsulate în module și numai acele API-uri interne care sunt utilizate pe scară largă sunt puse la dispoziție până când un API adecvat este în locul său.
  • JEP 261 - sistem de module : Aceasta implementează specificația Java a sistemului de module prin schimbarea limbajului de programare Java, JVM și alte API-uri standard
  • JEP 282: jlink, linkerul Java : Aceasta permite modulelor de ambalare și dependențelor acestora în timpi de funcționare mai mici.

Deci, totul a fost despre Java 9 și noile caracteristici Java 9.

Acum că ați înțeles caracteristicile Java 9, verificați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul.

G este o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog „Java 9” și vă vom contacta cât mai curând posibil.