Maison  >  Article  >  Java  >  Module Java9

Module Java9

WBOY
WBOYoriginal
2024-08-30 15:53:56584parcourir

Java 9 Module est la nouvelle entité qui est présentée comme un ensemble de packages pour fournir une certaine fonctionnalité ou fonctionnalité. Le module Java 9 est la première version du kit de développement Java après le réarrangement et la catégorisation des packages en modules. Il est également connu sous le nom de Java 9 Platform Module System (JPMS). Dans Java 9, vous pouvez réduire la taille du runtime en incluant uniquement les modules requis. Par exemple, pour un appareil qui ne prend pas en charge les interfaces graphiques, vous pouvez créer un runtime sans inclure les modules GUI.

Module Java9

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

 

Points forts

  • Le module Java 9 est l'implémentation d'une abstraction de haut niveau de packages.
  • Il contient tous les packages liés aux fonctionnalités regroupés dans un seul module avec un total de 95 modules. Il offre une plus grande intégrité de la plate-forme et une forte encapsulation.
  • Il permet la création d'un module Java séparé sous forme de fichier JAR modulaire pour les applications Java ou l'API Java.

Système de modules Java 9

  • Dans les modules Java 9, les packages fonctionnellement liés sont regroupés en groupes réutilisables appelés modules.
  • Le module Java 9 peut contenir des ressources (telles que des images et des fichiers XML). Le module java.base est un module indépendant nécessaire pour chaque module.
  • Les modules système sont standards et leurs noms commencent par java.
  • Par exemple, les modules JavaFX (noms commençant par JavaFX), les modules JDK (noms commençant par jdk), les modules Oracle (noms commençant par oracle).

Types de modules Java 9

1. Modules applicatifs

  • Ces modules sont créés par des programmeurs.
  • Le JAR non officiel du chemin assemblé contient le fichier de classe module-info.a compilé qui contient le nom et la définition du module.

2. Modules automatiques

  • Lorsque des fichiers JAR existants sont ajoutés au module, des modules automatiques sont créés.
  • Le nom du JAR devient le nom du module.

3. Module sans nom

  • C'est une classe ou un JAR chargé sur le chemin de classe mais pas dans le chemin du module.
  • C'est un module fourre-tout pour maintenir la compatibilité descendante avec le code Java précédemment écrit.

Descripteur modulaire

  • Le fichier module-info.java contient la définition du module ou les métadonnées qui décrivent le module.
  • Lors de la compilation de module-info.java, nous obtenons module-info.class qui contient le descripteur de module, qui est stocké dans le dossier racine du module.
  • Le descripteur modulaire se compose d'une ou plusieurs exportations et nécessite une clause.
  • C'est un module indépendant car il peut exporter les packages vers d'autres modules et utiliser les packages d'autres modules.
  • Les métadonnées comprennent trois éléments : un nom unique, une clause d'exportation et une clause require.
  • Nom unique : Nom donné au module.

Code :

module eg.com.module1 
{

}
  • Clause d'exportation : les packages du module peuvent être exportés car d'autres modules peuvent les utiliser.

Code :

module eg.com.module1 
{
   exports eg.com.module1.service;
}
  • Clause requise : elle est utilisée lorsque vous avez besoin de packages provenant d'autres modules.

Code :

{
   requires eg.com.module1;
}

Modules d'application système de modules Java 9

  • Pour lister les modules de l'ensemble du JDK à partir du dossier bin de jdk. Exécutez la commande suivante dans la CLI java –list-modules
  • Le mot-clé module permet de déclarer le module. Le corps du module est entouré d'accolades, comme dans : module nom du module { }
  • Une directive de module exports rend le package du module accessible au code dans tous les autres modules.
  • Un export…pour définir un rapport qualifié. La liste des packages pouvant accéder au package exporté peut être spécifiée avec précision dans une liste séparée par des virgules.

Code :

