Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Java 11, 12.. c'est le moment de remplacer son ...

Java 11, 12.. c'est le moment de remplacer son JDK8

Java 12 est sorti comme prévu en mars dernier.

Java 11 est sorti en septembre dernier, estampillé LTS (Long Term Support)

Que de changement depuis Java 8 ?

- Nouvelle sortie de Java tous les 6 mois

- Notion de LTS

- Java 9 et ses fameux modules

- Changement de licence d'Oracle

Après la sortie de Java 9, 10, 11, et 12 c'est le moment de franchir le cap et de changer de JDK. Nous verrons les nouveautés, les points d'attention.

En clair, tout ce que vous devez savoir pour commencer ou migrer votre projet en Java 11 en douceur.

Lilian BENOIT

May 16, 2019
Tweet

More Decks by Lilian BENOIT

Other Decks in Technology

Transcript

  1. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 1/91 Java 11, 12.... c'est le moment de Java 11, 12.... c'est le moment de remplacer son JDK 8 remplacer son JDK 8 Lilian BENOIT (Mai 2019) @Lilian_Benoit BordeauxJUG 1
  2. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 2/91 Qui suis-je ? Qui suis-je ? ESN Bordelaise BordeauxJUG Leader @Lilian_benoit https://github.com/lilian-benoit 2
  3. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 3/91 JDK 8 est sorti en 2014 JDK 8 est sorti en 2014 Pour information, 1er version du JDK en 1996 3
  4. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 4/91 La donne a changé. La donne a changé. 4
  5. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 5/91 Qu'est ce qui a changé ? Qu'est ce qui a changé ? Java 9 avec le Projet Jigsaw Changement de licence Nouveau calendrier de sortie 5
  6. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 6/91 Nouveau calendrier de sortie Nouveau calendrier de sortie 6 . 1
  7. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 7/91 Précédentes dates de sortie. Précédentes dates de sortie. JDK 1.0 / 23 Janvier 1996 ... J2SE 5 / 30 Septembre 2004 Java SE 6 / 11 Décembre 2006 Java SE 7 / 28 Juillet 2011 Java SE 8 / 18 Mars 2014 6 . 2
  8. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 8/91 Nouvelle cadence de sortie. Nouvelle cadence de sortie. Java SE 9 / 21 Septembre 2017 Java SE 10 / 20 Mars 2018 Java SE 11 / 25 Septembre 2018 Java SE 12 / 19 Mars 2019 Java SE 13 / Septembre 2019 Java SE 14 / Mars 2020 6 . 3
  9. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 9/91 “You can choose the conservative LTS path (blue pill)... or you can choose the aggressive feature release path (red pill)” @mreinhold #FOSDEM” 6 . 4
  10. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 10/91 Versions LTS. Versions LTS. Java SE 8 / 18 Mars 2014 Java SE 11 / 25 Septembre 2018 6 . 5
  11. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 11/91 “You can choose the conservative LTS path (blue pill)... or you can choose the aggressive feature release path (red pill)” @mreinhold #FOSDEM” 7
  12. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 12/91 Changement de licence Changement de licence 8 . 1
  13. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 13/91 Oracle fournit JDK sous 2 formes Oracle fournit JDK sous 2 formes Oracle JDK Oracle OpenJDK 8 . 2
  14. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 14/91 8 . 3
  15. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 15/91 Java n'est plus gratuit ? Java n'est plus gratuit ? 8 . 4
  16. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 16/91 Si, mais le JDK d'Oracle n'est plus le JDK par défaut Si, mais le JDK d'Oracle n'est plus le JDK par défaut Le JDK est développé avec OpenJDK à la base Le JDK est développé avec OpenJDK à la base 8 . 5
  17. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 17/91 Détermination de l'origine Détermination de l'origine Oracle JDK Oracle JDK OpenJDK OpenJDK java -version java 11 2018-09-25 Java(TM) SE Runtime Environment 18.9 (build 11+28) Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11+28, mixed mode) java 11 2018-09-25 OpenJDK Runtime Environment 18.9 (build 11+28) OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode) 8 . 6
  18. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 18/91 Projet Jigsaw ( Java 9 ) Projet Jigsaw ( Java 9 ) 9 . 1
  19. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 19/91 Projet Jigsaw Projet Jigsaw JEP 200 - The Modular JDK JEP 201 - Modular Source code JEP 220 - Modular Runtime Images JEP 260 - Encapsulate Most Internal APIs JEP 261 - Module System 9 . 2
  20. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 20/91 9 . 3
  21. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 21/91 JAVA 9 JAVA 9 (ET +) (ET +) Le classpath n'est pas mort Le classpath n'est pas mort 9 . 4
  22. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 22/91 Que faire ? Que faire ? 10 . 1
  23. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 23/91 Rester en JDK 8 ? Rester en JDK 8 ? Ne pas tenir compte de la sécurité Sous *nix, utiliser les versions fournies par les distributions Payer le support d'un éditeur Construire son propre JDK Utiliser les binaires de AdoptOpenJDK 10 . 2
  24. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 24/91 Passer au JDK 9 ou JDK 10 ? Passer au JDK 9 ou JDK 10 ? Personne ne fournit de support sur ces versions 10 . 3
  25. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 25/91 Passer au JDK 11 ? Passer au JDK 11 ? Reste à choisir son fournisseur de JDK Oracle JDK AdoptOpenJDK Redhat Distribution linux (debian, arch...) Azul Zulu Amazon Corretto IBM basé sur OpenJ9 SAP Liberica 10 . 4
  26. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 26/91 Calendrier du support Calendrier du support Version Date de sortie Fin support Oracle Fin support OpenJDK Java 8 Mars 2014 Janv. 2019 Juin 2023 Java 9 Sept. 2017 Mars 2018 N/A Java 10 Mars 2018 Sept. 2018 N/A Java 11 Sept. 2018 Mars 2019 Octobre 2024 Java 12 Mars 2019 Sept. 2019 N/A 10 . 5
  27. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 27/91 Passons en revue les nouveautés Passons en revue les nouveautés 11
  28. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 28/91 Java 9 Java 9 91 JEP (JDK ENHANCEMENT PROPOSALS) 91 JEP (JDK ENHANCEMENT PROPOSALS) 12 . 1
  29. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 29/91 Nouveauté Java 9 Nouveauté Java 9 JSR 376 - Projet Jigsaw JEP 110 - Client HTTP/2 (incubation) JEP 222 - JShell: the interactive Java REPL JEP 224, 225 - Javadoc (HTML5 et Recherche) JEP 269 - Collection factory methods JEP 277 - Enhanced Deprecation JEP 282 - jlink, Editeur de liens Java JEP 295 - Ahead-of-Time Compilation (Expérimental) 12 . 2
  30. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 30/91 JSR 376 - Projet Jigsaw JSR 376 - Projet Jigsaw 12 . 3
  31. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 31/91 JEP 110 - Client HTTP/2 (incubation) JEP 110 - Client HTTP/2 (incubation) 12 . 4
  32. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 32/91 JEP 222 - JShell: the interactive Java REPL JEP 222 - JShell: the interactive Java REPL 12 . 5
  33. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 33/91 JEP 224, 225 - Javadoc (HTML5 et Recherche) JEP 224, 225 - Javadoc (HTML5 et Recherche) Lien vers la javadoc en local [pendant la présentation] ( ) en ligne ( ) localhost site Oracle 12 . 6
  34. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 34/91 JEP 269 - Collection factory methods JEP 269 - Collection factory methods Avant Après List<String> liste = new ArrayList<String>(); liste.add("J'Adore"); liste.add("le"); liste.add("BordeauxJUG"); liste = Collections.unmodifiableList(liste); List<String> liste = List.of("J'Adore","le","BordeauxJUG"); 12 . 7
  35. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 35/91 JEP 277 - Enhanced Deprecation JEP 277 - Enhanced Deprecation since forRemoval 12 . 8
  36. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 36/91 JEP 282 - jlink, Editeur de liens Java JEP 282 - jlink, Editeur de liens Java 12 . 9
  37. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 37/91 JEP 295 - Ahead-of-Time Compilation JEP 295 - Ahead-of-Time Compilation Expérimental Utiliser par GraalVM 12 . 10
  38. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 38/91 Java 10 Java 10 13 . 1
  39. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 39/91 Nouveauté Java 10 Nouveauté Java 10 JEP 286 - Local-Variable Type Inference JEP 304 - Garbage Collector Interface JEP 307 - Parallel Full GC for G1 JEP 319 - Root Certificates JEP 322 - Time-based Release Versionning 13 . 2
  40. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 40/91 JEP 286 - Local-Variable Type Inference JEP 286 - Local-Variable Type Inference 13 . 3
  41. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 41/91 JEP 304 - Garbage Collector Interface JEP 304 - Garbage Collector Interface 13 . 4
  42. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 42/91 JEP 307 - Parallel Full GC for G1 JEP 307 - Parallel Full GC for G1 13 . 5
  43. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 43/91 JEP 319 - Root Certificates JEP 319 - Root Certificates 13 . 6
  44. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 44/91 JEP 322 - Time-based Release Versionning JEP 322 - Time-based Release Versionning 13 . 7
  45. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 45/91 Java 11 Java 11 14 . 1
  46. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 46/91 Nouveauté Java 11 Nouveauté Java 11 JEP 321 - HTTP Client (Standard) JEP 328 - Java Flight Recorder (JFR) JEP 330 - Launch Single-File Source-Code Programs JEP 332 - Transport Layer Security (TLS) 1.3 JEP 333 - Project ZGC 14 . 2
  47. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 47/91 JEP 321 - HTTP Client (Standard) JEP 321 - HTTP Client (Standard) Avant Après URL url = new URL("http://wwww...."); InputStream is = url.openStream() HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .GET() .uri(new URI("http://wwww....")) .build(); var response = client.send(request, BodyHandlers.ofString()); 14 . 3
  48. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 48/91 JEP 328 - Java Flight Recorder (JFR) JEP 328 - Java Flight Recorder (JFR) 14 . 4
  49. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 49/91 JEP 330 - Launch Single-File Source-Code Programs JEP 330 - Launch Single-File Source-Code Programs 14 . 5
  50. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 50/91 JEP 332 - Transport Layer Security (TLS) 1.3 JEP 332 - Transport Layer Security (TLS) 1.3 Annonce IETF, 10 août 2018 https://www.ietf.org/blog/tls13/ 14 . 6
  51. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 51/91 JEP 333 - Project ZGC (Expérimental) JEP 333 - Project ZGC (Expérimental) Support Linux/x64 (initialement) 14 . 7
  52. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 52/91 Mais une nouvelle version amène... Mais une nouvelle version amène... 15 . 1
  53. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 53/91 Suppression des modules JavaFX Suppression des modules JavaFX 15 . 2
  54. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 54/91 15 . 3
  55. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 55/91 Suppression des modules de déploiement Suppression des modules de déploiement Applet Java Web Start (JWS) 15 . 4
  56. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 56/91 Modules Java EE supprimés Modules Java EE supprimés 15 . 5
  57. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 57/91 15 . 6
  58. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 58/91 Modules Java EE supprimés Modules Java EE supprimés JavaBeans Activation Framework (JAF) CORBA Java Transaction API (JTA) javax.activation javax.activity.* javax.rmi.* javax.rmi.CORBA.* org.omg.* javax.transaction.* 15 . 7
  59. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 59/91 Modules Java EE supprimés Modules Java EE supprimés Java Architecture for XML Binding (JAXB) Java API for XML Web Services (JAX-WS) Commons annotations javax.xml.bind.* javax.jws.* javax.jws.soap.* javax.xml.soap.* javax.xms.ws.* javax.annotation.* 15 . 8
  60. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 60/91 Taille du JDK Taille du JDK Versions JDK Taille (Mo) 1.5 u22 113 Mo 1.6 u45 206 Mo 1.7 u71 288 Mo 1.8 u131 364 Mo 9 545 Mo 10 736 Mo
  61. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 61/91 11 309 Mo 15 . 9
  62. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 62/91 Les enjeux... Les enjeux... 16 . 1
  63. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 63/91 Préparation si migration Préparation si migration 17 . 1
  64. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 64/91 Préparation si migration Préparation si migration Branche spécifique mais courte S'appuyer sur l'intégration continue S'appuyer sur l'outil de construction pour le spécifique Garder une configuration spécifique minimaliste 17 . 2
  65. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 65/91 Branche spécifique mais courte Branche spécifique mais courte 17 . 3
  66. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 66/91 S'appuyer sur l'intégration continue S'appuyer sur l'intégration continue 17 . 4
  67. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 67/91 S'appuyer sur l'outil de construction S'appuyer sur l'outil de construction <profiles> <profile> <id>java-11</id> <activation> <jdk>11</jdk> </activation> <!-- Configuration spécifique Java 11 --> </profile> </profiles> 17 . 5
  68. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 68/91 Garder une configuration spécifique minimaliste Garder une configuration spécifique minimaliste 17 . 6
  69. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 69/91 Prêt... ? Prêt... ? 18
  70. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 70/91 Mettre à jour les outils Mettre à jour les outils 19 . 1
  71. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 71/91 Son poste de développement Son poste de développement Eclipse 4.9 (Photon) RC2 avec Plugin Java 11 Intellij IDEA 2018.2 Netbeans 9.0 19 . 2
  72. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 72/91 Outil de construction Outil de construction Gradle 5.0 Maven 3.5.0 compiler plugin : 3.8.0 surefire et failsafe : 2.22.0 19 . 3
  73. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 73/91 Passons au projet... Passons au projet... 20 . 1
  74. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 74/91 Les librairies Les librairies Vérifier les dépendances (compatible java 11) Surveiller les librairies de manipulation de bytecode 20 . 2
  75. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 75/91 Principales librairies Principales librairies Nom Version Lombok 1.18.4 ASM 7.0 Byte Buddy 1.9.0 cglib 3.2.8 javassist 3.23.1-GA 20 . 3
  76. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 76/91 Illustration avec maven Illustration avec maven <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <dependencies> <dependency> <!-- Utilisation de la version ASM compatible 11 --> <groupId>org.ow2.asm</groupId> <artifactId>asm</artifactId> <version>7.0</version> </dependency> </dependencies> </plugin> 20 . 4
  77. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 77/91 Illustration avec Hibernate Illustration avec Hibernate <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.2.12.Final</version> </dependency> <dependency> <!-- Utilisation de la version javassist compatible 11 --> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.23.1-GA</version> </dependency> 20 . 5
  78. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 78/91 Librairies non compatibles Librairies non compatibles JaCoCo (à la place de Cobertura) Log4j 2 (à la place de Log4j v1.x) et d'autres..... 20 . 6
  79. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 79/91 Que fait-on avec les anciens Que fait-on avec les anciens modules JavaEE ? modules JavaEE ? 20 . 7
  80. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 80/91 Symptomes Symptomes error: package javax.xml.bind.annotation does not exist error: cannot find symbol [ERROR] symbol: class XmlRootElement 20 . 8
  81. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 81/91 Correspondance Correspondance Nom Modules JAF com.sun.activation:javax.activation JTA javax.transaction:javax.transaction-api JAXB com.sun.xml.bind:jaxb-impl org.glassfish.jaxb:jaxb-runtime JAX-WS com.sun.xml.ws:javaws-ri Commons annotation javax.annotation:javax.annotation-api CORBA Pas de correspondance 20 . 9
  82. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 82/91 Utilisation d'anciennes classes Utilisation d'anciennes classes sun.misc.Base64 (remplacé par java.util.Base64) Méthodes peuvent être supprimées (add/removePropertyChangeListener) et d'autres..... 20 . 10
  83. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 83/91 Problème connu : URL Problème connu : URL Classloader Classloader Java 9 apporte un nouveau classloader Plus d'héritage avec URL Classloader 20 . 11
  84. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 84/91 Symptomes Symptomes Exception in thread "main" java.lang.ClassCastException: java.base/jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast to java.base/java.net.URLClassLoader 20 . 12
  85. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 85/91 Solutions Solutions Propriété java.class.path Utiliser les nouvelles classes (JDK 9 et + seulement) System.getProperty("java.class.path") 20 . 13
  86. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 86/91 Problème connu : Illegal Access Problème connu : Illegal Access To Internal APIs To Internal APIs Encapsulation forte introduite en Java 9 20 . 14
  87. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 87/91 Solutions Solutions Utiliser les options de la JVM : --illegal-access --add-exports --add-opens (setAccessible(true) 20 . 15
  88. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 88/91 Outils pour vous aider Outils pour vous aider jdeps plugin maven-jdeps 20 . 16
  89. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 89/91 Conclusion Conclusion 21 . 1
  90. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 90/91 Conclusion Conclusion OpenJDK par défaut Choisir son calendrier Classpath n'est pas mort Profiter des nouveautés Remplacer les modules supprimés 21 . 2
  91. 16/05/2019 Java 11, 12.. c'est le moment de remplacer son

    JDK 8 file:///home/lbenoit/Documents/personnel/conference/2019/2019-java11-remplacer-son-jdk8/index.html?print-pdf 91/91 Questions ? Questions ? 22