Funcions i millores de Java 9

El marc modular desenvolupat sota Project Jigsaw i les principals funcions de Java 9 d’aquest bloc són JShell (eina REPL), canvis importants a l’API i canvis a nivell de JVM.

El llançament de les funcions de Java 9 i Java 9 és una fita per a l’ecosistema Java.Mantenir-se al dia amb les novetats és important per mantenir-se al dia amb la tecnologia i entendre la necessitat del que s’introdueix. .El marc modular desenvolupat sota Project Jigsaw formarà part d’aquesta versió de Java SE i les principals característiques d’aquestes són el JShell (eina REPL), canvis importants de l’API i canvis a nivell de JVM per millorar el rendiment i la depuració de la JVM.



Abans de desentranyar les funcions de Java 9 en detall, fem una ullada a les versions anteriors de Java i comprovem quines deficiències i com Java 9 va ajudar a superar aquestes anomalies:



  • La plataforma Java Standard Edition i el JDK no eren navegables per a dispositius informàtics petits
  • No hi havia seguretat i manteniment generals de JDK
  • No hi ha hagut cap millora general en el rendiment de l'aplicació
  • Va ser difícil per als desenvolupadors de Java construir i mantenir les biblioteques de codis i aplicacions més grans, tant per a les plataformes Java SE com per a les EE

En aquesta entrada de bloc categoritzaré les funcions de Java 9 de la manera següent:



  1. Processar actualitzacions de l'API a Java 9
  2. Client HTTP / 2 a Java 9
  3. Java Shell Scripting (Read-Eval-Print-Loop) a Java 9
  4. Els fitxers JAR de versions múltiples es presenten a Java 9
  5. Més funcions d'actualitzacions simultànies a Java 9
  6. Project Jigsaw a Java 9

Què hi ha de nou a Java 9?

He escollit algunes funcions noves de Java 9, que crec que val la pena conèixer. Vegem quines són aquestes funcions: -

Processar actualitzacions de l'API a Java 9

L’API de processos de Java ha estat bastant primitiva,només amb suport per iniciar nous processos, redirigeix ​​els fluxos de sortida i d’errors dels processos. En aquesta versió, les actualitzacions de l'API Process permeten el següent:

  • Obtenir el PID del procés JVM actual i qualsevol altre procés generat per la JVM
  • Enumereu els processos que s’executen al sistema per obtenir informació com ara PID, nom i ús de recursos
  • Gestió d'arbres de processos
  • Gestió de subprocessos

Vegem un codi de mostra, que imprimeix el PID actual i la informació del procés actual:



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 a Java 9

S’espera que aquesta funció de Java 9 canviï en les versions posteriors i fins i tot es pugui suprimir completament.

Abans Els desenvolupadors solen recórrer a l'ús de biblioteques de tercers, com ara Apache HTTP, Jersey, etc. A més, l’API HTTP de Java és anterior a l’especificació HTTP / 1.1 i és sincrònica i difícil de mantenir. Aquestes limitacions exigien la necessitat d'afegir una nova API. La nova API de client HTTP proporciona el següent:

com convertir binari a decimal en java
  • Una API senzilla i concisa per atendre la majoria de sol·licituds HTTP
  • Suport per a l'especificació HTTP / 2
  • Millor rendiment
  • Millor seguretat
  • Algunes millores més

Vegem un codi de mostra per fer una sol·licitud GET HTTP mitjançant les noves API. A continuació es mostra la definició del mòdul definida al fitxer module-info.java:

funcions noves del mòdul {requereix jdk.incubator.httpclient}

El codi següent utilitza l'API de client HTTP, que forma part del mòdul jdk.incubator.httpclient:

java string divideix diversos delimitadors
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 ('Codi d'estat:' + response.statusCode ())
System.out.println ('Cos de resposta:' + response.body ())}}}

Java Shell Scripting (Read-Eval-Print-Loop) a Java 9

Heu vist idiomes, com ara Ruby, Scala, Groovy, Clojure i altres que s’envien amb una eina, que sovint s’anomena REPL ( Read-Eval-Print-Loop ). Aquesta eina REPL és extremadament útil per provar les funcions del llenguatge. Per exemple, a Scala, podem escriure un programa Hello World simple com scala> println ('Hello World')

Alguns dels avantatges del JShell REPL són els següents:

  • Els desenvolupadors experimentats poden prototipar i experimentar ràpidament abans d’adoptar-los a la seva base de codi principal
  • Els desenvolupadors de Java ara poden presumir d’un REPL

Executem l'ordre JShell, tal com es mostra a la imatge següent:

Exemple JShell Hello World - Java 9 - Edureka

Els fitxers JAR de versions múltiples es presenten a Java 9

