De la programmation fonctionnelle introduite par les lambdas aux virtual threads en passant par les records, le pattern matching, les nouveaux types de collections, les mécanismes de concurrence structurée ou la génération d’images natives avec GraalVM, les apports sont nombreux et parfois sous-exploités en entreprise.
Cette formation propose une vue d’ensemble actualisée et structurée des principales évolutions du langage, de l’écosystème standard (SE) et de la machine virtuelle. Chaque nouveauté est contextualisée, mise en perspective, puis expérimentée à travers l'adaptation progressive d’un projet applicatif fil rouge.
Objectifs de la formation
Explorer les évolutions majeures du langage Java, de son écosystème et de la machine virtuelle pour actualiser ses pratiques de développement.Clientèle visée
Développeurs et développeuses Java, architectes logiciels, intervenant·es techniques impliqué·es dans la maintenance, l’évolution ou la modernisation d’applications Java existantes (Java 8 ou antérieur)Préalables
Ce cours demande une connaissance solide des bases de la programmation Java (principes de la programmation orientée objet, types génériques, annotations, expressions lambda), une habitude de travailler avec Eclipse ou IntelliJ.Formateurs
Gains pour les participants
Mettre en œuvre a programmation fonctionnelle avec les expressions lambda;
Représenter des données avec les records;
Écrire une logique conditionnelle avancée avec le pattern matching;
Exécuter les opérations I/O ne manière non bloquantes avec les virtual threads;
Appliquer le parallélisme avec les StructuredTask;
Livrer une application native avec GraalVM.
Architecture de la formation
Cette formation combine exemples pratiques et évolutions théoriques pour passer en revue les différentes strates de la plateforme Java (langage, API, JVM). Chaque module s’appuie sur un projet applicatif enrichi au fil des étapes, pour expérimenter les apports récents du langage dans des cas d’usage concrets.
Introduction
Ce module fournit les repères nécessaires pour suivre l’évolution de Java à travers ses versions. Il présente le fonctionnement du cycle de release, les JEP (propositions d’amélioration du JDK) et les projets phares de l’OpenJDK.
- Le cycle de release des versions de Java.
- Présentation des JEP (JDK Enhancement Proposal).
- Présentation des projets Amber, Panama, Loom, Leyden, Valhalla.
- Frontières entre langage, API et JVM
Java 8 : les fondations du Java moderne
Java 8 introduit la programmation fonctionnelle (lambdas, Stream API), une nouvelle API date/temps, ainsi que des outils devenus standards (Optional, CompletableFuture). Ce module revient sur ces piliers souvent sous-utilisés ou mal exploités.
- Les expressions lambda et leur traitement par la JVM (invoke dynamic).
- La représentation du temps avec les classes du package java.time.
- L'application du paradigme Map Reduce avec les Stream.
- La classe Optional pour limiter les NullPointerException.
- Le parallélisme avec CompletableFuture.
Mise en pratique: intégration des Optional, Stream et des expressions lambda dans le projet fil rouge, analyse du bytecode et du principe invoke dynamic..
API Java SE : évolutions des types de base
Ce module explore les améliorations progressives apportées à l’API standard : Factory Methods, Collections, String, Stream, Optional... L’objectif est de moderniser le code existant avec des pratiques plus concises et robustes.
- Les factory methods pour une instanciation plus concise.
- De nouvelles méthodes utilitaires dans la classe Objects.
- Les sequenced collections: retro-conception de l'API java.util.Collection.
- Les nouvelles méthodes de la classe String.
- Les nouvelles méthodes de l'interface Stream, les nouveaux Collector.
- Les nouvelles méthodes de la classe Optional.
- StableValue pour renforcer l'immutabilité.
Mise en pratique: refonte d’un traitement applicatif avec les nouvelles méthodes standard.
Project Amber: la manipulation de données plus expressive
Project Amber introduit plusieurs évolutions syntaxiques majeures, permettant d’alléger le code et de le rendre plus lisible : records, switch enrichi, pattern matching, text blocks…
- Les nouvelles expressions switch.
- Le pattern matching pour le traitement de données hétérogènes.
- Les records pour la représentation des données.
- Les sealed classes et sealed interfaces.
- Les text blocks.
Mise en pratique : manipulation de données avec les records, écriture de branchements complexes avec le pattern matching.
Project Loom: l'exécution non bloquante des opérations I/O
Avec Loom, Java propose une nouvelle approche de la concurrence fondée sur les virtual threads. Ce module illustre leurs usages, la gestion de contexte (scoped values) et les traitements structurés asynchrones.
- Les virtual threads pour gagner en scalabilité.
- Les scoped values comme alternative aux ThreadLocal.
- Les StrucuturedTaskScope pour un code asynchrone sans callbacks.
Mise en pratique : activation des virtual thread sur une application web, écriture de traitements de données parallélisés.
Les évolutions de la JVM
Ce module clôt la formation en présentant les dernières innovations de la JVM Java pour mieux s’adapter aux environnements récents : conteneurs, compilation en natif, collecte mémoire optimisée…
- L'adaptation de la JVM aux conteneurs.
- GraalVM pour la livraison d'application natives.
- Les garbages collectors G1 et ZGC pour une gestion optimisée de la mémoire.
Mise en pratique: génération d’une application native avec GraalVM et livraison conteneurisée
Détails pédagogiques
Méthode pédagogique
• Explication, pour chaque concept, du problème qu'il prétend résoudre. • Mise en pratique d'un concept immédiatement après qu'il a été présenté. • Validation de chaque étape par exécution de tests unitaires. • Exercice « fil rouge » pour obtenir en fin de cours une application complète. • QCM en fin de chapitre pour s'assurer de l'acquisition des connaissances.
Type de cours
Formation en entreprise
Toutes nos formations peuvent être offertes en entreprise et personnalisées selon vos besoins. Pour plus d'information, nous vous invitons à communiquer avec nous ou à remplir une demande de soumission en ligne.
Demander une soumissionFormation en entreprise
Toutes nos formations peuvent être offertes en entreprise et personnalisées selon vos besoins. Pour plus d'information, nous vous invitons à communiquer avec nous ou à remplir une demande de soumission en ligne.
Demander une soumission