SlideShare une entreprise Scribd logo
1  sur  40
Quoi d’9 Java9 ?
Présenté par Jean-François Savard
Novembre 2016
Nouveautés
Informations générales
- Date prévu pour le 27 Juillet 2017
- Accès prématuré : https://jdk9.java.net/
- Accès prématuré avec Jigsaw : https://jdk9.java.net/jigsaw
- Code source : http://hg.openjdk.java.net/jdk9/dev/
- Mailing list : http://mail.openjdk.java.net/mailman/listinfo/jdk9-dev
- Informations : http://openjdk.java.net/projects/jdk9/
Horaire
• Quelques changements
• Présentation d’outils
• Les bonbons
• Nouveautés du langages
• Jigsaw
• Questions
Changements à considérer
5
Mise en contexte: survol des APIs
• Les standards JCP
• Les APIs spécifique au JDK
• Les APIs non-supportés
6
JEP-260: Encapsulation d’APIs interne
• APIs interne non-critique
• APIs interne critique
• APIs interne critique sans alternative
• Pas de panique!
7
Restructuration du JDK
8
JDK 8: JDK 9:
Méthodes @Deprecated enlevés
• java.util.logging.LogManager::addPropertyChangeListener
• java.util.logging.LogManager::removePropertyChangeListener
• java.util.jar.Pack200.Packer::addPropertyChangeListener
• java.util.jar.Pack200.Packer::removePropertyChangeListener
• java.util.jar.Pack200.Unpacker::addPropertyChangeListener
• java.util.jar.Pack200.Unpacker::removePropertyChangeListener
9
Modules partagés avec JavaEE non
résolu par défaut
• java.corba
• java.transaction
• java.annotations.common
• java.activation
• java.xml.ws (JAX-WS)
• java.xml.bind (JAXB)
10
Présentation d’outils
11
JShell
• Enfin un REPL pour Java!
• Buts visés
• P’tite démo!
12
JavaDoc
• Support du HTML5
• Possibilité de recherche
• HTML4 par défaut
• P’tite démo!
Pour plus d’informations : http://openjdk.java.net/jeps/224
13
jdeps
• Vérifier l’usage d’API internes
• Amélioré dans Java9
• Utilisation très simple
14
jdeps
15
Les bonbons
16
Instanciation de collections
17
Collectors.flatMapping
18
Collectors.filtering
19
Optional.ifPresentOrElse
20
Objects.requireNonNullElse
21
Présentation des nouveautés
du langage
22
@SafeVargs
• Anciennes spécifications :
• Nouvelles spécifications :
23
try-with-resources
24
Retaille des diamants
• Types non-denotable
• Diamond operator dans les classes anonymes
• Changement au niveau de la JVM
25
Enlever _ des identifiants légals
26
• Java8
• Java9
• Futures possibilités
• Partial diamond
• « Don’t care » parameter
Méthodes privées dans les interfaces
• Oublié dans Java8
• Allège le code des interfaces
• Déjà implémenté au niveau de la JVM
27
Amélioration de @Deprecated
28
jdeprscan
29
Strings
• Changements à l’interne
• Meilleur gestion de la mémoire
• StringConcatFactory
30
Nouveau scheme de version
• Le « 1. » dans « 1.9 » disparait.
31
Refonte de l’inférence de type
32
Bref aperçu de la
programmation modulaire
33
Pourquoi la modularité?
• Petits appareils
• Sécurité
• Performance
• Maintenance
34
JDK avant
35
JDK après
36
Qu’est-ce qu’un module?
• Module = package
• module-info.java
• requires
• exports
• requires transitive
• Mot-clé : « read »
• public != accessible
module-info.java
38
jlink
• Demo!
39
Quoi d'9, JAVA 9 ?

Contenu connexe

Tendances

Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Ouadie LAHDIOUI
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorFlorian Beaufumé
 
Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Benjamin Lampérier
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 
Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Eric D.
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBContent Square
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express jsAbdoulaye Dieng
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012FastConnect
 

Tendances (9)

Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
Real-Time applications avec la spécification Java (JSR 356) et le protocole W...
 
Programmation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et ReactorProgrammation réactive avec Spring 5 et Reactor
Programmation réactive avec Spring 5 et Reactor
 
Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015Meetup CakePHP Amiens / 25 mars 2015
Meetup CakePHP Amiens / 25 mars 2015
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006Introduction à Rails - Paris on Rails 2006
Introduction à Rails - Paris on Rails 2006
 
Toutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDBToutes les raisons d'adopter MongoDB
Toutes les raisons d'adopter MongoDB
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
Initiation à Express js
Initiation à Express jsInitiation à Express js
Initiation à Express js
 
MongoDB day Paris 2012
MongoDB day Paris 2012MongoDB day Paris 2012
MongoDB day Paris 2012
 

En vedette (9)

We Are Canadians Article
We Are Canadians ArticleWe Are Canadians Article
We Are Canadians Article
 
Murugan_Resume
Murugan_ResumeMurugan_Resume
Murugan_Resume
 
Luis Santana Resume 12.16.16
Luis Santana Resume 12.16.16Luis Santana Resume 12.16.16
Luis Santana Resume 12.16.16
 
Catálogo
CatálogoCatálogo
Catálogo
 
Pikkart SDK Launch @ AWE Asia 2016
Pikkart SDK Launch @ AWE Asia 2016Pikkart SDK Launch @ AWE Asia 2016
Pikkart SDK Launch @ AWE Asia 2016
 
Euskalkiak
EuskalkiakEuskalkiak
Euskalkiak
 
rajat - linkedin
rajat - linkedinrajat - linkedin
rajat - linkedin
 
Convocatoria ciudadana
Convocatoria ciudadanaConvocatoria ciudadana
Convocatoria ciudadana
 
никита бовыкин
никита бовыкинникита бовыкин
никита бовыкин
 

Similaire à Quoi d'9, JAVA 9 ?

Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Jean-Michel Doudoux
 
Les Cast Codeurs Podcast 68 - Devoxx 2012
Les Cast Codeurs Podcast 68 - Devoxx 2012Les Cast Codeurs Podcast 68 - Devoxx 2012
Les Cast Codeurs Podcast 68 - Devoxx 2012emmanuelbernard
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfJean-Michel Doudoux
 
Déploiement de Silverpeas sur JOnAS
Déploiement de Silverpeas sur JOnASDéploiement de Silverpeas sur JOnAS
Déploiement de Silverpeas sur JOnASAlexis Hassler
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720Romain Linsolas
 
Agile x API x Documentation @ NGO [[MOPCON2015]]
Agile x API x Documentation @ NGO [[MOPCON2015]]Agile x API x Documentation @ NGO [[MOPCON2015]]
Agile x API x Documentation @ NGO [[MOPCON2015]]Chun-Yu Tseng
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveAlexandre Morgaut
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10Jean-Michel Doudoux
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?Rui Carvalho
 
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquéeDéveloppement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquéeMustapha Tachouct
 
Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Jean-Michel Doudoux
 
Construire son application web de gestion de contenu d'annuaire LDAP
Construire son application web de gestion de contenu d'annuaire LDAPConstruire son application web de gestion de contenu d'annuaire LDAP
Construire son application web de gestion de contenu d'annuaire LDAPClément OUDOT
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Jean-Michel Doudoux
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projetjollivetc
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.jsJulien Giovaresco
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011OSInet
 

Similaire à Quoi d'9, JAVA 9 ? (20)

Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
 
Les Cast Codeurs Podcast 68 - Devoxx 2012
Les Cast Codeurs Podcast 68 - Devoxx 2012Les Cast Codeurs Podcast 68 - Devoxx 2012
Les Cast Codeurs Podcast 68 - Devoxx 2012
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
 
Déploiement de Silverpeas sur JOnAS
Déploiement de Silverpeas sur JOnASDéploiement de Silverpeas sur JOnAS
Déploiement de Silverpeas sur JOnAS
 
Devoxx java script-1280-720
Devoxx java script-1280-720Devoxx java script-1280-720
Devoxx java script-1280-720
 
Agile x API x Documentation @ NGO [[MOPCON2015]]
Agile x API x Documentation @ NGO [[MOPCON2015]]Agile x API x Documentation @ NGO [[MOPCON2015]]
Agile x API x Documentation @ NGO [[MOPCON2015]]
 
Etat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS GeneveEtat de l'art Server-Side JavaScript - JS Geneve
Etat de l'art Server-Side JavaScript - JS Geneve
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10
 
JavaFX et le JDK9
JavaFX et le JDK9JavaFX et le JDK9
JavaFX et le JDK9
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
 
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquéeDéveloppement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée
Développement d'un générateur d'intépréteur de bytecodes pour une JVM embarquée
 
Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018Apres java 8, java 9 et 10 - BreizhCamp 2018
Apres java 8, java 9 et 10 - BreizhCamp 2018
 
