JPMS : système de modules de plate-forme Java
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.
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
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds





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. ...

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 ...

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 ...

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

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 ...

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 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? 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 ...
