Les versions Java 11, Java 17 et Java 21 sont des versions LTS (Long Term Support), comme Java 8 et Java 11, utilisables en production, contrairement aux versions 9, 10, 12, 18, 19, 20 …destinées aux développeurs pour leur permettre de se familiariser avec des nouveautés dont certaines seront retenues dans les versions LTS suivantes.
Java 11, sorti en septembre 2018, comporte les nouveautés de Java 9 à Java 11, bouleverse les habitudes par l'aspect commercial lié aux licences Oracle et propose de rendre modulaire les nouvelles applications.
Java 17 et java 21, sortis respectivement en septembre 2021 et en septembre 2023, consolident toutes les nouveautés depuis java 11, notamment les records et les classes scellées et les threads virtuels et les record patterns.
- Nouveautés essentielles de Java 11
- Les licences Oracle
- Nouvelle gestion des versions de Java
- Commercialisation du JDK 11 par Oracle
- Conséquences du Long Term Support d'Oracle
- JDK11 d'Oracle vs Open JDK 11
- Les modules
- Notion de module
- Format du descripteur de module
- Utilisation des modules
- Gestion des dépendances entre modules
- Intérêt du module-path
- Notions de modules anonymes et modules automatiques
- Mise en œuvre de services
- Modularité du JDK
- Nouvelle organisation de la documentation des API Java
- Problématique des migrations
- L’outil jdeps
- Fichiers Jar
- Fichiers jar modulaires
- Fichiers jar multi-versions
- Intérêt du format jmod
- Rôle du linker Java Jlink dans le déploiement d'applications Java
- Autres nouveautés dans Java 11
- Exécution de scripts Java avec JShell
- Mise à jour de l'API Process
- Méthodes privées dans les interfaces
- Méthodes de fabrique pour les collections
- Nouvelles méthodes dans l'API Stream
- Amélioration de l'instruction try-with-resource
- Annotation @SafeVarargs
- Programmation réactive avec l'API Flow
- Déduction du type des variables locales avec var
- Nouvelles méthodes de fabrique pour les collections
- Nouvelles méthodes dans la classe Collectors
- Nouvelle méthode dans la classe Optional
- Nouvelles méthodes dans la classe Objects
- Support du protocole HTTP/2 et intégration des WebSockets
- Exécution directe d'un fichier source
- Nouveautés principales de Java 17
- Évolutions dans la syntaxe
- Pattern matching avec instanceof
- Nouvelle syntaxe pour le switch
- Les blocs de texte
- Les records
- Les classes et interfaces scellées
- Autres nouveautés dans Java 17
- L’API Vector
- L’API Foreign Memory Access
- Nouvelle implémentation de ServerSocket
- Sérialisation avec @Serial
- Message lié au NullPointerException
- L’outil jpackage
- Nouveautés essentielles de Java 21
- JVM
- Ramasse-miettes générationnel ZGC
- Langage
- Le Pattern Matching pour switch
- Les Record Patterns
- Librairies
- Les threads virtuels
- Les collections de type séquence
- L’API d’encapsulation des clés de cryptage
- Le Serveur web intégré
- Réflexion avec les Method Handles
- Fonctionnalités en prévision (Preview features)
- Modèles de chaînes (String templates)
- Classes anonymes et méthodes d’instance main (unnamed classes and instance main methods)
- Patterns et variables anonymes (unnamed patterns and variables)
- Valeurs étendues (scoped values)
- Concurrence structurée (structured concurrency)
- API de gestion mémoire et de fonctions étrangères (Foreign function & memory API)
- API Vector (Vector API)