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

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

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.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

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)

Résolution des problèmes communs de Java NullpointerException avec facultatif Résolution des problèmes communs de Java NullpointerException avec facultatif Aug 31, 2025 am 07:11 AM

Facultatif est une classe de conteneurs introduite par Java 8. Il est utilisé pour indiquer clairement qu'une valeur peut être vide, évitant ainsi NullPointerException; 2. Il simplifie la vérification null nul en fournissant MAP, Orelse et d'autres méthodes, empêchant les méthodes de renvoyer les valeurs de rendement de la collection NULL et de normaliser; 3. Les meilleures pratiques incluent uniquement les valeurs de retour, d'éviter l'utilisation de champs ou de paramètres, de distinguer Orelse de Orelseget, et de ne pas appeler Get () directement; 4. Facultatif ne doit pas être abusé. Si les méthodes non vides n'ont pas besoin d'être enveloppées, les opérations facultatives inutiles doivent être évitées dans le flux; L'utilisation correcte de facultatif peut considérablement améliorer la sécurité et la lisibilité du code, mais elle nécessite de bonnes habitudes de programmation.

Que sont les cours de wrapper et pourquoi sont-ils utilisés en Java? Que sont les cours de wrapper et pourquoi sont-ils utilisés en Java? Sep 01, 2025 am 05:58 AM

WrapperclassesaSareUsedToconvertprimeTatatyTySIntoObjects, permettant à la consommation, permettant de surtout, fournissant des méthodes et de la supportation d'auto-oboxing / déborde.

Qu'est-ce que l'API Stream en Java? Qu'est-ce que l'API Stream en Java? Sep 01, 2025 am 08:51 AM

Thestreamapiinjavaisafonctionaltoolforprocedinges sewences ovel elements sepromsurces wecollections soarraywithouttoringodifier la théoriginaldata, soutenant les opérations

Que sont les interfaces fonctionnelles en Java? Que sont les interfaces fonctionnelles en Java? Sep 02, 2025 am 02:07 AM

FunctionalInterfacesInjavaare Interfaces de manière exactive de manière agrandie, servant la main-d'œuvre pour les effets de réduction des effectifs et les programmes de programmation;

Stratégies de recherche et pièges communs pour les objets personnalisés dans Java ArrayList Stratégies de recherche et pièges communs pour les objets personnalisés dans Java ArrayList Sep 05, 2025 am 11:09 AM

Dans Java, lors de l'utilisation directement de la méthode ArrayList.Contains () pour trouver un objet personnalisé, si le type passé ne correspond pas au type d'élément dans la liste ou si la méthode equals () n'est pas correctement réécrite, le résultat attendu ne sera pas obtenu. Cet article discutera en détail du principe de travail de CONTAINS () et présentera la bonne façon de trouver efficacement et avec précision des objets personnalisés dans ArrayList par itération, API de flux Java 8 et d'autres méthodes, et fournira des suggestions d'optimisation des performances.

Comment créer un fichier en java Comment créer un fichier en java Sep 21, 2025 am 03:54 AM

UseFile.CreateEnewFile () toCreateaFileOnlyiFitDoOesn’texist, EvitingoverWriting; 2.Preferfiles.CreateFile () FromNio.2Formodern, SafeFilecreationThatFailSiftheFileExists; 3.UseFileWriterorPrintwriterWistereAdMedimMedimate

Comment structurer un monolithe java évolutif Comment structurer un monolithe java évolutif Sep 01, 2025 am 08:42 AM

UseFeature-basyPackagingandToolslikearchunittoenforceModuleBoundaries.2.DecoupleModuleswithDomainevents etharedContractsSinteadofDirectCalls.3.OptimeperformanceViastelessServices, cachebuildswithmo

Comment recherchez-vous un élément dans un tableau en Java? Comment recherchez-vous un élément dans un tableau en Java? Sep 02, 2025 am 02:03 AM

La meilleure façon de rechercher des éléments de tableau en Java dépend de la triée du tableau et de ses exigences de performances: pour les petits tableaux non triés, utilisez la recherche linéaire (complexité temporelle O (n)); Pour les tableaux triés, utilisez Arrays.binarySearch () (complexité temporelle O (Logn)); Si vous utilisez des tableaux d'objets et que vous poursuivez la simplicité, vous pouvez vous convertir en liste et appel contient () ou indexof (); Lorsque vous préférez le style fonctionnel dans Java 8, vous pouvez utiliser des arrays.stream (). anyMatch () pour implémenter une ligne de code simple, mais les performances sont légèrement inférieures à celles des boucles traditionnelles, donc le choix des méthodes nécessite des performances de pesée, de la lisibilité et si les données sont triées.

See all articles