Construire son application web de gestion de contenu d'annuaire LDAP
Construire son application web de gestion de contenu d'annuaire LDAPConstruire son application web de gestion de contenu d'annuaire LDAP
Construire son application web de gestion de contenu d'annuaire LDAP
 
Javaoop
JavaoopJavaoop
Javaoop
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.js
 
Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011Drupal et le NoSQL - drupagora 2011
Drupal et le NoSQL - drupagora 2011
 

Quoi d'9, JAVA 9 ?

Notes de l'éditeur

  1. - But de la présentation : Survol des nouveautés principales dans Java9 - Impossible de tout condenser en une présentation d’1h
  2. C’est normal que vous n’arrivez pas à lire, on perdrait trop de temps anyway But de cette slide est simplement de faire réaliser qu’il y a beaucoup de choses Cette liste représente tous les JEPs inclus dans Java9, la liste peut être trouvé sur la page jdk9 d’openjdk
  3. Date prévu le 27 juillet Accès prématuré aux builds avec ou sans jigsaw Code source peut être récupéré d’OpenJDK Possibilité de s’abonner au mailing list pour être à l’affut de toutes discussions Pour toutes autres informations (JEPs) voir la page jdk9 d’openjdk Le powerpoint sera uploadé sur le site du Java Wave donc ces liens pourront être récupérés
  4. Quelques changements dont il faut être à l’affut avant de migrer Présentation d’outils Présentation de bonbons du JDK, donc de nouvelles méthodes ajoutés le fun Nouveautés du langages Un très bref aperçu de Jigsaw, le but n’est pas de rentrer en détail, mais bien de vous teaser pour la prochaine conférence qui portera entièrement sur jigsaw. Questions
  5. Le JDK est décomposé en plusieurs APIs Les standards JCP (Java Community Process), on parle de java.* et javax.* Les APIs spécifique au JDK, on parle de com.sun.* et quelques occurrences de jdk.* Les APIs non-supportés et interne, on parle de sun.* principalement. Jamais été prévu pour le public. Deux catégories Non-critique : Ceux qui ne sont probablement pas utilisé en dehors du JDK car il n’y aurait aucune raison. Ex. sun.misc.BASE64Decoder… Plein de librairies l’offre déjà Critique : Fonctionnalités qui serait difficile à implémenter en dehors du JDK et qui sont donc utilisés beaucoup par le public. Ex. sun.misc.Unsafe
  6. Le but de ce JEP est de rendre la majorité des APIs internes innaccessible à l’exception de celles grandement utilisés (APIs critiqu) Les APIs internes non-critique seront encapsulés par défaut Les APIS internes critiques qui ont une alternative connu depuis 8 seront aussi encapsulés Ne pas encapsuler les APIs internes critiques qui n’ont pas d’alternatives prévu dans 8, parcontre si elles ont une alternative dans 9, on les met @Deprecated et on les enlèves dans 10 APIs internes critiques qui vont rester accessible dans JDK 9: sun.misc.{Signal,SignalHandler} sun.misc.Unsafe (JEP-193) sun.reflect.Reflection sun.reflect.ReflectionFactory
  7. Le dossier JRE est supprimé Plus de rt.jar et tools.jar Rt.jar regroupe toutes les .class nécessaire au runtime Tools.jar contient tous les outils requis par le JDK, mais pas par le JRE… exemple javac, javadoc Ceux dans bin ne faisaient que référer ce qu’il y a dans tools.jar
  8. Enfin des méthodes @Deprecated enlevés. Il y a peu de chances que vous utilisez une de ces méthodes, mais si c'est le cas sachez qu'elles n'existeront plus dans Java9
  9. Pas de panique, on peut ramener les modules à l'aide d'un flag --add-modules
  10. Buts visés : Faciliter l’apprentissage, facilite l’exploration d’APIs et de nouvelles fonctionnalités cd %JDK9_BIN% Jshell - Pas besoin de ; etc On peut créer des variables -> « foo bar baz » On peut lister des variables avec /vars On peut accéder à une variable avec $ On peut créer une méthode void sayHello() {} On peut voir les méthodes créées avec /methods On peut créer une classe class Test {} On peut lister les classes avec /types On peut modifier un snippet avec /edit On peut changer l’editeur /set editor notepad Les imports sont résolu par défaut i.e si j’écris Pattern.compile(« \\s »).splitAsStream($1).forEach(System.out::println) et que je type /imports on voit java.util.regex On peut voir l’historique de la session avec /history On peut enregistrer dans un fichier avec /save On peut charger un fichier avec /open On peut réinitialiser le jshell avec /jshell On peut lister tout ce qui a été créé avec /list On peut supprimer un snippet avec /drop Jshell builtin dans netbeans
  11. Actuellement la javadoc génère du HTML4. Le nouvel outil supportera HTML5 donc il sera possible de fermer les balises <p>. HTML4 restera généré par défaut, mais on pourra choisir html5 en spécifiant –html5 Enfin l’ajout d’une fonctionnalité de recherche. https://docs.oracle.com/javase/8/docs/api/ https://download.java.net/java/jdk9/docs/api/index.html Faire une demo pour montrer l’outil de recherche versus avant Outil de recherche côté client en javascript Possibilité de créer des index Pour plus d’informations voir le JEP-224
  12. Certains d’entre vous connaissent peut-être l’outil, il existait déjà, mais a été amélioré dans Java 9 pour les modules. - Permet de vérifier l’usage de librairies internes --jdkinternal - Permet plusieurs options de filtres (par regex, modules, etc).
  13. Voici un bref aperçu d’un output généré par Jdeps sur un module de glassfish
  14. Il y en a pas mal plus, mais on va voir quelques méthodes ajoutés au JDK fun à utiliser.
  15. Pour des raisons de perf, les implémentations sont faites sur plusieurs overload (10 si je me souviens bien) Donc à prévoir que dans eclipse si on fait ctrl+espace, on risque de voir 10 méthodes aparaitre avec 10 paramètres.
  16. Principalement utile lorsqu’on a une réduction sur plusieurs niveaux, exemple comme « downStream » d’un groupingBy Dans le premier exemple, il y aurait eu possibilité d’utiliser Collectors.reducing, mais on brise le contrat et en bonus cet exemple fonctionne avec parralelStream On a une liste d’orders qu’on veut grouper par customerName .. Problème List<List<LineItems>> alors qu’on veut List<LineItems>
  17. En gros ce qu’on fait ici dans java8, On map notre valeur si elle est présente en un Runnable qui exécute une action, sinon on map dans un autre Runnable qui fait le fallback. On call run à la fin. Ça semble overkill un peu pour le but initial. Java9 nous arrive avec un ifPresentOrElse qui rend la chose beaucoup plus clean, on passe l’action si présent, sinon un autre Runnable.
  18. Deux nouvelles méthodes de pré-conditions ajoutés qui permettent déviter les if(null) assign… requireNonNullElse prend la valeur par défaut, tandis que requireNonNullElseGet prend un supplier pour généré une valeur par défaut.
  19. À l’interne, le compilateur opère sur plusieurs « types » qui ne peuvent être utilisé directement dans un fichier java. Ces types sont « non-denotable ». Java9 permet la création de classes anonymes avec <>, (changement au niveau de la JVM). JDK7: Suppression d’environs 90% des types explicites. JDK9: Supression du 10% restant.
  20. Le tableau interne char[] n’est plus! 1-2 byte(s) par caractère Transparent pour l’usager, seulement une meilleur gestion de la mémoire. JEP-280: la concaténation par défaut n’utilise plus de StringBuilder. StringConcatFactory Optimisé par la JVM
  21. Bon à savoir si vous utilisé la version dans une comparaison quelque part.
  22. - L’inférence de type est utilisé par javac pour compiler les <> - Problème de performance lorsqu’on les encapsule - Ouvre la porte à d’autres optimisations dans le futur
  23. Vraiment juste un teaser, on rentre pas en détails Prochaine présentation Plusieurs mots-clé Notions de modularité Modules et Services “Under the Hood”
  24. Rendre le JDK plus facilement accessible aux petits appareils. Améliorer la sécurité et la maintenance du JDK. Meilleur performance. Plus facile de construire des librairies et/ou grosses applications. Ces buts peuvent être retrouvés sur la page du projet JigSaw sur openjdk
  25. Avant la modularisation, on voit tout de suite qu'il y a un problème
  26. Après la modularisation, pour info ces graphiques peuvent être générés avec netbeans.
  27. Un module peut être vu comme un package Chaque module est défini par un fichier module-info.java On spécifie les modules voulu à l’aide du mot-clé requires On spécifie dans un module ce qu’on veut rendre accessible à l’aide du mot-clé exports On peut spécifier de trainer un module dans toute la hiérarchie à l’aide du mot-clé transitive Lorsqu’un module requiert un autre module, on dit que A « reads » B public != accessible
  28. Jlink –module-path /jmods –add-module java.base –output myimg –strip-debug –output myimg