

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Mise à niveau des versions de Java avec Amazon Q Developer
<a name="code-transformation"></a>

Amazon Q Developer peut mettre à niveau vos applications Java vers de nouvelles versions de langage dans l’environnement de développement intégré (IDE). Les modifications qu'Amazon Q peut apporter pour mettre à niveau votre code incluent la mise à jour des composants de code obsolètes APIs ainsi que la mise à niveau des bibliothèques, des frameworks et des autres dépendances de votre code. 

Pour transformer votre code, Amazon Q le crée d’abord dans la version de langage source, puis vérifie qu’il contient les informations nécessaires pour effectuer la transformation. Une fois que votre code a été transformé avec succès, vous vérifiez et acceptez les modifications dans votre IDE. Dans la mesure où Amazon Q Developer effectue les modifications minimales nécessaires pour rendre votre code mis à niveau compatible avec le JDK cible, une transformation supplémentaire est nécessaire pour mettre à niveau les bibliothèques et les dépendances de votre projet. Pour plus d’informations sur la manière dont Amazon Q transforme votre code, consultez [Comment Amazon Q Developer transforme le code pour les mises à niveau du langage Java](how-CT-works.md).

**Topics**
+ [Mises à niveau Java prises en charge et IDEs](#supported-languages-IDEs)
+ [Étape 1 : Prérequis](#java-upgrade-prerequisites)
+ [Étape 2 : configuration de votre projet Maven](#configure-project)
+ [Étape 3 : création d’un fichier de mise à niveau des dépendances (facultatif)](#create-dependency-upgrade-file)
+ [Étape 4 : transformation de votre code](#transform-code-java)
+ [Comment Amazon Q Developer transforme le code pour les mises à niveau du langage Java](how-CT-works.md)

## Mises à niveau Java prises en charge et IDEs
<a name="supported-languages-IDEs"></a>

Amazon Q prend actuellement en charge les versions de code source Java et les versions cibles suivantes pour les transformations. La transformation du code vers la même version de Java inclut la mise à niveau des bibliothèques et des autres dépendances de la version du code source.


**Mises à niveau de Java prises en charge**  

| Version de code source | Versions cibles prises en charge | 
| --- | --- | 
| Java 8  | Java 17 et Java 21 | 
| Java 11 | Java 17 et Java 21 | 
| Java 17 | Java 17 et Java 21  | 
| Java 21 |  Java21   | 

Amazon Q prend en charge les mises à niveau de Java dans les domaines suivants IDEs :
+ Modules dans JetBrains IDEs
+ Projets et espaces de travail dans Visual Studio Code

## Étape 1 : Prérequis
<a name="java-upgrade-prerequisites"></a>

Avant de continuer, vérifiez que vous avez bien terminé les étapes de [Configuration d’Amazon Q dans votre IDE](q-in-IDE-setup.md).

Avant de commencer une tâche de transformation de code, vérifiez que les prérequis suivants sont respectés : 
+ Votre projet est écrit dans une [version de Java prise en charge](#supported-languages-IDEs) et est créé sur Maven.
+ Votre projet est créé correctement avec Maven dans votre IDE. Maven 3.8 ou version ultérieure est actuellement pris en charge. 
+ Le JDK source de votre projet est disponible localement et constitue la version de votre code source. Par exemple, si vous transformez du code Java 8, votre installation JDK locale doit être le JDK 8.
+ Votre projet est créé en 55 minutes ou moins. 
+ Votre projet est configuré correctement et la version appropriée du JDK est spécifiée. Pour de plus amples informations, veuillez consulter [Étape 2 : configuration de votre projet Maven](#configure-project).
+ Votre projet ne requiert pas d’accès aux ressources de votre réseau privé, y compris à un cloud privé virtuel (VPC) ou à un réseau sur site. Par exemple, si votre projet contient des tests unitaires qui se connectent à une base de données de votre réseau, la transformation échouera.
+ Votre projet n’utilise pas de plug-ins qui créent des packages de langages autres que Java dans votre projet Java. Par exemple, si votre projet utilise le [frontend-maven-plugin](https://github.com/eirslett/frontend-maven-plugin)pour exécuter du JavaScript code frontal en plus de votre code source Java, la transformation échouera.
+ Votre réseau local autorise les chargements vers des compartiments Amazon S3 qu’Amazon Q utilise pour transformer votre code. Pour plus d’informations, consultez [Allow access to Amazon S3 buckets in data perimeters](firewall.md#data-perimeters).
+ Votre application utilise uniquement des caractères UTF-8. Si votre application utilise des caractères non UTF-8, Amazon Q essaiera tout de même de transformer votre code. 

## Étape 2 : configuration de votre projet Maven
<a name="configure-project"></a>

Pour configurer votre projet, utilisez les informations suivantes relatives à l’IDE que vous utilisez.

### Configuration d’un projet dans JetBrains
<a name="configure-jetbrains"></a>

Pour configurer votre projet dans JetBrains, vous devrez peut-être spécifier les paramètres de projet et de module suivants. 

Si vos modules utilisent le même JDK et le même niveau de langage que votre projet, vous n’aurez pas besoin de mettre à jour les paramètres de module.
+ Kit SDK du projet : JDK utilisé pour compiler votre projet. 
+ Niveau de langage du projet : version de Java utilisée dans votre projet.
+ Kit SDK du module : JDK utilisé pour compiler votre module. 
+ Niveau de langage du module : version de Java utilisée dans votre module. 
+ Maven Runner JRE : JDK avec lequel vous créez votre module. 

**Mise à jour des paramètres du projet et du module**

Pour mettre à jour votre kit SDK et les paramètres de niveau de langage pour votre projet ou module, procédez comme suit :

1. Dans votre IDE JetBrains, choisissez **Fichier**, puis **Structure du projet**. 

1. La fenêtre Structure du projet s’ouvre. Sous **Paramètres du projet**, choisissez **Projet**. 

   1. Pour mettre à jour le JDK de votre projet, choisissez-le dans la liste déroulante en regard de **Kit SDK**. 

   1. Pour mettre à jour le langage de votre projet, choisissez-le dans le menu déroulant à côté de **Niveau de langage**. 

1. Sous **Paramètres du projet**, choisissez **Modules**. 

   1. Pour mettre à jour le JDK de votre module, choisissez-le dans la liste déroulante en regard de **Kit SDK**. 

   1. Pour mettre à jour le langage de votre module, choisissez-le dans le menu déroulant en regard du **niveau de langage**.

Pour plus d’informations, consultez [Paramètres de structure de projet](https://www.jetbrains.com/help/idea/project-settings-and-structure.html) et [Paramètres de structure de module](https://www.jetbrains.com/help/idea/configure-modules.html) dans la documentation JetBrains.

**Mise à jour de vos paramètres Maven**

Pour mettre à jour votre JRE Maven Runner, procédez comme suit :

1. Dans votre IDE JetBrains, choisissez l’icône d’engrenage, puis **Paramètres** dans le menu qui s’ouvre. 

1. Dans la fenêtre **Paramètres**, choisissez **Création, Exécution, Déploiement**, puis **Outils de création**, **Maven** et **Runner**.

1. Dans le champ JRE, choisissez le JDK utilisé pour créer le module que vous transformez.

### Configuration d’un projet dans VS Code
<a name="configure-vsc"></a>

Pour configurer votre projet en VS Code, le projet doit contenir les éléments suivants : 
+ Un fichier `pom.xml` dans le dossier racine de votre projet
+ Un fichier `.java` dans le répertoire de votre projet

Si votre projet contient un wrapper Maven exécutable (`mvnw` pour macOS ou `mvnw.cmd` pour Windows), assurez-vous qu’il se trouve à la racine de votre projet. Amazon Q utilise le wrapper et aucune autre configuration Maven n’est nécessaire.

Si vous n’utilisez pas de wrapper Maven, installez Maven. Pour plus d’informations, consultez [Installation d’Apache Maven](https://maven.apache.org/install.html) dans la documentation Apache Maven.

Après l’installation de Maven, ajoutez-le à votre variable `PATH`. Pour plus d’informations, consultez [Comment ajouter Maven à mon `PATH` ?](troubleshooting-code-transformation.md#add-maven-to-path). Votre variable `runtime` Java doit également pointer vers un JDK et non vers un JRE. Pour vérifier que votre configuration est correcte, exécutez `mvn -v`. La sortie doit afficher votre version Maven et la variable `runtime` pointant vers le chemin d’accès à votre JDK.

## Étape 3 : création d’un fichier de mise à niveau des dépendances (facultatif)
<a name="create-dependency-upgrade-file"></a>

Vous pouvez fournir à Amazon Q un fichier de *mise à niveau des dépendances*, un fichier YAML répertoriant les dépendances de votre projet et les versions vers lesquelles effectuer la mise à niveau lors d’une transformation. En fournissant un fichier de mise à niveau des dépendances, vous pouvez spécifier les dépendances tierces et internes qu’Amazon Q ne serait peut-être pas en mesure de mettre à niveau autrement.

Les dépendances internes font référence aux bibliothèques, aux plug-ins et aux cadres gérés par votre organisation et qui ne sont disponibles que localement ou sur le réseau privé de votre organisation. Amazon Q est en mesure d’accéder à vos dépendances internes lorsqu’il réalise des builds dans votre environnement local. Pour de plus amples informations, veuillez consulter [Création du code dans votre environnement local](how-CT-works.md#java-local-builds). Les dépendances tierces sont des dépendances accessibles au public ou des dépendances open source qui ne sont pas propres à votre organisation.

Vous pouvez spécifier les dépendances internes que vous souhaitez mettre à niveau dans un fichier YAML et Amazon Q les met à niveau lors de la mise à niveau du JDK (par exemple, Java 8 vers 17). Vous pouvez lancer une transformation distincte (17 vers 17 ou 21 vers 21) après la mise à niveau initiale du JDK pour mettre à niveau les dépendances tierces.

Une fois qu’Amazon Q a effectué une mise à niveau minimale du JDK, vous pouvez lancer une transformation distincte pour mettre à niveau toutes les dépendances tierces. Vous pouvez également spécifier les dépendances tierces et leurs versions dans un fichier YAML pour ne mettre à niveau ces dépendances que lors de la transformation de mise à niveau de la bibliothèque.

Amazon Q vous demandera de fournir un fichier de mise à niveau des dépendances lors de la transformation. Si vous souhaitez en fournir un, vérifiez d’abord que le fichier a été configuré correctement. Les champs suivants sont obligatoires dans le fichier YAML :
+ nom : nom du fichier de mise à niveau des dépendances.
+ description (facultatif) : description du fichier de mise à niveau des dépendances et pour quelle transformation.
+ dependencyManagement : contient la liste des dépendances et des plug-ins à mettre à niveau.
+ dépendances : contient le nom et la version des bibliothèques à mettre à niveau.
+ plug-ins : contient les noms et les versions des plug-ins à mettre à niveau.
+ identifiant : nom de la bibliothèque, du plug-in ou de toute autre dépendance.
+ targetVersion : version de la dépendance vers laquelle effectuer la mise à niveau.
+ versionProperty (facultatif) : version de la dépendance que vous définissez, telle que définie avec la balise `properties` dans le fichier `pom.xml` de votre application.
+ originType : indique si la dépendance est interne ou tierce ; spécifié par FIRST\$1PARTY ou THIRD\$1PARTY.

Voici un exemple de fichier YAML de mise à niveau des dépendances et la configuration requise pour qu’Amazon Q puisse l’analyser :

```
name: dependency-upgrade
  
description: "Custom dependency version management for Java migration from JDK 8/11/17 to JDK 17/21"
  
  
dependencyManagement:
  
  dependencies:
  
    - identifier: "com.example:library1"
  
      targetVersion: "2.1.0"
  
      versionProperty: "library1.version"  # Optional
  
      originType: "FIRST_PARTY"   
  
    - identifier: "com.example:library2"
  
      targetVersion: "3.0.0"
  
      originType: "THIRD_PARTY"
  
  plugins:
  
    - identifier: "com.example.plugin"
  
      targetVersion: "1.2.0"
  
      versionProperty: "plugin.version"  # Optional
            
      originType: "THIRD_PARTY"
```

## Étape 4 : transformation de votre code
<a name="transform-code-java"></a>

Pour tester la configuration de votre IDE, téléchargez et décompressez l’exemple de projet, puis effectuez les étapes suivantes pour votre IDE. Si vous pouvez consulter les modifications proposées et le résumé des transformations, vous êtes prêt à transformer votre propre projet de code. Si la transformation échoue, votre IDE n’est pas configuré correctement. Pour résoudre les problèmes de configuration, consultez [Étape 2 : configuration de votre projet Maven](#configure-project) et [Résolution des problèmes](troubleshooting-code-transformation.md).

**Note**  
N’éteignez pas, ne fermez pas et ne mettez pas votre machine locale en veille pendant la transformation du code. Les versions initiale et de validation utilisent l’environnement côté client, qui nécessite une connexion réseau stable. 

Suivez ces étapes pour mettre à niveau la version du langage de codage de votre projet ou de votre module de code.

------
#### [ JetBrains ]

1. Ouvrez le module dans lequel vous souhaitez mettre à niveau JetBrains. Assurez-vous d’avoir généré correctement votre projet dans l’IDE. 

1. Choisissez le logo Amazon Q et demandez à Amazon Q de transformer votre application dans le panneau de discussion qui s'ouvre.

1. La fenêtre contextuelle **Transformer votre application** s’affiche. Choisissez le projet que vous souhaitez mettre à niveau dans la liste déroulante, puis **Transformer**. 

1. Amazon Q vous invite à fournir un fichier de dépendance de mise à niveau. Si vous avez configuré un fichier YAML avec les dépendances et la version vers lesquelles effectuer la mise à niveau, ajoutez-le. Amazon Q validera le fichier pour s’assurer qu’il a été configuré correctement. Si un message d’erreur s’affiche, vérifiez le format et les champs obligatoires décrits dans [Étape 3 : création d’un fichier de mise à niveau des dépendances (facultatif)](#create-dependency-upgrade-file).

1. Amazon Q entame la transformation. Vous pouvez consulter la progression dans l’onglet **Détails de la transformation**. 

1. Une fois la transformation terminée, vous pouvez vérifier le code mis à niveau avant de mettre à jour votre projet. Pour afficher le nouveau code, accédez à l’onglet **Détails de la transformation**, puis choisissez **Afficher la comparaison**. Dans la fenêtre **Appliquer le correctif** qui apparaît, choisissez un fichier pour ouvrir une vue comparative comportant votre code source et le code mis à niveau. 

1. Pour accepter les modifications apportées par Amazon Q, choisissez **Afficher la comparaison** pour ouvrir la fenêtre **Appliquer le correctif**. Sélectionnez tous les fichiers mis à jour, puis cliquez sur **OK** pour mettre à jour votre projet sur place. 

1. Pour obtenir des détails sur la façon dont votre code a été mis à niveau et les prochaines étapes suggérées, dans l’onglet **Détails de la transformation**, choisissez **Afficher le résumé de la transformation**. 

------
#### [ Code Visual Studio ]

1. Ouvrez le projet ou l’espace de travail que vous souhaitez mettre à niveau dans VS Code. Assurez-vous d’avoir bien créé votre projet dans l’IDE. 

1. Choisissez le logo Amazon Q et demandez à Amazon Q de transformer votre application dans le panneau de discussion qui s'ouvre.

1. Choisissez le projet que vous souhaitez mettre à niveau dans la barre de recherche en haut de l’IDE. 

1. Si Amazon Q ne trouve pas la version de votre code source, il vous invite à choisir la version de votre code. Choisissez la version dans laquelle votre code source est écrit, puis choisissez **Transformer** dans la fenêtre contextuelle pour continuer. 

1. Si vous y êtes invité, saisissez le chemin d’accès `JAVA_HOME` de votre JDK. Pour plus d’informations, consultez [Configuration de votre projet VS Code](#configure-vsc). 

1. Amazon Q vous invite à fournir un fichier de dépendance de mise à niveau. Si vous avez configuré un fichier YAML avec les dépendances et la version vers lesquelles effectuer la mise à niveau, ajoutez-le. Amazon Q validera le fichier pour s’assurer qu’il a été configuré correctement. Si un message d’erreur s’affiche, vérifiez le format et les champs obligatoires décrits dans [Étape 3 : création d’un fichier de mise à niveau des dépendances (facultatif)](#create-dependency-upgrade-file).

1. Amazon Q entame la transformation. Vous pouvez consulter la progression dans l’onglet **Hub de transformation**. 

1. Une fois la transformation terminée, l’onglet **Modifications proposées** s’ouvre. Pour vérifier le code mis à jour avant de mettre à jour votre projet, choisissez **Télécharger les modifications proposées**. Choisissez un fichier pour ouvrir une vue comparative avec votre code source et le code mis à jour. 

1. Pour accepter les modifications apportées par Amazon Q, accédez à l’onglet **Modifications proposées**, puis choisissez **Accepter**. 

1. Pour obtenir des informations sur la manière dont votre code a été mis à niveau et sur les prochaines étapes suggérées, accédez au **Hub de transformation**, cliquez sur le bouton avec les points de suspension **Vues et autres actions**, puis sur **Afficher le résumé de la transformation**.

------

# Comment Amazon Q Developer transforme le code pour les mises à niveau du langage Java
<a name="how-CT-works"></a>

Pour transformer votre code, Amazon Q Developer génère un plan de transformation qu’il utilise pour mettre à niveau la version du langage de code de votre projet. Après avoir transformé votre code, il fournit un résumé de la transformation et un fichier comparatif pour que vous puissiez examiner les modifications avant de les accepter. Dans la mesure où Amazon Q Developer effectue les modifications minimales nécessaires pour rendre votre code mis à niveau compatible avec le JDK cible, une transformation supplémentaire est nécessaire pour mettre à niveau les bibliothèques et les dépendances de votre projet. Les sections suivantes fournissent plus de détails sur la manière dont Amazon Q effectue la transformation.

## Génération de votre code et création d’un plan de transformation
<a name="build-code-create-plan"></a>

Pour commencer à transformer votre code, Amazon Q crée votre projet localement et génère un artefact de compilation contenant votre code source, les dépendances du projet et les journaux de génération. 

Après avoir généré l’artefact de génération, Amazon Q génère votre code dans un environnement de génération sécurisé et crée un plan de transformation personnalisé en fonction du projet ou du module que vous mettez à niveau. Le plan de transformation décrit les modifications spécifiques qu’Amazon Q tentera d’apporter, notamment les nouvelles versions de dépendance, les modifications majeures du code et les suggestions de remplacement du code obsolète. Ces modifications sont basées sur la version préliminaire de votre code et peuvent changer au cours de la transformation.

## Transformation de votre code
<a name="transform-code"></a>

Pour transformer votre code, Amazon Q tente de le mettre à niveau vers la version Java cible en fonction des modifications proposées dans le plan de transformation. Au fur et à mesure des modifications, il génère à nouveau et exécute des tests unitaires existants dans votre code source pour corriger de manière itérative les erreurs rencontrées. La mise à niveau du JDK peut être effectuée à partir de la version de code source suivante vers la version cible :
+ Java 8 à 17
+ Java 8 à 21
+ Java 11 à 17
+ Java 11 à 21
+ Java 17 à 21

Amazon Q apporte les modifications minimales nécessaires pour rendre votre code compatible avec la version Java cible. Une fois qu’Amazon Q a effectué une mise à niveau minimale du JDK, vous pouvez lancer une transformation distincte pour mettre à niveau toutes les dépendances tierces. Vous pouvez également spécifier les dépendances tierces et leurs versions dans un fichier YAML pour ne mettre à niveau ces dépendances que lors de la transformation de mise à niveau de la bibliothèque.

Amazon Q tente d’apporter les modifications suivantes lors de la mise à niveau de votre code :
+ Mise à jour des composants de code obsolètes conformément aux recommandations de la version Java cible
+ Mise à jour des bibliothèques et des cadres populaires vers une version compatible avec la version Java cible. Cela inclut la mise à jour des bibliothèques et cadres suivants vers leurs dernières versions majeures disponibles : 
  + Apache Commons IO 
  + Apache HttpClient 
  + bc-fips 
  + Cucumber-JVM 
  + Hibernate 
  + Jackson Annotations 
  + JakartaEE
  + Javax 
  + javax.servlet 
  + jaxb-api 
  + jaxb-impl 
  + jaxen 
  + jcl-over-slf4j 
  + json-simple 
  + jsr305 
  + junit 
  + junit-jupiter-api 
  + Log4j 
  + Micronaut 
  + Mockito 
  + mockito-core 
  + Okio 
  + PowerMockito 
  + Quarkus 
  + slf4j 
  + slf4j-api 
  + Spring Boot 
  + Spring Framework 
  + Spring Security 
  + Swagger 
  + testng 

**Note**  
N’éteignez pas ou ne fermez pas votre machine locale pendant la transformation du code, car la compilation côté client nécessite une connexion réseau stable.

## Création du code dans votre environnement local
<a name="java-local-builds"></a>

Au cours d’une transformation, Amazon Q effectue des versions de vérification dans votre environnement local. Amazon Q transforme votre code côté serveur en plusieurs étapes. Après chaque étape, Amazon Q envoie le code à votre environnement local pour créer et tester les modifications apportées. Le code est ensuite renvoyé au serveur pour poursuivre la transformation. 

La version intégrée à votre environnement local permet de vérifier le code transformé en permettant à Amazon Q d’exécuter des tests qui nécessitent l’accès à des ressources privées. Afin de minimiser les risques de sécurité associés à la création de code généré par l’IA dans votre environnement local, Amazon Q examine et met à jour le code généré afin de résoudre les problèmes de sécurité.

## Révision du résumé de la transformation et acceptation des modifications
<a name="review-plan-accept-changes"></a>

Une fois la transformation terminée, Amazon Q fournit un résumé de la transformation avec des détails sur les modifications apportées, y compris le statut de la version finale qui indique si l’ensemble de votre projet a été mis à niveau. Vous pouvez également consulter un résumé du journal de génération afin de comprendre les problèmes qui ont empêché Amazon Q de générer votre code dans la version mise à niveau.

Le résumé de la transformation inclut également les différences entre les modifications proposées dans le plan de transformation et celles finalement apportées par Amazon Q pour mettre à niveau votre code, ainsi que toutes les modifications supplémentaires qui ne figuraient pas dans le plan d’origine. 

Après avoir examiné le résumé de la transformation, vous pouvez consulter les modifications proposées par Amazon Q dans une vue comparative des fichiers. Les modifications de code suggérées par Amazon Q n’affecteront pas les fichiers de votre projet en cours tant que vous n’aurez pas accepté les modifications. Le code transformé est disponible jusqu’à 30 jours après la fin de la transformation. 

## Réalisation de transformations partiellement réussies
<a name="partially-successful-transformations"></a>

En fonction de la complexité et des spécificités de votre base de code, il se peut que la transformation soit partiellement réussie dans certains cas. Cela signifie qu’Amazon Q n’a pu transformer que certains fichiers ou certaines zones de code dans votre projet. Le cas échéant, vous devez mettre à jour manuellement le code restant pour que votre projet puisse être compilé dans la version de langage mise à jour. 

Pour transformer le reste de votre code, vous pouvez utiliser le chat Amazon Q dans l’IDE. Vous pouvez demander à Amazon Q de consulter les fichiers partiellement mis à jour et de fournir un nouveau code pour résoudre les problèmes, tels que les erreurs de compilation. Vous pouvez également utiliser des fonctionnalités telles que [le développement de fonctionnalités](q-in-IDE-chat.md#develop-code) et [le contexte de l'espace](workspace-context.md) de travail pour inclure une plus grande partie de votre projet en tant que contexte et obtenir des suggestions pour plusieurs fichiers à la fois. 