SlideShare une entreprise Scribd logo
Versioning &
Nouveautés JDK 12-15
Par Romain Schlick
@r_schlick
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)
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.
Preview features
 Plusieurs tours de previews avant de passer en standard
 Activation via: java --enable-preview
 Feature experimental, exemple: ZGarbage
Jshell console (jdk 9)
Switch expressions (JDK 12)
New switch
Old switch
 Plus besoin de break
 Multiple comma-separated labels
 Return value via arrow ou yield
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
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
Records (JDK 14) 2/2
Retour multi-valeurs: Clés composites:
Type intermédiaire pour utilisation dans
des Streams :
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
Helpful NullpointerException (JDK 14)
 Indique précisément quelle variable est nulle
 Activable via: -XX:+ShowCodeDetailsInExceptionMessages
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 :
Sealed classes & Records
 On peut combiner sealed classes et record classes :

Contenu connexe

PPTX
Introduction Kotlin
DOCX
Introduction to Rust in Production - Servo Mozilla project (Talk)
PDF
Industrialisation PHP - Canal+
PPTX
Introduction to Rust in Production - Servo Mozilla project (Slides)
PDF
Vert.x 3
PPTX
Programmation réactive avec Spring 5 et Reactor
PDF
Paris Container Day 2016 : De la construction au déploiement d’applications...
PDF
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...
Introduction Kotlin
Introduction to Rust in Production - Servo Mozilla project (Talk)
Industrialisation PHP - Canal+
Introduction to Rust in Production - Servo Mozilla project (Slides)
Vert.x 3
Programmation réactive avec Spring 5 et Reactor
Paris Container Day 2016 : De la construction au déploiement d’applications...
Paris Container Day 2016 : Conteneurisation de l’usine logicielle (Retour d'e...

Tendances (20)

PPTX
Les containers docker vu par un chef cuisinier et un mécanicien
PPTX
WebSocket avec Java EE 7
PDF
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
PDF
JavaScript dans l'usine logicielle
ODP
Présentation de nodejs
 
PPTX
2014.12.11 - TECH CONF #3 - Présentation Node.js
PDF
Programmation concurrente en Java
PDF
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
PDF
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
PDF
Js, quoi de neuf ? - strasbourg js - septembre 2016
PDF
Universitélang scala tools
PPTX
Présentation de Node.js
PDF
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
PDF
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
PPT
Upload - Download
PDF
Maven c'est bien, SBT c'est mieux
PDF
NodeJS for Mobile App
PDF
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
PPTX
Java 11 to 17 : What's new !?
PPTX
Meetup Docker Lyon janvier 2018 - Docker 101
Les containers docker vu par un chef cuisinier et un mécanicien
WebSocket avec Java EE 7
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
JavaScript dans l'usine logicielle
Présentation de nodejs
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
Programmation concurrente en Java
Paris Container Day 2016 : Choisissez votre style avec docker & Amazon Web Se...
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Js, quoi de neuf ? - strasbourg js - septembre 2016
Universitélang scala tools
Présentation de Node.js
Les ZAPeroTech #4 : REX Oracle Code One 2019 sur l'éco-système Java
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Upload - Download
Maven c'est bien, SBT c'est mieux
NodeJS for Mobile App
Paris Container Day 2016 : Cloudunit v2 (Treeptik)
Java 11 to 17 : What's new !?
Meetup Docker Lyon janvier 2018 - Docker 101
Publicité

Similaire à [Java] Versioning & Nouveautés JDK 12-15 (20)

PDF
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
PDF
Nouveautés Java 9-10-11
PDF
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
PPTX
Back to the future of java (from 8 to 11 and beyond)
PDF
JAVA Chapitre1
PDF
Devoxx 2018 Après Java 8, Java 9 et 10
PDF
Lyon JUG 2018 - Java le changement c'est maintenant
PDF
Apres java 8, java 9 et 10 - BreizhCamp 2018
PDF
Voxxeddays lux 2018 apres java 8, java 9 et 10
PPTX
Une introduction à Javascript et ECMAScript 6
PPTX
Nouveautés de java 8
PDF
Du JDK 21 au JDK 25 - Java Days Paris - 5 juin 2025
PDF
Java 9 modulo les modules devoxx fr 2017
PDF
Programmation Java
PDF
Les nouveautés de Java 22 - Oracle Dev Day mai 2024.pdf
PDF
Stratégie OpenJDK
PDF
Nantes jug 2018 - Java le changement c'est maintenant
PDF
Chap 02 poo en java
PDF
Les nouveautés de Java 22 - Lorraine JUG avril 2024.pdf
PPTX
Java version 11 - les 9 nouveautes
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
Nouveautés Java 9-10-11
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Back to the future of java (from 8 to 11 and beyond)
JAVA Chapitre1
Devoxx 2018 Après Java 8, Java 9 et 10
Lyon JUG 2018 - Java le changement c'est maintenant
Apres java 8, java 9 et 10 - BreizhCamp 2018
Voxxeddays lux 2018 apres java 8, java 9 et 10
Une introduction à Javascript et ECMAScript 6
Nouveautés de java 8
Du JDK 21 au JDK 25 - Java Days Paris - 5 juin 2025
Java 9 modulo les modules devoxx fr 2017
Programmation Java
Les nouveautés de Java 22 - Oracle Dev Day mai 2024.pdf
Stratégie OpenJDK
Nantes jug 2018 - Java le changement c'est maintenant
Chap 02 poo en java
Les nouveautés de Java 22 - Lorraine JUG avril 2024.pdf
Java version 11 - les 9 nouveautes
Publicité

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

  • 1. Versioning & Nouveautés JDK 12-15 Par Romain Schlick @r_schlick
  • 2. 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)
  • 3. 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.
  • 4. Preview features  Plusieurs tours de previews avant de passer en standard  Activation via: java --enable-preview  Feature experimental, exemple: ZGarbage
  • 6. Switch expressions (JDK 12) New switch Old switch  Plus besoin de break  Multiple comma-separated labels  Return value via arrow ou yield
  • 7. 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
  • 8. 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
  • 9. Records (JDK 14) 2/2 Retour multi-valeurs: Clés composites: Type intermédiaire pour utilisation dans des Streams :
  • 10. 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
  • 11. Helpful NullpointerException (JDK 14)  Indique précisément quelle variable est nulle  Activable via: -XX:+ShowCodeDetailsInExceptionMessages
  • 12. 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 :
  • 13. Sealed classes & Records  On peut combiner sealed classes et record classes :