

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Aggiornamento delle versioni Java con Amazon Q Developer
<a name="code-transformation"></a>

Amazon Q Developer può aggiornare le applicazioni Java a versioni di linguaggio più recenti nell’ambiente di sviluppo integrato (IDE). Le modifiche che Amazon Q può apportare per aggiornare il codice includono l'aggiornamento di componenti di codice obsoleti e APIs l'aggiornamento di librerie, framework e altre dipendenze nel codice. 

Per trasformare il codice, Amazon Q anzitutto lo scrive nella versione del linguaggio di origine e verifica di avere le informazioni necessarie per eseguire la trasformazione. Dopo che Amazon Q ha trasformato correttamente il codice, puoi verificare e accettare le modifiche nel tuo IDE. Poiché Amazon Q Developer apporta le modifiche minime necessarie per rendere il codice aggiornato compatibile con il JDK di destinazione, è necessaria un’ulteriore trasformazione per aggiornare le librerie e le dipendenze del progetto. Per ulteriori informazioni su come Amazon Q trasforma il codice, consulta [Come Amazon Q Developer trasforma il codice per gli aggiornamenti del linguaggio Java](how-CT-works.md).

**Topics**
+ [Aggiornamenti Java supportati e IDEs](#supported-languages-IDEs)
+ [Fase 1: prerequisiti](#java-upgrade-prerequisites)
+ [Fase 2: configurare il progetto](#configure-project)
+ [Fase 3: creazione di un file di aggiornamento delle dipendenze (facoltativo)](#create-dependency-upgrade-file)
+ [Fase 4: trasformazioni di codice](#transform-code-java)
+ [Come Amazon Q Developer trasforma il codice per gli aggiornamenti del linguaggio Java](how-CT-works.md)

## Aggiornamenti Java supportati e IDEs
<a name="supported-languages-IDEs"></a>

Amazon Q attualmente supporta le seguenti versioni del codice sorgente Java e delle versioni di destinazione per le trasformazioni. La trasformazione del codice nella stessa versione di Java include l’aggiornamento delle librerie e di altre dipendenze nella versione del codice sorgente.


**Aggiornamenti Java supportati**  

| Versione del codice sorgente | Versioni supportate per la destinazione | 
| --- | --- | 
| Java 8  | Java 17 e Java 21 | 
| Java 11 | Java 17 e Java 21 | 
| Java 17 | Java 17 e Java 21  | 
| Java 21 |  Java21   | 

Amazon Q supporta gli aggiornamenti Java nei seguenti casi: IDEs
+ Moduli in JetBrains IDEs
+ Progetti e spazi di lavoro in Visual Studio Code

## Fase 1: prerequisiti
<a name="java-upgrade-prerequisites"></a>

Prima di continuare, assicurati di aver completato le fasi in [Configurazione di Amazon Q nell’IDE in uso](q-in-IDE-setup.md).

Prima di iniziare un processo di trasformazione del codice, verifica che siano soddisfatti i seguenti requisiti preliminari: 
+ Il tuo progetto è scritto in una [versione di Java supportata](#supported-languages-IDEs) ed è basato su Maven.
+ Il tuo progetto viene creato correttamente in Maven nel tuo IDE. Maven 3.8 o versioni successive è attualmente supportato. 
+ Il codice sorgente JDK del progetto è disponibile localmente e rappresenta la versione del codice sorgente. Ad esempio, se stai trasformando il codice Java 8, l’installazione JDK locale dovrebbe essere JDK 8.
+ Il progetto viene creato in 55 minuti o meno. 
+ Il progetto è configurato correttamente e viene specificata la versione JDK corretta. Per ulteriori informazioni, consulta [Fase 2: configurare il progetto](#configure-project).
+ Il progetto non richiede l’accesso alle risorse sulla rete privata, compresi un cloud privato virtuale (VPC) o una rete on-premises. Ad esempio, se il progetto contiene test di unità che si connettono a un database della rete, la trasformazione avrà esito negativo.
+ Il progetto non utilizza plugin che impacchettano linguaggi diversi da Java nel progetto Java. Ad esempio, se il progetto utilizza il codice front-end [frontend-maven-plugin](https://github.com/eirslett/frontend-maven-plugin)per eseguire il JavaScript codice front-end oltre al codice sorgente Java, la trasformazione avrà esito negativo.
+ La rete locale consente il caricamento sul bucket Amazon S3 che Amazon Q utilizza per trasformare il codice. Per ulteriori informazioni, consulta [Allow access to Amazon S3 buckets in data perimeters](firewall.md#data-perimeters).
+ L’applicazione utilizza solo caratteri UTF-8. Se l’applicazione utilizza caratteri non UTF-8, Amazon Q tenterà comunque di trasformare il codice. 

## Fase 2: configurare il progetto
<a name="configure-project"></a>

Per configurare il progetto, utilizza le seguenti informazioni per l’IDE che stai utilizzando.

### Configurare un progetto in JetBrains
<a name="configure-jetbrains"></a>

Per configurare il progetto in JetBrains, potrebbe essere necessario specificare le seguenti impostazioni del progetto e del modulo. 

Se i moduli utilizzano lo stesso JDK e lo stesso livello di linguaggio del progetto, non è necessario aggiornare le impostazioni del modulo.
+ SDK del progetto: il JDK utilizzato per compilare il progetto. 
+ Livello del linguaggio di progetto: la versione di Java utilizzata nel progetto.
+ SDK del modulo: il JDK utilizzato per compilare il modulo. 
+ Livello del linguaggio del modulo: la versione di Java utilizzata nel modulo. 
+ Maven Runner JRE: il JDK con cui crei il modulo. 

**Aggiornare le impostazioni del progetto e del modulo**

Per aggiornare l’SDK e le impostazioni del livello di linguaggio per il progetto o il modulo, completa le seguenti fasi:

1. Dall’IDE JetBrains, scegli **File** e quindi **Struttura del progetto**. 

1. Viene visualizzata la finestra di dialogo Struttura del progetto. In **Impostazioni progetto**, scegli **Progetto**. 

   1. Per aggiornare il progetto JDK, scegli dall’elenco a discesa accanto a **SDK**. 

   1. Per aggiornare la lingua del progetto, scegli dal menu a discesa accanto a **Livello linguaggio**. 

1. In **Project Settings (Impostazioni progetto)**, scegliere **Modules (Moduli)**. 

   1. Per aggiornare il modulo JDK, scegli dall’elenco a discesa accanto a **SDK**. 

   1. Per aggiornare la lingua del modulo, scegli dal menu a discesa accanto a **Livello linguaggio**.

Per ulteriori informazioni, consulta [Project structure settings](https://www.jetbrains.com/help/idea/project-settings-and-structure.html) e [Module structure settings](https://www.jetbrains.com/help/idea/configure-modules.html) nella documentazione di JetBrains.

**Aggiornare le impostazioni di Maven**

Per aggiornare l’ambiente Maven Runner JRE completa le fasi seguenti.

1. Dall’IDE di JetBrains, scegli l’icona a forma di ingranaggio, quindi scegli **Impostazioni** nel menu visualizzato. 

1. Nella finestra **Impostazioni**, scegli **Creazione, esecuzione, implementazione**, quindi **Strumenti di creazione**, **Maven** e infine **Runner**.

1. Nel campo JRE, scegli il JDK utilizzato per creare il modulo che stai trasformando.

### Configurare un progetto in VS Code
<a name="configure-vsc"></a>

Per configurare il progetto in VS Code, il progetto deve contenere quanto segue: 
+ Un file `pom.xml` nella cartella root del progetto
+ Un file `.java` nella directory del progetto

Se il progetto contiene un wrapper eseguibile Maven (`mvnw` per macOS o `mvnw.cmd` per Windows), assicurati che sia alla root del progetto. Amazon Q utilizzerà il wrapper e non sono necessarie altre configurazioni Maven.

Se non utilizzi un wrapper Maven, installa Maven. Per ulteriori informazioni, consulta [Installing Apache Maven](https://maven.apache.org/install.html) nella documentazione di Apache Maven.

Una volta installato Maven, aggiungilo alla variabile `PATH`. Per ulteriori informazioni, consulta [Come faccio ad aggiungere Maven al mio `PATH`?](troubleshooting-code-transformation.md#add-maven-to-path) Inoltre, la variabile `runtime` di Java dovrebbe puntare a un JDK e non a un JRE. Per confermare che la configurazione sia corretta, esegui `mvn -v`. L’output dovrebbe mostrare la versione Maven e la variabile di `runtime` che punta al percorso del JDK.

## Fase 3: creazione di un file di aggiornamento delle dipendenze (facoltativo)
<a name="create-dependency-upgrade-file"></a>

Puoi fornire ad Amazon Q un file di *aggiornamento delle dipendenze*, un file YAML che elenca le dipendenze del progetto e le versioni a cui eseguire l’aggiornamento durante una trasformazione. Fornendo un file di aggiornamento delle dipendenze, puoi specificare dipendenze di terze e prime parti che Amazon Q potrebbe altrimenti non conoscere per aggiornare.

Le dipendenze di prime parti si riferiscono alle librerie, ai plugin e ai framework gestiti dall’organizzazione e sono disponibili solo localmente o sulla rete privata dell’organizzazione. Amazon Q è in grado di accedere alle dipendenze proprietarie quando esegue le build nell’ambiente locale. Per ulteriori informazioni, consulta [Compilazione del codice nell’ambiente locale](how-CT-works.md#java-local-builds). Le dipendenze di terze parti sono disponibili pubblicamente o sono dipendenze open source che non sono esclusive della tua organizzazione.

Puoi specificare le dipendenze di prime parti che desideri aggiornare in un file YAML e Amazon Q le aggiorna durante l’aggiornamento JDK (ad esempio, da Java 8 a 17). Puoi avviare una trasformazione separata (da 17 a 17 o da 21 a 21) dopo l’aggiornamento iniziale di JDK per aggiornare le dipendenze di terze parti.

Una volta che Amazon Q ha eseguito un aggiornamento JDK minimo, puoi avviare una trasformazione separata per aggiornare tutte le dipendenze di terze parti. In alternativa, puoi specificare le dipendenze di terze parti e le relative versioni in un file YAML per aggiornare tali dipendenze solo durante la trasformazione dell’aggiornamento della libreria.

Amazon Q ti chiederà di fornire un file di aggiornamento delle dipendenze durante la trasformazione. Se desideri fornirne uno, assicurati innanzitutto di aver configurato correttamente il file. Nel file YAML sono obbligatori i seguenti campi:
+ name - Il nome del file di aggiornamento delle dipendenze.
+ description (facoltativo) - Una descrizione del file di aggiornamento delle dipendenze e per quale trasformazione.
+ dependencyManagement - Contiene l’elenco delle dipendenze e dei plugin da aggiornare.
+ dependencies - Contiene il nome e la versione delle librerie da aggiornare.
+ plugins - Contiene i nomi e le versioni dei plugin da aggiornare.
+ identifier - Il nome della libreria, del plugin o di un’altra dipendenza.
+ targetVersion - La versione della dipendenza a cui eseguire l’aggiornamento.
+ versionProperty (facoltativo) - La versione della dipendenza che stai definendo, impostata con il tag `properties` nel file `pom.xml` dell’applicazione.
+ originType - Indica se la dipendenza è di prima o terza parte, specificata da FIRST\$1PARTY o THIRD\$1PARTY.

Di seguito è riportato un esempio di file YAML per l’aggiornamento delle dipendenze e la configurazione richiesta per l’analisi di Amazon Q:

```
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"
```

## Fase 4: trasformazioni di codice
<a name="transform-code-java"></a>

Per testare la configurazione IDE, scarica e decomprimi il progetto di esempio e completa le fasi seguenti per l’IDE. Se riesci a visualizzare le modifiche proposte e il riepilogo delle trasformazioni, è tutto pronto per trasformare il tuo progetto di codice. Se la trasformazione no riesce, l’IDE non è configurato correttamente. Per risolvere i problemi di configurazione, consulta [Fase 2: configurare il progetto](#configure-project) e [Risoluzione dei problemi](troubleshooting-code-transformation.md).

**Nota**  
Non spegnere, chiudere o mettere in standby il computer locale durante la trasformazione del codice. Le build iniziali e di convalida utilizzano l’ambiente lato client, che richiede una connessione di rete stabile. 

Completa la procedura seguente per l’IDE per aggiornare la versione di linguaggio del codice di progetto o modulo di codice.

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

1. Apri il modulo che desideri aggiornare in JetBrains. Assicurati di aver creato correttamente il tuo progetto nell’IDE. 

1. Scegli il logo Amazon Q e chiedi ad Amazon Q di trasformare la tua applicazione nel pannello di chat che si apre.

1. Viene visualizzato un pop-up **Trasforma la tua applicazione**. Scegli il progetto che desideri aggiornare dall’elenco a tendina, quindi scegli **Trasformazioni**. 

1. Amazon Q richiede di fornire un file delle dipendenze per l’aggiornamento. Se hai configurato un YAML con le dipendenze e la versione a cui eseguire l’aggiornamento, aggiungi il file. Amazon Q convaliderà il file per garantire che sia configurato correttamente. Se ricevi un errore, controlla il formato e i campi obbligatori descritti in [Fase 3: creazione di un file di aggiornamento delle dipendenze (facoltativo)](#create-dependency-upgrade-file).

1. Amazon Q inizia la trasformazione. Puoi visualizzare lo stato di avanzamento nella scheda **Dettagli della trasformazione**. 

1. Una volta completata la trasformazione, puoi verificare il codice aggiornato prima di aggiornare il progetto. Per visualizzare il nuovo codice, vai alla scheda **Dettagli della trasformazione**, quindi scegli **Visualizza differenze** Nella finestra **Applica patch** che appare, scegli un file per aprire una visualizzazione delle differenze con il codice sorgente e il codice aggiornato. 

1. Per accettare le modifiche apportate da Amazon Q, scegli **Visualizza differenze** per aprire la finestra **Applica patch**. Seleziona tutti i file aggiornati e scegli **OK** per aggiornare il progetto in corso. 

1. Per ottenere dettagli su come è stato aggiornato il codice e sulle fasi successive suggerite, nella scheda **Dettagli della trasformazione**, scegli **Visualizza riepilogo della trasformazione**. 

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

1. Apri il progetto o lo spazio di lavoro di cui desideri eseguire l’aggiornamento in VS Code. Assicurati di aver creato correttamente il tuo progetto nell’IDE. 

1. Scegli il logo Amazon Q e chiedi ad Amazon Q di trasformare la tua applicazione nel pannello di chat che si apre.

1. Scegli il progetto che desideri aggiornare dalla barra di ricerca nella parte superiore dell’IDE. 

1. Se Amazon Q non riesce a trovare la versione del codice sorgente, ti chiede di scegliere la versione del codice. Per procedere, scegli la versione in cui è scritto il codice sorgente, quindi scegli **Trasforma**. 

1. Se richiesto, immetti il percorso `JAVA_HOME` nel JDK. Per ulteriori informazioni, consulta [Configure your VS Code project](#configure-vsc). 

1. Amazon Q richiede di fornire un file delle dipendenze per l’aggiornamento. Se hai configurato un YAML con le dipendenze e la versione a cui eseguire l’aggiornamento, aggiungi il file. Amazon Q convaliderà il file per garantire che sia configurato correttamente. Se ricevi un errore, controlla il formato e i campi obbligatori descritti in [Fase 3: creazione di un file di aggiornamento delle dipendenze (facoltativo)](#create-dependency-upgrade-file).

1. Amazon Q inizia la trasformazione. Puoi visualizzare i progressi nella scheda **Hub di trasformazione**. 

1. Una volta completata la trasformazione, si apre la scheda **Modifiche proposte**. Per verificare il codice aggiornato prima di aggiornare il progetto, scegli **Scarica le modifiche proposte**. Scegli un file per aprire una visualizzazione delle differenze con il codice sorgente e il codice aggiornato. 

1. Per accettare le modifiche apportate da Amazon Q, vai alla scheda **Modifiche proposte** e scegli **Accetta**. 

1. Per ottenere dettagli su come è stato aggiornato il codice e sulle fasi successive suggerite, nell’**Hub di trasformazione**, scegli il pulsante con i puntini di sospensione **Visualizzazioni e altre azioni**, quindi scegli **Mostra riepilogo della trasformazione**.

------

# Come Amazon Q Developer trasforma il codice per gli aggiornamenti del linguaggio Java
<a name="how-CT-works"></a>

Per trasformare il codice, Amazon Q Developer genera un piano di trasformazione che utilizza per aggiornare la versione del linguaggio di codice del progetto. Dopo aver trasformato il codice, fornisce un riepilogo della trasformazione e una differenza dei file per consentirti di esaminare le modifiche prima di accettarle. Poiché Amazon Q Developer apporta le modifiche minime necessarie per rendere il codice aggiornato compatibile con il JDK di destinazione, è necessaria un’ulteriore trasformazione per aggiornare le librerie e le dipendenze del progetto. Le sezioni seguenti forniscono ulteriori dettagli su come Amazon Q esegue la trasformazione.

## Creazione del codice e di un piano di trasformazione
<a name="build-code-create-plan"></a>

Per iniziare a trasformare il codice, Amazon Q crea il progetto localmente e genera un artefatto di compilazione che contiene il codice sorgente, le dipendenze del progetto e i log di compilazione. 

Dopo aver generato l’artefatto di compilazione, Amazon Q crea il codice in un ambiente di compilazione sicuro e crea un piano di trasformazione personalizzato in base al progetto o al modulo che stai aggiornando. Il piano di trasformazione delinea le modifiche specifiche che Amazon Q tenterà di apportare, tra cui nuove versioni di dipendenza, importanti modifiche al codice e sostituzioni suggerite per il codice obsoleto. Queste modifiche si basano sulla compilazione preliminare del codice e potrebbero cambiare durante la trasformazione.

## Trasformazioni di codice
<a name="transform-code"></a>

Per trasformare il codice, Amazon Q tenta di aggiornarlo alla versione Java di destinazione in base alle modifiche proposte nel piano di trasformazione. Man mano che apporta le modifiche, ricostruisce ed esegue i test di unità esistenti nel codice sorgente per correggere in modo iterativo eventuali errori riscontrati. L’aggiornamento JDK può essere effettuato dalla seguente versione del codice sorgente alla versione di destinazione:
+ Da Java 8 a 17
+ Da Java 8 a 21
+ Da Java 11 a 17
+ Da Java 11 a 21
+ Da Java 17 a 21

Amazon Q apporta le modifiche minime necessarie per rendere il codice compatibile con la versione Java di destinazione. Una volta che Amazon Q ha eseguito un aggiornamento JDK minimo, puoi avviare una trasformazione separata per aggiornare tutte le dipendenze di terze parti. In alternativa, puoi specificare le dipendenze di terze parti e le relative versioni in un file YAML per aggiornare tali dipendenze solo durante la trasformazione dell’aggiornamento della libreria.

Amazon Q tenta di apportare le seguenti modifiche durante l’aggiornamento del codice:
+ Aggiorna i componenti del codice obsoleti in base ai suggerimenti sulla versione Java di destinazione
+ Aggiorna le librerie e i framework più diffusi a una versione compatibile con la versione Java di destinazione. La procedura include l’aggiornamento delle seguenti librerie e framework alle ultime versioni principali disponibili: 
  + Apache Commons IO 
  + Apache HttpClient 
  + bc-fips 
  + Cucumber-JVM 
  + Ibernazione 
  + 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 

**Nota**  
Non spegnere o chiudere il computer locale durante la trasformazione del codice, perché la compilazione lato client richiede una connessione di rete stabile.

## Compilazione del codice nell’ambiente locale
<a name="java-local-builds"></a>

Durante una trasformazione, Amazon Q esegue delle build di verifica nell’ambiente locale. Amazon Q trasforma il codice lato server in più fasi. Dopo ogni fase, Amazon Q invia il codice all’ambiente locale per creare e testare le modifiche apportate. Il codice viene quindi rinviato lato server per continuare la trasformazione. 

La build nell’ambiente locale aiuta a verificare il codice trasformato permettendo ad Amazon Q di eseguire test che richiedono l’accesso a risorse private. Per ridurre al minimo i rischi di sicurezza associati alla creazione di codice generato dall’IA nell’ambiente locale, Amazon Q esamina e aggiorna il codice generato per risolvere i problemi di sicurezza.

## Revisione del riepilogo della trasformazione e accettazione delle modifiche
<a name="review-plan-accept-changes"></a>

Una volta completata la trasformazione, Amazon Q ne fornisce un riepilogo con i dettagli sulle modifiche apportate, incluso lo stato della build finale che indica se l’intero progetto è stato aggiornato. È anche possibile visualizzare un riepilogo del log di compilazione per comprendere eventuali problemi che hanno impedito ad Amazon Q di creare il codice nella versione aggiornata.

Il riepilogo della trasformazione include inoltre le differenze tra le modifiche proposte nel piano di trasformazione e le modifiche apportate da Amazon Q al termine dell’operazione per aggiornare il codice, oltre a eventuali modifiche aggiuntive non incluse nel piano originale. 

Dopo aver esaminato il riepilogo della trasformazione, è possibile visualizzare le modifiche proposte da Amazon Q in una visualizzazione delle differenze dei file. Qualsiasi modifica al codice suggerita da Amazon Q non influirà sui file di progetto correnti finché non accetti le modifiche. Il codice trasformato è disponibile fino a 30 giorni dopo il completamento della trasformazione. 

## Completamento di trasformazioni parzialmente riuscite
<a name="partially-successful-transformations"></a>

A seconda della complessità e delle specifiche della codebase, potrebbero verificarsi delle istanze in cui la trasformazione è parzialmente riuscita. Ciò significa che Amazon Q è stato in grado di trasformare solo determinati file o aree di codice del progetto. In questo caso, è necessario aggiornare manualmente il codice rimanente affinché il progetto sia compilabile nella versione del linguaggio aggiornata. 

La chat di Amazon Q nell’IDE può essere d’aiuto per trasformare la parte rimanente di codice. Puoi chiedere ad Amazon Q di esaminare i file parzialmente aggiornati e fornire nuovo codice per risolvere problemi, come gli errori di compilazione. Puoi anche utilizzare [funzionalità come Feature development](q-in-IDE-chat.md#develop-code) e [Workspace context](workspace-context.md) per includere più parti del tuo progetto come contesto e ricevere suggerimenti per più file contemporaneamente. 