Table des matières
Pourquoi Java a-t-il besoin de modules ?
Chemin de classe VS chemin de module
Modules en JAVA
Compatibilité ascendante
Erreurs courantes
Conclusion
Maison Java javaDidacticiel JPMS : système de modules de plate-forme Java

JPMS : système de modules de plate-forme Java

Sep 24, 2023 pm 05:05 PM

JPMS signifie Java Platform Module System. Il s'agit d'une nouvelle fonctionnalité de Java 9. Nos applications Java et packages Java peuvent être regroupés dans des modules Java à l'aide du système de modules Java. Les modules Java nous permettent de spécifier quels packages du module et les autres modules Java doivent pouvoir le voir. Le module Java répertorie également les modules Java requis pour son exécution.

Java Platform System est également connu sous le nom de Java Jigsaw ou Project Jigsaw. Le nom Jigsaw a été utilisé au moment de son développement. L’objectif principal de ce développement est de rendre le JRE plus modulaire. JPMS résout plusieurs problèmes majeurs, à savoir Classpath/JAR Hell, le JDK unique à grande échelle, les conflits de versions et les problèmes de sécurité.

Maintenant, approfondissons le système de modularité de la plate-forme Java pour en savoir plus à leur sujet.

Pourquoi Java a-t-il besoin de modules ?

Il est important de rappeler que JPMS est une fonctionnalité SE (Standard Edition) et affecte tous les niveaux de Java. Néanmoins, le but de ce patch est de permettre à la plupart des programmes de s'exécuter sans modification lors du passage de Java 8 à Java 9. Son objectif principal est de collecter les packages associés visibles par le module, tout en masquant certains composants aux utilisateurs externes du module.

Le lancement de JPMS a les objectifs déclarés suivants : 

  • Organisez facilement de grandes applications et bibliothèques.

  • Améliorer la sécurité

  • Améliorez les performances des applications

  • Gérer les pannes de plateforme pour les petits appareils.

  • Structure améliorée.

Chemin de classe VS chemin de module

Jusqu'à présent, le chemin de classe était le principal déterminant de ce à quoi un programme peut accéder lors de son exécution en Java. Bien qu’il joue ce rôle et qu’il soit clairement compris, le chemin de classe finit par devenir un grand compartiment indifférencié dans lequel toutes les dépendances sont branchées.

Le chemin du module ajoute un niveau au-dessus du chemin de classe. Il agit comme un espace de stockage pour les packages et sélectionne les packages auxquels une application peut accéder.

Chemin de classe

Chemin du module

S'applique à toutes les versions de Java

Uniquement disponible pour Java 9 et supérieur

Pas besoin de module-info.java

Avez-vous besoin de module-info.java

L'ajout de la bibliothèque ne fonctionne que si le projet n'a pas module-info.java

La bibliothèque peut fonctionner sans module-info.java

Ajoutez uniquement des bibliothèques non modulaires

Des modules et des non-modulaires peuvent être ajoutés

Faible encapsulation et abstraction

Encapsulation et abstraction fortes

La modularité est faible

Très modulaire

Impossible d'ajouter une bibliothèque à un projet en en ajoutant une partie au chemin de classe

Nous ne pouvons ajouter la partie requise de la bibliothèque au projet qu'en l'ajoutant au chemin du module

Modules en JAVA

JDK est composé de modules. Si vous utilisez le JDK sur votre système, vous disposez également du code source. Si vous ne le saviez pas, consultez ceci pour en savoir plus.

Il existe un répertoire /lib dans le répertoire d'installation du JDK. Dans ce répertoire vous trouverez un fichier src.zip. Extrayez-le ensuite dans le répertoire /src. Après cela, regardez dans le répertoire /src et recherchez le répertoire /java.base, vous trouverez ensuite le fichier module-info.java et enfin l'ouvrirez.

Après les commentaires Javadoc en haut, vous trouverez un dossier appelé modulesection.base, suivi de la ligne d'exportation. Le format est un peu ésotérique, nous n’entrerons donc pas trop dans les détails.

Comme vous pouvez le constater, le module java.base exporte plusieurs packages Java bien connus, dont java.io. C'est ainsi que fonctionne le module qui collecte les packages.

JPMS:Java 平台模块系统

Les exigences de la directive

sont à l’opposé de l’exportation. Par conséquent, le module spécifié peut nécessiter un module. Spécifiez le chemin du module de la même manière que vous fournissez le chemin de classe lors de l'exécution du compilateur Java sur le module. Cela permet de résoudre les dépendances.

Compatibilité ascendante

Java 9 a été créé dans un souci de compatibilité ascendante. Cependant, la nouvelle structure des modules constitue un changement majeur et vous pourriez rencontrer des problèmes, en particulier dans les bases de code volumineuses.

La commande suivante peut être utile pour résoudre les problèmes provenant de votre base de code - lorsque la commande jdeps pointe vers une classe, elle recherchera toutes les dépendances et les modules qui les nécessitent.

