Développement logiciel : prise en charge minimale du système de modules Java

Développement logiciel : prise en charge minimale du système de modules Java

2024-01-11 14:25:00

Ces dernières années, nous avons entendu de nombreuses opinions différentes sur le système de modules Java. Bien que de nombreux développeurs soient favorables à l’option standardisée pour définir les modules, de nombreux avis critiques critiquent la définition, par exemple pour le manque de fonctionnalités telles que la prise en charge des versions. Cependant, je ne veux pas du tout lancer cette discussion ici. Je vois moi-même de nombreux avantages dans le système de modules et je peux comprendre que les développeurs de frameworks et de bibliothèques en particulier (veulent) utiliser le tout.

Publicité


Hendrik Ebbers (@hendrikEbbers) est champion Java, membre du groupe d’experts JCP et a été reconnu à plusieurs reprises comme conférencier JavaOne Rockstar. Avec sa propre société Open Elements, Hendrik participe actuellement à la conception du Hedera Hashgraph et à la mise à disposition de ses services au public. Hendrik est co-fondateur de JUG Dortmund et de Cyberland et donne des conférences et des ateliers sur Java dans le monde entier. Son livre « Mastering JavaFX 8 Controls » a été publié par Oracle Press en 2014. Hendrik travaille activement sur des projets open source tels que JakartaEE ou Eclipse Adoptium. Hendrik est membre du TSC AdoptOpenJDK et de l’Eclipse Adoptium WG.

Cependant, un gros inconvénient ici est qu’une dépendance (transitive) qui n’est en aucun cas adaptée au système de modules Java peut ne pas correspondre aux définitions et restrictions du système de modules et ne peut donc pas être ajoutée au chemin du module. Le système de modules Java crée automatiquement un module pour chaque JAR qu’il trouve sur le chemin du module. Cela peut entraîner certains problèmes, qui peuvent souvent être résolus en effectuant de petits ajustements dans une bibliothèque.

Je voudrais examiner de plus près ces problèmes dans plusieurs articles et indiquer des solutions possibles. Cet article examine de plus près l’utilisation et la définition des modules automatiques.

Une définition importante du système de modules est que chaque module a besoin d’un nom unique. Cela se fait entre des modules explicitement déclarés qui ont un module-info.java et des modules automatiques déclarés implicitement. De plus amples informations peuvent être trouvées sur Spécification JavaSE retirer. Si vous ne profitez pas du système modulaire dans votre projet en utilisant un module-info.java Si vous souhaitez l’utiliser, il suffit de définir votre propre bibliothèque comme module automatique.

La seule condition requise est que le module ait un nom unique. Si nécessaire, Java peut même extraire un nom du nom du JAR pour les JAR sur le chemin du module, mais cela n’est clairement pas recommandé. D’autant que définir un nom pour un module automatique est vraiment très simple. Il faut juste que ce soit le Automatic-Module-Name Propriété dans le MANIFEST.MF du JAR peut être défini. Si Maven ou Gradle est utilisé comme outil de construction, cela peut même être fait de manière entièrement automatique à l’aide d’un plug-in.

Comme vous pouvez le voir dans l’exemple suivant, avec une version Maven, seul le plugin maven-jar-plugin doit être configuré en conséquence :


    org.apache.maven.plugins
    maven-jar-plugin
    3.3.0
    
        
            
                com.example.lib
            
        
    

Le tout peut être facilement implémenté dans Gradle en utilisant le plugin Java Library, qui devrait faire partie de chaque version Java. Vous pouvez trouver une documentation détaillée à utiliser dans Gradle ici find, tandis que le code suivant montre une intégration simple dans un projet :

tasks.jar {
    manifest {
        attributes("Automatic-Module-Name" to "com.example.lib")
    }
}

Comme les modifications sont vraiment très simples, elles sont également idéales pour proposer le tout aux bibliothèques open source sous forme de pull request. Dans un exemple J’ai un PR pour définir un Automatic-Module-Name ajouté à une bibliothèque Java open source. Peut-être qu’un développeur open source lira et créera un « bon premier numéro » pour un tel changement dans ses propres bibliothèques, par exemple Fête de la bière peut être mis en œuvre par les nouveaux arrivants.




Avec la sortie de Java 21, les Virtual Threads constituent certainement l’une des évolutions les plus passionnantes de ces dernières années. Ces petits assistants rendent le traitement des tâches plus simultané en étant capables de répondre à d’innombrables demandes de clients en même temps sans atteindre les limites de ressources du système d’exploitation ou du matériel.

Marwan Abu-Khalil explique dans son atelier comment en tirer profit, comment une architecture doit être structurée pour cela et quels pièges et cas particuliers doivent être pris en compte. Applications Java évolutives avec des threads virtuels le 5 février 2024.


(moi)

Vers la page d’accueil



#Développement #logiciel #prise #charge #minimale #système #modules #Java
1705013724

Facebook
Twitter
LinkedIn
Pinterest

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.