A partir d’ara, els fitxers JAR poden contenir classes que només es poden executar a la versió Java per a la qual es van compilar. Per aprofitar les noves funcions de la plataforma Java en versions més recents, els desenvolupadors de biblioteques han de llançar una versió més nova de la seva biblioteca. Aviat hi haurà diverses versions de la biblioteca que els desenvolupadors mantindran, cosa que pot ser un malson. Per superar aquesta limitació, aquestes funcions de Java 9 dels fitxers JAR de múltiples versions permeten als desenvolupadors crear fitxers JAR amb diferents versions de fitxers de classe per a diferents versions de Java.L’exemple següent ho deixa més clar.

Aquí teniu una il·lustració dels fitxers JAR actuals:

arrel de pot - Una classe - Classe B. - Classe C.

Aquí teniu l’aspecte dels fitxers JAR de versions múltiples:

arrel de pot - Una classe - Classe B. - Classe C. - META-INF - versions - 9 - Una classe - 10 - Classe B.

A la il·lustració anterior, els fitxers JAR admeten fitxers de classe per a dues versions de Java –9 i 10.

Per tant, quan el JAR anterior s’executa a Java 9, es classifica la classe A. sota les versions: 9 carpetes per executar-les.

En una plataforma que no admet fitxers JAR de versions múltiples, les classes del directori de versions mai no s’utilitzen. Per tant, si executeu el fitxer JAR de versions múltiples a Java 8, és tan bo com executar un fitxer JAR senzill.

Més funcions d'actualitzacions simultànies a Java 9

En aquesta actualització, hi ha una nova classe, java.util.concurrent.Flow s'ha introduït, que té interfícies imbricades que donen suport a la implementació d'un marc de publicació-subscripció. El marc de publicació-subscripció permet als desenvolupadors crear components que puguin consumir de manera asíncrona un flux de dades en directe configurant editors que produeixen les dades i subscriptors que consumeixen les dades mitjançant subscripció, que les gestiona. Les quatre noves interfícies són les següents:

programa c ++ per ordenar una matriu en ordre ascendent
  • java.util.concurrent.Flow.Publisher
  • java.util.concurrent.Flow.Subscriber
  • java.util.concurrent.Flow.Subscription
  • java.util.concurrent.Flow.Processor (que actua tant com a editor com a subscriptor).

Project Jigsaw a Java 9

L'objectiu principal d'aquest projecte és introduir el concepte de modularitat suport per crear mòduls a Java 9 i després aplicar el mateix al fitxer JDK això és, modular el JDK .

Alguns dels beneficis de modularitat són els següents:

  • Encapsulació forta : Els mòduls només poden accedir a aquelles parts del mòdul que s'han posat a disposició per al seu ús. Per tant, les classes públiques d'un paquet no són públiques tret que el paquet s'exporti explícitament al fitxer d'informació del mòdul.
  • Esborra les dependències : Els mòduls han de declarar quins altres mòduls utilitzarien mitjançant la clàusula require.
  • Combinació de mòduls per crear un temps d’execució més petit, que es pot escalar fàcilment a dispositius informàtics més petits.
  • Fiable : Les aplicacions són més fiables mitjançant l'eliminació temps d'execució errors . Exemple: - haureu experimentat un error de la vostra aplicació durant el temps d'execució a causa de la manca de classes, cosa que resultaria ClassNotFoundException .

N’hi ha diversos JEPs , que formen part d’aquest projecte, de la següent manera:

  • JEP 200 - JDK modular : Això aplica el sistema de mòduls de plataforma Java per modular el JDK en un conjunt de mòduls que es poden combinar en temps de compilació, temps de compilació o temps d'execució.
  • JEP 201: codi font modular : Això modula el codi font JDK en mòduls i millora les eines de compilació per compilar els mòduls.
  • JEP 220 - modular runtime images : Això reestructura les imatges d'execució JDK i JRE per adaptar-se als mòduls i per millorar el rendiment, la seguretat i la mantenibilitat.
  • JEP 260: encapsula la majoria de les API internes : Permet accedir a moltes API internes directament o mitjançant reflexió. Accedir a les API internes que estan obligades a canviar és força arriscat. Per evitar-ne l’ús, s’encapsulen en mòduls i només es posen a disposició aquelles API internes que s’utilitzen àmpliament fins que hi hagi una API adequada al seu lloc.
  • JEP 261: sistema de mòduls : Implementa l'especificació Java del sistema de mòduls canviant el llenguatge de programació Java, JVM i altres API estàndard
  • JEP 282: jlink, l'enllaçador de Java : Permet els mòduls d’envasament i les seves dependències en temps de funcionament menors.

Per tant, es tractava de Java 9 i les noves funcions de Java 9.

Ara que heu entès les característiques de Java 9, consulteu el fitxer per Edureka, una empresa d'aprenentatge en línia de confiança amb una xarxa de més de 250.000 estudiants satisfets repartits per tot el món.

G o alguna pregunta per a nosaltres? Si us plau, mencioneu-lo a la secció de comentaris d’aquest bloc “Java 9” i us respondrem el més aviat possible.