Si vos dépendances posent des problèmes, vous souhaiterez peut-être créer avec une version plus récente du package dont vous dépendez et compatible avec Java 9. Sinon, vous souhaiterez peut-être rechercher des options.

Erreurs courantes

Comment résoudre java.lang.NoClassDefFoundError -

Javax/xml/bind/JAXBException
Copier après la connexion

Il s'agit du code qui se plaint que la classe attribuée est introuvable car elle a été migrée vers un module et n'est pas visible pour le code consommateur. Il existe plusieurs solutions.

JPMS est une transition assez importante, donc son adoption prendra un certain temps. Heureusement, Java 8 étant une version supportée à long terme, il n’y a pas de besoin immédiat.

Cependant, à terme, il sera nécessaire que les anciens projets soient migrés, et que les nouveaux projets utilisent les modules à bon escient, afin peut-être de bénéficier d'une partie des avantages qui ont été apportés.

Conclusion

JPMS signifie Java Platform Module System et était également appelé puzzle de projet dans les premiers stades de développement. Cela permet aux développeurs d'organiser plus facilement des applications et des bibliothèques volumineuses. Il améliore la structure et augmente le niveau de sécurité de la plateforme. Il est également utilisé pour améliorer les performances des applications et est utile pour la décomposition de la plate-forme pour les appareils plus petits. L'idée principale derrière cela est de permettre une collection de packages associés visibles par un module, tout en masquant les éléments des consommateurs externes sur le module.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le logiciel de sécurité de l'entreprise entraîne-t-il l'exécution de l'application? Comment dépanner et le résoudre? Le logiciel de sécurité de l'entreprise entraîne-t-il l'exécution de l'application? Comment dépanner et le résoudre? Apr 19, 2025 pm 04:51 PM

Dépannage et solutions au logiciel de sécurité de l'entreprise qui fait que certaines applications ne fonctionnent pas correctement. De nombreuses entreprises déploieront des logiciels de sécurité afin d'assurer la sécurité des réseaux internes. ...

Comment obtenir élégamment des noms de variables de classe d'entité pour créer des conditions de requête de base de données? Comment obtenir élégamment des noms de variables de classe d'entité pour créer des conditions de requête de base de données? Apr 19, 2025 pm 11:42 PM

Lorsque vous utilisez MyBatis-Plus ou d'autres cadres ORM pour les opérations de base de données, il est souvent nécessaire de construire des conditions de requête en fonction du nom d'attribut de la classe d'entité. Si vous manuellement à chaque fois ...

Comment simplifier les problèmes de cartographie des champs dans l'amarrage du système à l'aide de mapstruct? Comment simplifier les problèmes de cartographie des champs dans l'amarrage du système à l'aide de mapstruct? Apr 19, 2025 pm 06:21 PM

Le traitement de la cartographie des champs dans l'amarrage du système rencontre souvent un problème difficile lors de l'exécution d'amarrage du système: comment cartographier efficacement les champs d'interface du système a ...

Comment Intellij Idea identifie-t-elle le numéro de port d'un projet de démarrage de printemps sans publier un journal? Comment Intellij Idea identifie-t-elle le numéro de port d'un projet de démarrage de printemps sans publier un journal? Apr 19, 2025 pm 11:45 PM

Commencez le printemps à l'aide de la version IntelliJideaultimate ...

Comment convertir les noms en nombres pour implémenter le tri et maintenir la cohérence en groupes? Comment convertir les noms en nombres pour implémenter le tri et maintenir la cohérence en groupes? Apr 19, 2025 pm 11:30 PM

Solutions pour convertir les noms en nombres pour implémenter le tri dans de nombreux scénarios d'applications, les utilisateurs peuvent avoir besoin de trier en groupe, en particulier en un ...

Comment convertir en toute sécurité les objets Java en tableaux? Comment convertir en toute sécurité les objets Java en tableaux? Apr 19, 2025 pm 11:33 PM

Conversion des objets et des tableaux Java: Discussion approfondie des risques et des méthodes correctes de la conversion de type de distribution De nombreux débutants Java rencontreront la conversion d'un objet en un tableau ...

Comment utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits? Comment utiliser la solution Redis Cache pour réaliser efficacement les exigences de la liste de classement des produits? Apr 19, 2025 pm 11:36 PM

Comment la solution de mise en cache Redis réalise-t-elle les exigences de la liste de classement des produits? Pendant le processus de développement, nous devons souvent faire face aux exigences des classements, comme l'affichage d'un ...

Comment convertir les noms en nombres pour implémenter le tri au sein des groupes? Comment convertir les noms en nombres pour implémenter le tri au sein des groupes? Apr 19, 2025 pm 01:57 PM

Comment convertir les noms en nombres pour implémenter le tri au sein des groupes? Lors du tri des utilisateurs en groupes, il est souvent nécessaire de convertir le nom de l'utilisateur en numéros afin qu'il puisse être différent ...

See all articles