Fonctionnalités et améliorations de Java 9

Le cadre modulaire développé sous Project Jigsaw et les principales fonctionnalités de Java 9 dans ce blog sont JShell (outil REPL), des changements importants d'API et des changements au niveau de la JVM.

La sortie des fonctionnalités Java 9 et Java 9 est une étape importante pour l'écosystème Java.Se tenir au courant des nouvelles versions est important pour rester à jour avec la technologie et comprendre le besoin derrière ce qui est introduit vous rapprochera de votre .Le cadre modulaire développé sous Project Jigsaw fera partie de cette version de Java SE et ses principales fonctionnalités sont le JShell (outil REPL), d'importants changements d'API et des changements au niveau de la JVM pour améliorer les performances et la débuggabilité de la JVM.



Avant de démêler les fonctionnalités de Java 9 en détail, jetons un coup d'œil aux versions précédentes de Java et voyons quelles étaient les lacunes et comment Java 9 a aidé à surmonter ces anomalies: -



  • La plate-forme Java Standard Edition et le JDK n'étaient pas navigables pour les petits appareils informatiques
  • Il n'y avait pas de sécurité globale et de maintenance de JDK
  • Il n'y a pas eu d'amélioration globale des performances des applications
  • Il était difficile pour les développeurs Java de créer et de maintenir les bibliothèques de code et les applications plus volumineuses, à la fois pour les plates-formes Java SE et EE

Dans cet article de blog, je vais catégoriser les fonctionnalités de Java 9 de la manière suivante:



  1. Traiter les mises à jour de l'API dans Java 9
  2. Client HTTP / 2 dans Java 9
  3. Java Shell Scripting (lecture-évaluation-impression-boucle) dans Java 9
  4. Fonctionnalité de fichiers JAR à versions multiples dans Java 9
  5. Plus de fonctionnalités de mises à jour de concurrence dans Java 9
  6. Projet Jigsaw en Java 9

Quoi de neuf dans Java 9?

J'ai choisi quelques nouvelles fonctionnalités de Java 9 qui, à mon avis, méritent d'être connues. Voyons quelles sont ces fonctionnalités: -

Traiter les mises à jour de l'API dans Java 9

L'API Process de Java a été assez primitive,avec support uniquement pour lancer de nouveaux processus, redirige la sortie des processus et les flux d'erreurs. Dans cette version, les mises à jour de l'API Process permettent ce qui suit:

  • Obtention du PID du processus JVM actuel et de tout autre processus engendré par la JVM
  • Énumérer les processus en cours d'exécution dans le système pour obtenir des informations telles que le PID, le nom et l'utilisation des ressources
  • Gérer les arborescences de processus
  • Gérer les sous-processus

Examinons un exemple de code, qui imprime le PID actuel ainsi que les informations de processus en cours:



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

Cette fonctionnalité Java 9 devrait changer dans les versions suivantes et peut même être complètement supprimée.

Plus tôt Les développeurs ont souvent recours à des bibliothèques tierces, telles que Apache HTTP, Jersey, etc. De plus, l'API HTTP de Java est antérieure à la spécification HTTP / 1.1 et est synchrone et difficile à maintenir. Ces limitations ont nécessité l'ajout d'une nouvelle API. La nouvelle API client HTTP fournit les éléments suivants:

  • Une API simple et concise pour traiter la plupart des requêtes HTTP
  • Prise en charge de la spécification HTTP / 2
  • Meilleure performance
  • Meilleure sécurité
  • Quelques améliorations supplémentaires

Voyons un exemple de code pour effectuer une requête HTTP GET à l'aide des nouvelles API. Voici la définition du module définie dans le fichier module-info.java:

module newfeatures {requiert jdk.incubator.httpclient}

Le code suivant utilise l'API client HTTP, qui fait partie du module jdk.incubator.httpclient:

inverser un nombre en python
import jdk.incubator.http. * import java.net.URI classe publique Http2Feature {public static void main (String [] args) lève l'exception {HttpClient client = HttpClient.newBuilder (). build () HttpRequest request = HttpRequest .newBuilder ( nouvel 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 ('Code d'état:' + response.statusCode ())
System.out.println ('Corps de la réponse:' + response.body ())}}}

Java Shell Scripting (lecture-évaluation-impression-boucle) dans Java 9

Vous devez avoir vu des langues, telles que Ruby, Scala, Groovy, Clojure et d'autres livrées avec un outil, souvent appelé REPL ( Lire-Eval-Print-Loop ). Cet outil REPL est extrêmement utile pour essayer les fonctionnalités du langage. Par exemple, dans Scala, nous pouvons écrire un simple programme Hello World comme scala> println ('Hello World')

Certains des avantages du JShell REPL sont les suivants:

  • Les développeurs expérimentés peuvent rapidement prototyper et expérimenter avant de l'adopter dans leur base de code principale
  • Les développeurs Java peuvent désormais se vanter d'une REPL

Exécutons la commande JShell, comme illustré dans l'image suivante:

Exemple JShell Hello World - Java 9 - Edureka

Fonctionnalité de fichiers JAR à versions multiples dans Java 9

