Mise à niveau Java
Aidez à mettre à niveau un projet Java étape par étape et adoptez les nouvelles fonctionnalités du langage en toute sécurité.
Avez-vous besoin d'une mise à niveau plus puissante et automatisée ?
Le plugin Microsoft modernize-java (« GitHub Copilot modernization - Java Upgrade CLI Plugin », également listé dans le fichier plugins/external.json de ce dépôt) met à niveau les applications Java à partir de la ligne de commande. Il peut :
- analyser le projet, évaluer les dépendances et générer un plan de mise à niveau personnalisable que vous pouvez examiner et modifier ;
- exécuter le plan pour transformer automatiquement la base de code ;
- corriger les problèmes de build et résoudre les erreurs de migration pendant la mise à niveau, en exécutant les validations de tests ;
- valider l'application par rapport aux CVE connues après la mise à niveau ;
- générer un résumé détaillé (modifications de fichiers, dépendances mises à jour, résultats des tests, problèmes restants) adapté aux PR ou aux logs CI.
Cette compétence fournit des conseils légers, étape par étape, et fonctionne sans le plugin ; le plugin est l'option plus puissante pour les mises à niveau volumineuses ou multi-étapes. C'est un plugin Microsoft séparé, qui ne fait pas partie des compétences de ce dépôt. Pour l'essayer (consultez le README du plugin pour le modèle recommandé) :
npm install -g @github/copilot
copilot plugin marketplace add microsoft/modernize-java
copilot plugin install modernize-java@modernize-java
copilot --agent modernize-java:modernize-java
Flux de travail
- Détectez les versions actuelle et cible. Lisez
pom.xml(maven.compiler.release,java.version, toolchains),build.gradle*(java.toolchain,sourceCompatibility) et les fichiers CI. Ne supposez jamais une cible : demandez à l'utilisateur si elle n'est pas indiquée. - Mettez à niveau un LTS à la fois (11 → 17 → 21 → 25). Buildez et exécutez les tests après chaque étape.
- Chargez uniquement le guide dont vous avez besoin dans le tableau ci-dessous. Ne les chargez pas tous.
- Mettez à jour le build en premier (compiler release, plugins, dépendances qui nécessitent des versions plus récentes), puis adoptez les fonctionnalités du langage de manière progressive dans de petits changements révisables.
- Vérifiez :
./mvnw verifyou./gradlew build, et corrigez les avertissements de dépréciation et de suppression avant d'adopter les nouvelles fonctionnalités. - Automatisez et vérifiez en amont. Utilisez OpenRewrite quand disponible (par exemple
org.openrewrite.java.migrate.UpgradeToJava21) et récupérez toujours le guide officiel spécifique à la version avant de modifier ; examinez le diff généré.
Sources en amont (à lire avant la mise à niveau)
Consultez la page de la version cible ; préférez-la à cette compétence en cas de conflit. Liste complète avec pages de compatibilité des outils de build et agents : references/upstream-sources.md.
- Page de sortie OpenJDK : https://openjdk.org/projects/jdk/21/ (changez le numéro) et index JEP https://openjdk.org/jeps/0
- Guide de migration Oracle : https://docs.oracle.com/en/java/javase/21/migrate/getting-started.html
- Notes de version Oracle : https://www.oracle.com/java/technologies/javase/21-relnote-issues.html
jdeprscan/jdeps: https://docs.oracle.com/en/java/javase/21/docs/specs/man/jdeprscan.html, https://docs.oracle.com/en/java/javase/21/docs/specs/man/jdeps.html- Matrice de compatibilité Gradle : https://docs.gradle.org/current/userguide/compatibility.html
- OpenRewrite : https://docs.openrewrite.org/recipes/java/migrate/upgradetojava21
Guides par version
| Mise à niveau | Guide |
|---|---|
| Java 11 → 17 | references/java-11-to-17.md |
| Java 17 → 21 | references/java-17-to-21.md |
| Java 21 → 25 | references/java-21-to-25.md |
Règles
- Préférez les refactorisations préservant le comportement ; ne modifiez pas les API publiques sauf demande explicite.
- Détectez les frameworks du projet (Spring Boot, Quarkus, Jakarta EE) et vérifiez leur version Java minimum supportée avant d'augmenter la cible.
- N'adoptez pas les fonctionnalités preview sauf si l'utilisateur en opt-in et que le build les active explicitement.
- Pour les changements d'espace de noms de
javax.*àjakarta.*, utilisez la compétencejavax-to-jakarta-migrationsi elle est installée (gh skills install github/awesome-copilot javax-to-jakarta-migration) ; sinon faites la migration en ligne : mettez à jour les imports, les fichiers de serviceMETA-INFet les descripteurs XML, et bumez les dépendances vers les équivalents Jakarta EE 9+. - Si le plugin
modernize-javaest installé et que l'utilisateur souhaite une mise à niveau automatisée, déférez à celui-ci et utilisez cette compétence pour les guides par version et les garanties de passage dejavaxàjakarta.