module com.educba.util 
{
exports com.educba.app;
exports com.educba.security to com.educba.client, com.educba.producer;
}
  • Lorsqu'une directive de module ouvert est utilisée, tous les packages d'un module donné deviennent accessibles au moment de l'exécution et via réflexion à tous les autres modules. Pour autoriser l'accès uniquement à l'exécution à tous les packages d'un module, vous pouvez ouvrir le module entier, comme dans :

Code ;

open module <em>modulename</em>

{
// module directives
}
  • To allow runtime-only access to packages in a module. An open module directive of the form opens package- can be used. The code in other modules can access the public types of a package and its nested public and protected types at runtime only. Reflection can be used to access all the types and the types’ members in the specified package.
  • The code in the listed modules can access the public types of a package and its nested public and protected types at runtime only. Reflection to code in the specified modules can be used to access all of the types and types’ members in the specified package.

How to Create a New Java 9 Module?

  • Create a directory structure
src\com.educba\com\educba
  • In the command prompt
mkdir –r src\com.educba\com\educba
  • Create a new module in a text editor and save it as a java file module-info.java.
module com.educba
{ }
  • Set the environment variable JAVA_HOME to the path where Java is installed.

For example, JAVA_HOME C:\Program Files\Java\jdk-9\bin

Add %JAVA_HOME% to PATH in control Panel->system->advanced system setting->environment variables.

  • To see the compiled module descriptor in the CLI.

Code:

>javap mods/com.educba/module-info.class

Output:

Module Java9

It shows requires java.base in the modules definition, though we had created an empty module. It is because java.base is the basic and independent module. All other modules depend on it.

Comparison Table of JDK 8 and JDK 9

The most obvious difference between JDK 8 and JDK 9.

Feature Java 8 Java 9
Top Level component Package Module
New features launched ●       Lambda Expressions

●       Stream API

●       Date API

●       Java Module System (Jigsaw Project)

●       Java REPL

●       Milling Project Coin

Performance Compromised performance due to big size of jdk Improved performance
Testing and maintaining applications Difficult with large size of JRE Easy with REPL and reduced size depending on modules included. JShell or REPL: Read and evaluate Print Loop for easy execution and testing of   Java Constructs like class, interface, enum, object, and statements easily.
Security It is compromised because of no encapsulation. Internal APIs can be accessed easily by users and potential hackers. Reflection could be used to learn about private members too. String security as Reflection does not provide access to private members. Only those exposed by export keywords are available through reflection.
Packaging format JAR JMOD can include native code and configuration files.

Conclusion

Java 9 est en effet la restructuration la plus recherchée du code java pour le rendre compatible avec les nouvelles techniques de codage de l'architecture distribuée. Il a contribué à réduire la taille des exécutables avec le choix d'inclure les modules requis, améliorant ainsi les performances. L'encapsulation forte a permis une sécurité plus élevée avec moins de classes disponibles pour les pirates potentiels. La modularité a assuré la transparence dans la déclaration et la détermination des dépendances.

FAQ

Q1. Comment migrer mon ancienne application vers JAVA 9 ?

Réponse : Vous pouvez compiler votre application existante dans Java 9. Lors de la compilation, vous rencontrerez des erreurs pour les parties de code qui ne sont pas dans la structure modulaire de Java 9. Ici, vous devez dépenser un peu il est temps d’inclure les modules requis. Vous pouvez tester votre nouveau code en utilisant Jshell pour le résultat requis.

 Q2. Comment puis-je savoir quels modules sont fournis par le système ?

Réponse : Les java –list-modules peuvent être utilisés pour lister les modules. Vous devez vous référer à la documentation pour connaître leurs fonctions.

Q3. Est-il nécessaire d'installer l'IDE pour travailler en JAVA ?

Réponse : Non. Cela dépend de votre niveau de confort avec l'interface de ligne de commande. Les IDE effectuent de nombreuses tâches au niveau du backend qui ne sont pas connues des utilisateurs. CLI est la meilleure option pour identifier le problème et le résoudre.

 Q4. Comment accéder à un package public dans mon module ?

Réponse : Vous devez ajouter les éléments suivants dans la définition du module dans votre module pour accéder au package public,  info.java et required_package_name.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Sélecteur de dates JavaArticle suivant:Sélecteur de dates Java