Java avancé : concurrence, JVM, tests et performance
Maîtriser les aspects avancés de Java : concurrence moderne, mémoire de la JVM, flux, tests et optimisation.
- Durée
- 28 h · 4 jours
- Niveau
- Confirmé
- Format
- Présentiel · Distanciel · Mixte
- Effectif max.
- 12 participants
Présentation
Ce programme s’adresse aux développeurs Java qui veulent aller au-delà des bases : programmation concurrente moderne (exécuteurs, tâches asynchrones, threads virtuels), chargement des classes, mémoire et ramasse-miettes, apports récents du langage, flux, tests avec JUnit et démarche d’optimisation avec les outils de profilage. L’objectif est d’écrire des applications plus fiables et plus rapides.
À qui s’adresse ce programme
- Développeurs Java confirmés
- Architectes et leads techniques
- Équipes de performance et d’exploitation
Prérequis
- Pratique de Java (objet, collections, exceptions)
Objectifs pédagogiques
- Écrire du code concurrent sûr
- Utiliser Fork/Join, CompletableFuture et threads virtuels
- Comprendre chargement des classes, bytecode et mémoire
- Choisir et régler un ramasse-miettes
- Exploiter les fonctionnalités récentes du langage
- Tester avec JUnit 5 et le TDD
- Profiler et optimiser
Programme détaillé
8 modules · 28 h · 4 jours
Programmation concurrente
- Threads et synchronisation
- Interblocages et conditions de course
- Exécuteurs, Callable et Future
- Valeurs scopées
- Bonnes pratiques de concurrence
Diagnostiquer et corriger des erreurs de concurrence.
Concurrence avancée
- Fork/Join et concurrence structurée
- CompletableFuture
- Verrous, sémaphores et barrières
- Réflexion
- Threads virtuels
La JVM sous le capot
- Chargeurs de classes
- Bytecode
- Organisation de la mémoire
- Ramasse-miettes modernes
- Paramétrage de la JVM
Langage moderne
- Expressions switch
- Filtrage par motif
- Records
- Classes scellées
- Migration vers des versions récentes
Remanier un code ancien avec les fonctionnalités récentes.
Outils du JDK et API récentes
- JShell
- ProcessHandle
- Client HTTP
- Modules
- Outils en ligne de commande
Tests et TDD
- Démarche de développement piloté par les tests
- JUnit 5 en profondeur
- Doublures et mocks
- Tests paramétrés
- Couverture
Développer une fonctionnalité en TDD.
Lambdas, flux et modularité
- Expressions lambda
- Streams et flux parallèles
- Collecteurs
- Modules Java
- Pièges de performance
Démarche d’optimisation
- Méthode : mesurer avant d’optimiser
- Profilage avec JFR, VisualVM, MAT
- Tests de charge
- Fuites mémoire et réglage du ramasse-miettes
- Plan d’amélioration
Profiler une application et appliquer trois optimisations.
Outils et technologies
Méthodes pédagogiques
- Alternance d’exposés courts et de travaux pratiques
- Démonstrations en direct par le formateur
- Projet fil rouge construit au fil des modules
- Corrections collectives et échanges sur les bonnes pratiques
Évaluation
- Exercices pratiques corrigés à chaque module
- Mini-projet réalisé en fin de formation
- Quiz de validation des acquis
Matériel requis
- Un ordinateur avec une connexion internet
- JDK récent, IDE Java et outils de profilage
Ressources fournies
- Support de cours et dépôt d’exercices corrigés
Débouchés
- Une application plus rapide et plus stable
- Une méthode d’optimisation outillée
- Des tests automatisés fiables
Les cours vidéo associés
Mes cours en vidéo qui accompagnent ce programme : pour préparer la formation ou réviser ensuite. Accès gratuit avec un compte.

