40
Quoi d’9 Java9 ? Présenté par Jean-François Savard Novembre 2016

Quoi d'9, JAVA 9 ?

Embed Size (px)

Citation preview

Page 1: Quoi d'9, JAVA 9 ?

Quoi d’9 Java9 ?

Présenté par Jean-François SavardNovembre 2016

Page 2: Quoi d'9, JAVA 9 ?

Nouveautés

Page 3: Quoi d'9, JAVA 9 ?

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/

savardjf
Accès prématuré aux builds, code source disponible sur le site d'openjdk
savardjf
possibilité de s'abonner au mailing list
savardjf
La publication sera ajouté sur le site du javawave qui sera publié prochainement sur la page linkedin - tous les liens pourront y être récupéré
Page 4: Quoi d'9, JAVA 9 ?

Horaire• Quelques changements• Présentation d’outils• Les bonbons• Nouveautés du langages• Jigsaw• Questions

Page 5: Quoi d'9, JAVA 9 ?

5

Changements à considérer

Page 6: Quoi d'9, JAVA 9 ?

6

Mise en contexte: survol des APIs• Les standards JCP

• Les APIs spécifique au JDK

• Les APIs non-supportés

Page 7: Quoi d'9, JAVA 9 ?

7

JEP-260: Encapsulation d’APIs interne• APIs interne non-critique

• APIs interne critique

• APIs interne critique sans alternative

• Pas de panique!

savardjf
APIs interne non-critique seront encapsulé
savardjf
APIs interne critique seront encapsulé si une alternative est connu
savardjf
APIs interne critique sans alternative seront @Deprecated et retiré dans Java 10
savardjf
Une alternative prévu: passer un flag en ligne de commande pour pouvoir utiliser votre sun.misc.unsafe
Page 8: Quoi d'9, JAVA 9 ?

8

Restructuration du JDK

JDK 8: JDK 9:

Page 9: Quoi d'9, JAVA 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

savardjf
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
Page 10: Quoi d'9, JAVA 9 ?

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)

Page 11: Quoi d'9, JAVA 9 ?

11

Présentation d’outils

Page 12: Quoi d'9, JAVA 9 ?

12

JShell• Enfin un REPL pour Java!

• Buts visés

• P’tite démo!

Page 13: Quoi d'9, JAVA 9 ?

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

Page 14: Quoi d'9, JAVA 9 ?

14

jdeps• Vérifier l’usage d’API internes• Amélioré dans Java9• Utilisation très simple

Page 15: Quoi d'9, JAVA 9 ?

15

jdeps

Page 16: Quoi d'9, JAVA 9 ?

16

Les bonbons

Page 17: Quoi d'9, JAVA 9 ?

17

Instanciation de collections

Page 18: Quoi d'9, JAVA 9 ?

18

Collectors.flatMapping

Page 19: Quoi d'9, JAVA 9 ?

19

Collectors.filtering

Page 20: Quoi d'9, JAVA 9 ?

20

Optional.ifPresentOrElse

Page 21: Quoi d'9, JAVA 9 ?

21

Objects.requireNonNullElse

Page 22: Quoi d'9, JAVA 9 ?

22

Présentation des nouveautés du

langage

Page 23: Quoi d'9, JAVA 9 ?

23

@SafeVargs• Anciennes spécifications :

• Nouvelles spécifications :

Page 24: Quoi d'9, JAVA 9 ?

24

try-with-resources

Page 25: Quoi d'9, JAVA 9 ?

25

Retaille des diamants• Types non-denotable

• Diamond operator dans les classes anonymes

• Changement au niveau de la JVM

Page 26: Quoi d'9, JAVA 9 ?

26

Enlever _ des identifiants légals• Java8• Java9• Futures possibilités• Partial diamond• « Don’t care » parameter

Page 27: Quoi d'9, JAVA 9 ?

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

Page 28: Quoi d'9, JAVA 9 ?

28

Amélioration de @Deprecated

Page 29: Quoi d'9, JAVA 9 ?

29

jdeprscan

Page 30: Quoi d'9, JAVA 9 ?

30

Strings• Changements à l’interne

• Meilleur gestion de la mémoire

• StringConcatFactory

Page 31: Quoi d'9, JAVA 9 ?

31

Nouveau scheme de version• Le « 1. » dans « 1.9 » disparait.

Page 32: Quoi d'9, JAVA 9 ?

32

Refonte de l’inférence de type

Page 33: Quoi d'9, JAVA 9 ?

33

Bref aperçu de la programmation

modulaire

Page 34: Quoi d'9, JAVA 9 ?

34

Pourquoi la modularité?• Petits appareils

• Sécurité

• Performance

• Maintenance

Page 35: Quoi d'9, JAVA 9 ?

35

JDK avant

Page 36: Quoi d'9, JAVA 9 ?

36

JDK après

Page 37: Quoi d'9, JAVA 9 ?

Qu’est-ce qu’un module?• Module = package• module-info.java• requires• exports• requires transitive• Mot-clé : « read »• public != accessible

Page 38: Quoi d'9, JAVA 9 ?

38

module-info.java

savardjf
Juste histoire de vous teaser, voici un exemple de code java qui compile avec Jigsaw.
Page 39: Quoi d'9, JAVA 9 ?

39

jlink• Demo!

savardjf
Et une p'tite démo pour vous montrer quelques possibilités avec jlink...
Page 40: Quoi d'9, JAVA 9 ?
savardjf
En espérant que vous ayez apprécié, on a besoin que vous parliez du java wave pour la prochaine conférence sur jigsaw!