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.
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.
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 |
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.
Les exigences de la directivesont à 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.
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.
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.
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!