Développement logiciel
Modernisation des applications Java existantes
Formation de migration et de refactoring pour les équipes qui portent une application Java plus ancienne que le runtime sur lequel elle devrait tourner. Le programme couvre la mise à niveau de Java 8 vers 21, le passage de javax à jakarta, la modernisation du build et des dépendances, et le refactoring incrémental.
Aperçu
Un apprentissage pratique pour le transfert en situation de travail.
Le Java hérité tombe rarement en panne franche. Il s'enlise : la version du framework bloque un correctif de sécurité, le build ne fonctionne que sur une machine, personne ne touche au module de paiement parce que des choses sans rapport cassent, et chaque tentative de migration est abandonnée en milieu de trimestre. Cette formation fournit une séquence qui tient à l'usage. Les participants inventorient le système et hiérarchisent ses risques, écrivent des tests de caractérisation, modernisent le build et l'arbre de dépendances, réalisent la migration vers jakarta, puis extraient les modules un à un avec le patron strangler-fig.
Prérequis
Expérience de maintenance d'une application Java en production, avec familiarité de Maven ou Gradle et d'un serveur d'applications ou conteneur de servlets.
Objectifs
- Évaluer une base de code Java héritée sous l'angle du risque de mise à niveau, de la dette de dépendances et de l'incertitude comportementale.
- Planifier une migration par étapes de Java 8 vers Java 17 ou 21 laissant un système fonctionnel à chaque étape.
- Exécuter le changement de namespace javax vers jakarta dans le code, la configuration et les dépendances.
- Moderniser le build, l'arbre de dépendances et la reproductibilité d'un projet hérité.
- Rédiger des tests de caractérisation figeant le comportement existant avant tout refactoring.
- Appliquer le patron strangler-fig pour remplacer des modules sans lancer un programme de réécriture.
Public cible
- Équipes d'ingénierie maintenant des applications Java antérieures à Java 11
- Responsables techniques planifiant une montée de version de runtime ou de framework
- Architectes concevant une sortie progressive d'un monolithe de longue date
- Développeurs chargés des correctifs de sécurité et des mises à jour de dépendances
- Responsables de livraison planifiant la modernisation en parallèle des engagements fonctionnels
- Consultants et prestataires reprenant en charge un système Java qu'ils ne connaissent pas
Programme
Une structure claire pour le parcours d'apprentissage.
Programme
Les points du programme sont regroupés dans un seul bloc au lieu de créer un module par ligne.
Module 1 : Évaluer le système dont vous avez hérité
Constituer un inventaire des modules, dépendances, runtimes et points d'entrée
Repérer versions non supportées, vulnérabilités connues et bibliothèques abandonnées
Cartographier les zones du système que personne ne touche et en comprendre la raison
Produire un backlog de modernisation ordonné par risque, avec l'apport du métier
Module 2 : Figer le comportement avant de le modifier
Tests de caractérisation consignant ce que le système fait réellement, non ce qu'il devrait faire
Trouver des coutures dans du code écrit sans aucune injection de dépendances
Tests d'approbation pour des sorties trop volumineuses à vérifier champ par champ
Établir une référence de temps de build, de temps de test et de comportement d'exécution
Module 3 : Le chemin de mise à niveau de Java 8 vers 21
API supprimées, internes encapsulés et passage à l'encapsulation forte
Effets du système de modules sur les applications en class-path et l'accès par réflexion
Apports du langage et des bibliothèques qu'il vaut la peine d'adopter pendant la migration
Échelonner la migration pour que l'application compile et se livre à chaque étape
Module 4 : La migration de namespace javax vers jakarta
Portée du changement de namespace : code, descripteurs et sources générées
Aligner les versions des API servlet, persistance et validation sur toute la pile
Outils de transformation ou migration manuelle : quand choisir l'un ou l'autre
Bibliothèques tierces jamais migrées et options qui restent disponibles
Module 5 : Build, dépendances et reproductibilité
Démêler un arbre de dépendances chargé de conflits et de classes dupliquées
Modernisation Maven ou Gradle : plugins, toolchains et versions figées
Builds reproductibles et suppression de la configuration propre à une machine
Mettre en place l'intégration continue pour un projet qui ne se compilait qu'en local
Module 6 : Changement d'architecture incrémental
Routage strangler-fig entre l'ancienne et la nouvelle implémentation
Extraire un module avec ses données et définir la nouvelle frontière
Couches anticorruption entre les parties modernisées et intouchées du système
Séquencer les travaux pour que la livraison ne s'arrête jamais au profit d'une réécriture
Supports fournis
- Manuel de formation, exemples de code commentés et notes de référence
- Environnement de laboratoire et dépôts de démarrage
- Exercices, check-lists et modèles de code réutilisables
- Certificat de participation 4D
- Accompagnement technique après la formation
Options de formation
Les programmes peuvent être organisés en entreprise, en ligne ou dans un format hybride selon le calendrier, la localisation et les objectifs de vos équipes. Lorsqu'un certificat ou un examen externe est inclus, les règles et frais de certification restent soumis aux politiques de l'organisme certificateur, tandis que 4D assure la formation et l'accompagnement à la préparation.
Pourquoi choisir 4D
4D aborde la modernisation comme un problème de livraison et non comme une liste de souhaits techniques. Les formateurs aident les participants à ordonner les travaux par risque, à entourer de tests de caractérisation les modules que tout le monde évite et à répéter la migration jakarta sur une copie d'une application réelle, si bien que le plan issu de l'atelier comporte déjà séquence, dates et responsables désignés.
Formations liées
Fondamentaux de la programmation Python
Une introduction pratique à Python pour les ingénieurs et analystes qui ont besoin de code opérationnel plutôt que d'extraits de tutoriel. Les participants acquièrent de l'aisance avec les types, les collections, les fonctions, les fichiers et la gestion des erreurs, puis construisent un programme complet.
View coursePython intermédiaire et pratiques de code propre
Conçue pour les développeurs dont le code Python fonctionne mais résiste au changement. Le programme couvre dataclasses, générateurs, décorateurs, gestionnaires de contexte et annotations de types, puis applique les refactorings qui transforment un module interminable en unités testées contrôlées par black, ruff et mypy.
View courseAutomatisation et scripting Python pour les tâches métier
Destinée aux équipes qui perdent chaque semaine des heures en manipulations de fichiers, de tableurs et de rapports. Les participants automatisent ces tâches avec Python : traitement de fichiers en lot, Excel et CSV, appels d'API REST, alertes par e-mail et tâches planifiées qui signalent clairement toute défaillance.
View course