Modules Java 9

Java 9 modules sont l’un des plus grands changements dans la structure de Java. Ici, je vais donner une brève introduction de haut niveau sur le « Système de modules Java 9 ».

Modules Java 9

Nous aborderons les sujets suivants concernant le système de modules Java 9.

  1. Introduction
  2. Java SE 9: Projet Jigsaw
  3. Problèmes du système Java actuel?
  4. Avantages du système de modules Java SE 9
  5. Comparer JDK 8 et JDK 9
  6. Qu’est-ce qu’un module Java 9?
  7. Mère du système de modules Java 9
  8. Comparer les applications Java 8 et Java 9

Introduction

Oracle corp a reporté la sortie de Java 9 de mars 2017 à septembre 2017. Comme nous le savons, Java SE 8 est venu avec trois grandes fonctionnalités nouvelles (plus quelques améliorations et nouvelles fonctionnalités supplémentaires).

  1. Expressions Lambda
  2. API Stream
  3. API de date

De la même manière, Java SE 9 arrive avec trois grandes fonctionnalités nouvelles (plus quelques améliorations et nouvelles fonctionnalités):

  1. Système de modules Java (Projet Jigsaw)
  2. Java REPL
  3. Projet de Fraisage de Pièces

Dans cet article, nous discuterons des bases du projet Oracle Jigsaw.

Java SE 9 : Projet Jigsaw

Le projet Jigsaw va introduire un tout nouveau concept dans Java SE 9 : Système de Module Java. Il s’agit d’un projet très important et prestigieux de la part d’Oracle Corp dans la version 9 de Java SE. Initialement, ils ont lancé ce projet dans le cadre de la version 7 de Java SE. Cependant, avec d’énormes changements, il a été reporté à la version 8 de Java SE, puis reporté à nouveau. Maintenant, il est sur le point d’être publié avec Java SE 9 en septembre 2017. Principaux objectifs du projet Jigsaw :

  • Le JDK modulaire
    Comme nous le savons, le système JDK actuel est trop volumineux. Ils ont donc décidé de diviser le JDK lui-même en petits modules pour en tirer plusieurs avantages (nous les aborderons bientôt dans les sections à venir). – Code source modulaire
    Les fichiers source actuels en jar sont trop volumineux, surtout rt.jar. Ainsi, ils vont diviser le code source Java en modules plus petits. – Images d’exécution modulaires
    L’objectif principal de cette fonctionnalité est de « restructurer les images d’exécution du JDK et du JRE pour accueillir des modules ». – Encapsulation de la plupart des API internes
    L’objectif principal de cette fonctionnalité est de « rendre la plupart des API internes du JDK inaccessibles par défaut, mais de laisser quelques API internes critiques et largement utilisées accessibles ». – Système de modules de plateforme Java
    L’objectif principal de cette fonctionnalité est de « permettre à l’utilisateur de créer ses propres modules pour développer ses applications ». – jlink: L’outil Java Linker
    L’objectif principal de cet outil jlink est de « permettre à l’utilisateur de créer des exécutables pour ses applications ».

Si vous ne comprenez pas clairement ces concepts, ne vous inquiétez PAS. Nous discuterons de ces concepts en profondeur avec quelques exemples utiles dans les sections à venir et également dans mes prochains articles.

Problèmes du système Java actuel?

Dans cette section, nous discuterons de « Pourquoi nous avons besoin du système de modules Java SE 9 », ce qui signifie les problèmes du système Java actuel. Les systèmes Java SE 8 ou antérieurs ont les problèmes suivants dans le développement ou la livraison d’applications basées sur Java.

  • Comme JDK est trop volumineux, il est un peu difficile à réduire pour les petits appareils. Java SE 8 a introduit 3 types de profils compacts pour résoudre ce problème : compact1, compact2 et compact3. Mais cela ne résout pas ce problème.
  • Les fichiers JAR comme rt.jar, etc., sont trop volumineux pour être utilisés dans de petits appareils et applications.
  • Comme JDK est trop volumineux, nos applications ou appareils ne peuvent pas supporter de meilleures performances.
  • Il n’y a pas d’encapsulation forte dans le système Java actuel parce que le modificateur d’accès « public » est trop ouvert. Tout le monde peut y accéder.
  • Comme JDK, JRE est trop volumineux, il est difficile de tester et de maintenir les applications.
  • Comme le public est trop ouvert, il n’est pas possible d’éviter l’accès à certains API internes non critiques comme sun.*, *.internal.*, etc.
  • Comme l’utilisateur peut également accéder aux API internes, la sécurité est également un gros problème.
  • L’application est trop volumineuse.
  • Il est un peu difficile de soutenir un couplage moindre entre les composants.

Pour résoudre tous ces problèmes, Oracle Corp s’apprête à publier le système de modules Java dans la version Java SE 9.

Avantages du système de modules Java SE 9

