quoi d'9, java 9 ?
TRANSCRIPT
Quoi d’9 Java9 ?
Présenté par Jean-François SavardNovembre 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
5
Changements à considérer
6
Mise en contexte: survol des APIs• Les standards JCP
• Les APIs spécifique au JDK
• Les APIs non-supportés
7
JEP-260: Encapsulation d’APIs interne• APIs interne non-critique
• APIs interne critique
• APIs interne critique sans alternative
• Pas de panique!
8
Restructuration du JDK
JDK 8: JDK 9:
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
10
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)
11
Présentation d’outils
12
JShell• Enfin un REPL pour Java!
• Buts visés
• P’tite démo!
13
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
14
jdeps• Vérifier l’usage d’API internes• Amélioré dans Java9• Utilisation très simple
15
jdeps
16
Les bonbons
17
Instanciation de collections
18
Collectors.flatMapping
19
Collectors.filtering
20
Optional.ifPresentOrElse
21
Objects.requireNonNullElse
22
Présentation des nouveautés du
langage
23
@SafeVargs• Anciennes spécifications :
• Nouvelles spécifications :
24
try-with-resources
25
Retaille des diamants• Types non-denotable
• Diamond operator dans les classes anonymes
• Changement au niveau de la JVM
26
Enlever _ des identifiants légals• Java8• Java9• Futures possibilités• Partial diamond• « Don’t care » parameter
27
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
28
Amélioration de @Deprecated
29
jdeprscan
30
Strings• Changements à l’interne
• Meilleur gestion de la mémoire
• StringConcatFactory
31
Nouveau scheme de version• Le « 1. » dans « 1.9 » disparait.
32
Refonte de l’inférence de type
33
Bref aperçu de la programmation
modulaire
34
Pourquoi la modularité?• Petits appareils
• Sécurité
• Performance
• Maintenance
35
JDK avant
36
JDK après
Qu’est-ce qu’un module?• Module = package• module-info.java• requires• exports• requires transitive• Mot-clé : « read »• public != accessible
38
module-info.java
39
jlink• Demo!