À partir de maintenant, les fichiers JAR peuvent contenir des classes qui ne peuvent s'exécuter que sur la version Java pour laquelle ils ont été compilés. Pour tirer parti des nouvelles fonctionnalités de la plate-forme Java sur les versions plus récentes, les développeurs de bibliothèques doivent publier une version plus récente de leur bibliothèque. Bientôt, plusieurs versions de la bibliothèque seront maintenues par les développeurs, ce qui peut être un cauchemar. Pour surmonter cette limitation, ces fonctionnalités Java 9 des fichiers JAR à versions multiples permettent aux développeurs de créer des fichiers JAR avec différentes versions de fichiers de classe pour différentes versions de Java.L'exemple suivant le rend plus clair.

Voici une illustration des fichiers JAR actuels:

racine de pot - Une classe - B.classe - Classe C.

Voici à quoi ressemblent les fichiers JAR à plusieurs versions:

racine de pot - Une classe - B.classe - Classe C. - META-INF - les versions - 9 - Une classe - dix - B.classe

Dans l'illustration précédente, les fichiers JAR prennent en charge les fichiers de classe pour deux versions Java 9 et 10.

Ainsi, lorsque le JAR antérieur est exécuté sur Java 9, la classe A. sous les versions - 9 dossiers sont sélectionnés pour être exécutés.

Sur une plate-forme qui ne prend pas en charge les fichiers JAR à versions multiples, les classes du répertoire versions ne sont jamais utilisées. Par conséquent, si vous exécutez le fichier JAR à versions multiples sur Java 8, c'est aussi bien que d'exécuter un simple fichier JAR.

Plus de fonctionnalités de mises à jour de concurrence dans Java 9

Dans cette mise à jour, une nouvelle classe, java.util.concurrent.Flow a été introduit, qui a des interfaces imbriquées prenant en charge la mise en œuvre d'un cadre de publication-abonnement. Le cadre de publication-abonnement permet aux développeurs de créer des composants qui peuvent consommer de manière asynchrone un flux de données en direct en configurant des éditeurs qui produisent les données et des abonnés qui consomment les données via un abonnement, qui les gère. Les quatre nouvelles interfaces sont les suivantes:

  • java.util.concurrent.Flow.Publisher
  • java.util.concurrent.Flow.Subscriber
  • java.util.concurrent.Flow.Subscription
  • java.util.concurrent.Flow.Processor (qui agit à la fois en tant qu'éditeur et abonné).

Projet Jigsaw en Java 9

L'objectif principal de ce projet est d'introduire le concept de modularité soutien pour créer des modules dans Java 9, puis appliquer la même chose au JDK C'est, modulariser le JDK .

Certains avantages de modularité sont les suivants:

quelles sont les 6 façons d'utiliser ce mot-clé?
  • Encapsulation forte : Les modules ne peuvent accéder qu'aux parties du module qui ont été rendues disponibles pour utilisation. Ainsi, les classes publiques d'un package ne sont pas publiques à moins que le package ne soit explicitement exporté dans le fichier d'informations du module.
  • Effacer les dépendances : Les modules doivent déclarer les autres modules qu'ils utiliseraient via la clause requires.
  • Combinaison de modules pour créer un environnement d'exécution plus petit, qui peut être facilement adapté à des appareils informatiques plus petits.
  • Fiable : Les applications sont plus fiables en éliminant Durée les erreurs . Exemple:- vous devez avoir rencontré l'échec de votre application pendant l'exécution en raison de classes manquantes, ce qui a entraîné ClassNotFoundException .

Il y a plusieurs JEP , qui font partie de ce projet, comme suit:

  • JEP 200 - JDK modulaire : Ceci applique le système de module de plate-forme Java pour modulariser le JDK en un ensemble de modules qui peuvent être combinés au moment de la compilation, de la construction ou de l'exécution.
  • JEP 201 - code source modulaire : Cela modularise le code source JDK en modules et améliore les outils de construction pour compiler les modules.
  • JEP 220 - images d'exécution modulaires : Cela restructure les images d'exécution JDK et JRE pour accueillir les modules et pour améliorer les performances, la sécurité et la maintenabilité.
  • JEP 260 - encapsule la plupart des API internes : Cela permet d'accéder à de nombreuses API internes directement ou par réflexion. Accéder à des API internes qui sont vouées à changer est assez risqué. Pour empêcher son utilisation, ils sont encapsulés dans des modules et seules les API internes largement utilisées sont mises à disposition jusqu'à ce qu'une API appropriée soit à sa place.
  • JEP 261 - système de modules : Cela implémente la spécification Java du système de modules en modifiant le langage de programmation Java, la JVM et d'autres API standard
  • JEP 282: jlink, l'éditeur de liens Java : Cela permet d'empaqueter les modules et leurs dépendances dans des temps d'exécution plus courts.

Il s'agissait donc de Java 9 et des nouvelles fonctionnalités de Java 9.

Maintenant que vous avez compris les fonctionnalités de Java 9, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier.

g pas une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog «Java 9» et nous vous répondrons dans les plus brefs délais.