Le système de module Java SE 9 va fournir les avantages suivants

  • Comme Java SE 9 va diviser JDK, JRE, JAR, etc., en modules plus petits, nous pouvons utiliser les modules que nous voulons. Il est donc très facile de réduire l’échelle de l’application Java pour les petits appareils.
  • Simplicité de test et de maintenance.
  • Supporte de meilleures performances.
  • Comme public n’est pas juste public, il supporte une encapsulation très forte. (Ne vous inquiétez pas, c’est un grand concept. Nous allons l’explorer avec quelques exemples utiles bientôt).
  • Nous ne pouvons plus accéder aux API internes non critiques.
  • Les modules peuvent masquer les détails indésirables et internes très sûrement, nous pouvons obtenir une meilleure sécurité.
  • L’application est trop petite car nous pouvons utiliser uniquement les modules que nous voulons.
  • Il est facile de soutenir un couplage moins entre les composants.
  • Il est facile de soutenir le principe de responsabilité unique (SRP).

Nous allons explorer tous ces concepts un par un bientôt.

Comparer JDK 8 et JDK 9

Nous savons ce qu’un logiciel JDK contient. Après avoir installé le logiciel JDK 8, nous pouvons voir quelques répertoires tels que bin, jre, lib, etc. dans le dossier Java Home. Cependant, Oracle Corp a changé un peu cette structure de dossier comme indiqué ci-dessous. Structure du dossier JDK 8 : Structure du dossier JDK 9 : Ici, JDK 9 ne contient PAS JRE. Dans JDK 9, JRE est séparé dans un dossier de distribution séparé. Le logiciel JDK 9 contient un nouveau dossier « jmods ». Il contient un ensemble de modules Java 9 comme indiqué ci-dessous. Dans JDK 9, pas de rt.jar et pas de tools.jar REMARQUE:- Aujourd’hui, « jmods » contient 95 modules. Cela peut augmenter dans la version finale. Le dossier « jmods » est disponible dans ${JAVA_HOME}/jmods. Ceux-ci sont connus sous le nom de modules JDK.

Qu’est-ce qu’un module Java 9 ?

A Module is a self-describing collection of Code, Data, and some Resources. It is a set of related Packages, Types (classes, abstract classes, interfaces etc) with Code & Data and Resources. Each Module contains only a set of related code and data to support Single Responsibility (Functionality) Principle (SRP). The main goal of Java 9 Module System is to support Modular Programming in Java. We will discuss on “What is a Module Descriptor” and “How to develop Java Modules” in my coming posts.

Mère du système de modules Java 9

À l’heure actuelle, le système de modules Java 9 compte 95 modules dans le JDK Early Access. Oracle Corp a séparé les fichiers JAR JDK et les spécifications Java SE en deux ensembles de modules.

  • Tous les modules JDK commencent par « jdk.* »
  • Tous les modules de spécifications Java SE commencent par « java.* »

Le système de modules Java 9 comprend un module « java.base ». Il est connu sous le nom de module de base. C’est un module indépendant qui ne dépend d’aucun autre module. Par défaut, tous les autres modules dépendent de ce module. C’est pourquoi le module « java.base » est également connu sous le nom de « la mère des modules Java 9 ». C’est le module par défaut pour tous les modules JDK et les modules définis par l’utilisateur.

Comparer les applications Java 8 et Java 9

Nous avons déjà développé de nombreuses applications Java en utilisant Java 5, 6, 7 ou 8. Nous savons à quoi ressemblent les applications Java 8 ou antérieures et ce qu’elles contiennent. En bref, j’ai représenté une application Java 8 dans un diagramme comme indiqué ci-dessous : Dans une application Java 8 ou antérieure, le composant de niveau supérieur est un Package. Il regroupe un ensemble de types apparentés dans un groupe. Il contient également un ensemble de ressources. Les applications Java 9 n’ont pas beaucoup de différence avec cela. Elles ont simplement introduit un nouveau composant appelé « Module », qui est utilisé pour regrouper un ensemble de Packages apparentés dans un groupe. Et un autre nouveau composant est le Descripteur de Module (« module-info.java »). C’est tout. Le reste de l’application est identique aux versions antérieures des applications comme indiqué ci-dessous. Comme les applications Java 8 ont des Packages en tant que composants de niveau supérieur, les applications Java 9 ont des Modules en tant que composants de niveau supérieur. REMARQUE : Chaque Module Java 9 a un et un seul Module et un Descripteur de Module. Contrairement aux Packages Java 8, nous ne pouvons pas créer plusieurs modules dans un seul Module. En bref, je peux dire qu’un Module Java 9 contient les principaux composants suivants :

  • Un Module
  • Nom du Module
  • Descripteur de Module
  • Ensemble de Packages
  • Ensemble de Types et de Ressources

Ici, les ressources peuvent être module-info.java (Module Descriptor) ou d’autres propriétés ou XML. Nous avons discuté de beaucoup de théorie dans ce post. Je pense que c’est suffisant pour comprendre les bases du système de modules Java 9. Nous commencerons le développement de modules de base dans mon prochain post. Je discuterai de quelques concepts théoriques supplémentaires ou de la terminologie du système de modules Java 9 au besoin. C’est tout sur le sujet « Introduction au système de modules Java 9 ». Nous discuterons de quelques concepts supplémentaires du système de modules Java SE 9 dans mes prochains posts. N’hésitez pas à me laisser un commentaire si vous aimez mon post ou si vous avez des problèmes/suggestions/erreurs de type. Merci de lire mes tutoriels. Joyeux apprentissage de Java SE 9 ! Référence : Project Jigsaw

Source:
https://www.digitalocean.com/community/tutorials/java-9-modules