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

[Java] Versioning & Nouveautés JDK 12-15

[Java] Versioning & Nouveautés JDK 12-15

Présentation sur le nouveau versioning de Java, le système de distribution et les nouveautés du langage du JDK 12 à 15.

Avatar for Romain Schlick

Romain Schlick

July 01, 2020

More Decks by Romain Schlick

Other Decks in Technology

Transcript

  1. Nouveau système de versioning  Depuis Java 9, des releases

    tous les 6 mois  Des releases avec moins de contenu …  … pour réduire les délais et évoluer plus rapidement  Nouveau pattern: $FEATURE.$INTERIM.$UPDATE.$PATCH  Exemples: 9.0.4, 11.0.5, 11.0.7.10 (version en prod)  Version LTS (long term service) tous les 3 ans (next JDK 17)
  2. Système de distribution  1 seul code source : OpenJDK

    project  Plusieurs distributions (packaging du code source)  OpenJDK (Par Oracle): version free, mais support limité  OracleJDK: version commerciale et payante  AdoptOpenJDK: Depuis 2017, version free avec un bon support et choix de la JVM (hotspot ou OpenJ9)  Autres: Amazon Corretto, Azul Zulu, SapMachine, etc.
  3. Preview features  Plusieurs tours de previews avant de passer

    en standard  Activation via: java --enable-preview  Feature experimental, exemple: ZGarbage
  4. Switch expressions (JDK 12) New switch Old switch  Plus

    besoin de break  Multiple comma-separated labels  Return value via arrow ou yield
  5. Text blocks (JDK 13)  Les text blocks sont des

    String  Commence par 3 doubles quotes  Simplifie l’écriture de textes longs comme html, json, sql  Plus besoin d’ajouter des escapes  Plus d’exemples : https://www.baeldung.com/java-text-blocks
  6. Records (JDK 14) 1/2 • Un champ privé et final

    par élément définis dans l’entête • Un constructeur avec tous les champs • Un accesseur public par champ (possibilité d’override) • Méthodes toString, equals, hashCode (possibilité d’override) • Record est une classe finale non extensible • Peut implémenter des interfaces et avoir des annotations Use cases: • Remplacement de Java Bean et limiter l’usage de frameworks du type Lombok ou Immutables. • En tant que POJO exploité dans des frameworks tel que Jackson ou Hibernate. • En tant que type intermédiaire lors d’opération sur les streams • Associés à des sealed classes • retour multi valeurs
  7. Pattern matching instance of (JDK 14) Version classique Nouvelle version

     Instanceof permet maintenant de tester le type et d’assigner directement dans une variable  Plus d’infos sur le pattern matching: https://cr.openjdk.java.net/~briangoetz/amber/p attern-match.html
  8. Helpful NullpointerException (JDK 14)  Indique précisément quelle variable est

    nulle  Activable via: -XX:+ShowCodeDetailsInExceptionMessages
  9. Sealed classes (JDK 15)  Une classe scellée est une

    classe ou une interface qui restreint les autres classes ou interfaces qui peuvent l'étendre  La classe sellée et ses sous-classes doivent appartenir au même module ou même package  Chaque sous-classe doit étendre directement la classe sellée  Plus d’infos: https://openjdk.java.net/jeps/360 On peut utiliser un switch avec pattern matching :