Module 1 — Fondamentaux Java et écosystème JVM
- Comprendre l’architecture JVM, JRE, JDK et le bytecode
- Maîtriser la syntaxe Java moderne (Java 17+, records, sealed classes, pattern matching)
- Utiliser les outils de build (Maven, Gradle) et la gestion des dépendances
- Configurer un IDE professionnel (IntelliJ IDEA, Eclipse, VS Code)
- Connaître l’écosystème : LTS releases, OpenJDK, GraalVM, interopérabilité Kotlin/Scala
Module 2 — Programmation orientée objet en Java
- Appliquer les principes POO (encapsulation, héritage, polymorphisme, abstraction)
- Utiliser les interfaces, classes abstraites et les méthodes par défaut
- Appliquer les design patterns essentiels (Factory, Singleton, Observer, Strategy)
- Maîtriser les generics et la programmation type-safe
Module 3 — Collections, streams et programmation fonctionnelle
- Maîtriser les collections (List, Set, Map) et leurs implémentations
- Exploiter les Streams API pour les traitements de données fonctionnels
- Utiliser les lambdas et method references
- Gérer la nullabilité avec Optional
- Comprendre les Collectors et les opérations terminales
- Identifier les pièges de performance (autoboxing, parallel streams)
Module 4 — Gestion des exceptions, I/O et concurrence
- Gérer les exceptions checked et unchecked (try-with-resources, multi-catch)
- Travailler avec les I/O modernes (NIO.2, Path, Files, FileChannel)
- Comprendre le modèle de threads Java et les primitives de concurrence (synchronized, Lock, volatile)
- Utiliser ExecutorService, CompletableFuture et les Virtual Threads (Project Loom)
- Découvrir le parallel computing avec Fork/Join et parallelStream
Module 5 — Spring Boot : développer une API REST production-ready
- Initialiser un projet Spring Boot avec Spring Initializr
- Construire un controller REST, services et repositories (Spring Data JPA)
- Sécuriser une API avec Spring Security (JWT, OAuth2)
- Documenter l’API avec Springdoc OpenAPI
Module 6 — Tests automatisés et qualité de code
- Écrire des tests unitaires avec JUnit 5 et Mockito
- Tester une API Spring Boot avec MockMvc et @SpringBootTest
- Intégrer Testcontainers pour les tests d’intégration (PostgreSQL, Redis, Kafka)
- Mesurer la couverture de code (JaCoCo) et l’analyser statiquement (SonarQube, SpotBugs)
- Automatiser la qualité dans la CI (GitHub Actions, GitLab CI, Jenkins)
- Adopter le TDD/BDD avec Cucumber
Module 7 — Performance, monitoring et déploiement
- Profiler une application Java (JFR, Async Profiler, VisualVM)
- Tuner la JVM (heap, GC G1/ZGC, métriques de performance)
- Containeriser une application Java (Docker, JLink, GraalVM native-image)
- Déployer sur Kubernetes ou un PaaS (Heroku, Cloud Foundry, AWS)
- Monitorer en production (Micrometer, Prometheus, Grafana, Sentry)






