

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Actualización de las versiones de Java con Amazon Q Developer
<a name="code-transformation"></a>

Amazon Q Developer puede actualizar las aplicaciones de Java a versiones de lenguaje más recientes en el entorno de desarrollo integrado (IDE). Los cambios que Amazon Q puede realizar para actualizar el código incluyen la actualización de componentes de código obsoletos y APIs la actualización de bibliotecas, marcos y otras dependencias del código. 

Para transformar el código, en primer lugar Amazon Q compila el código en la versión del lenguaje de origen y verifica que tenga la información necesaria para realizar la transformación. Una vez que Amazon Q transforme el código correctamente, compruebe y acepte los cambios en el IDE. Dado que Amazon Q Developer realiza los cambios mínimos necesarios para que el código actualizado sea compatible con el JDK de destino, es necesaria una transformación adicional para actualizar las bibliotecas y dependencias del proyecto. Para obtener más información acerca de cómo transforma el código Amazon Q, consulte [Cómo transforma Amazon Q Developer el código para las actualizaciones del lenguaje Java](how-CT-works.md).

**Topics**
+ [Actualizaciones de Java compatibles y IDEs](#supported-languages-IDEs)
+ [Paso 1: requisitos previos](#java-upgrade-prerequisites)
+ [Paso 2: configuración del proyecto](#configure-project)
+ [Paso 3: creación de un archivo de actualización de dependencias (opcional)](#create-dependency-upgrade-file)
+ [Paso 4: transformación del código](#transform-code-java)
+ [Cómo transforma Amazon Q Developer el código para las actualizaciones del lenguaje Java](how-CT-works.md)

## Actualizaciones de Java compatibles y IDEs
<a name="supported-languages-IDEs"></a>

Actualmente, Amazon Q es compatible con las siguientes versiones de código fuente y versiones de destino de Java para las transformaciones. La transformación del código a la misma versión de Java incluye la actualización de las bibliotecas y otras dependencias en la versión del código fuente.


**Actualizaciones de Java compatibles**  

| Versión de código fuente | Versiones de destino compatibles | 
| --- | --- | 
| Java 8  | Java 17 y Java 21 | 
| Java 11 | Java 17 y Java 21 | 
| Java 17 | Java 17 y Java 21  | 
| Java 21 |  Java21   | 

Amazon Q admite las siguientes actualizaciones de Java IDEs:
+ Módulos en JetBrains IDEs
+ Proyectos y espacios de trabajo en Visual Studio Code

## Paso 1: requisitos previos
<a name="java-upgrade-prerequisites"></a>

Antes de continuar, asegúrese de que ha completado los pasos en [Configurar Amazon Q en su IDE](q-in-IDE-setup.md).

Asegúrese de que se cumplen los siguientes requisitos previos antes de comenzar el trabajo de transformación de código: 
+ El proyecto está escrito en una [versión de Java compatible](#supported-languages-IDEs) y se basa en Maven.
+ El proyecto se compila correctamente con Maven en su IDE. Maven 3.8 o versiones posteriores son compatibles actualmente. 
+ El JDK de origen del proyecto está disponible localmente y es la versión del código de origen. Por ejemplo, si está transformando el código de Java 8, la instalación local de JDK debería ser JDK 8.
+ Su proyecto se compila en 55 minutos o menos. 
+ El proyecto está configurado correctamente y se ha especificado la versión correcta de JDK. Para obtener más información, consulte [Paso 2: configuración del proyecto](#configure-project).
+ Su proyecto no requiere acceso a los recursos de su red privada, incluida una nube privada virtual (VPC) o una red en las instalaciones. Por ejemplo, si el proyecto contiene pruebas unitarias que se conectan a una base de datos de la red, la transformación fallará.
+ Su proyecto no usa complementos que empaqueten lenguajes distintos de Java en su proyecto de Java. Por ejemplo, si su proyecto utiliza el código de front-end [frontend-maven-plugin](https://github.com/eirslett/frontend-maven-plugin)para ejecutar el JavaScript código de interfaz además del código fuente de Java, la transformación fallará.
+ Su red local permite cargas a los buckets de Amazon S3 que Amazon Q utiliza para transformar el código. Para obtener más información, consulte [Permitir el acceso a los buckets de Amazon S3 en los perímetros de datos](firewall.md#data-perimeters).
+ La aplicación solo usa caracteres UTF-8. Si la aplicación utiliza caracteres distintos de UTF-8, Amazon Q seguirá intentando transformar el código. 

## Paso 2: configuración del proyecto
<a name="configure-project"></a>

Para configurar el proyecto, utilice la siguiente información para el IDE que esté utilizando.

### Configuración de un proyecto en JetBrains
<a name="configure-jetbrains"></a>

Para configurar el proyecto en JetBrains, puede que tenga que especificar los siguientes ajustes del proyecto y del módulo. 

Si los módulos usan el mismo JDK y el mismo nivel de idioma que su proyecto, no necesita actualizar la configuración del módulo.
+ SDK del proyecto: el JDK que se utiliza para compilar el proyecto. 
+ Nivel de lenguaje del proyecto: la versión de Java utilizada en el proyecto.
+ SDK de módulo: el JDK que se utiliza para compilar el módulo. 
+ Nivel de idioma del módulo: la versión de Java utilizada en el módulo. 
+ Maven Runner JRE: el JDK con el que compila el módulo. 

**Actualización de la configuración del proyecto y del módulo**

Para actualizar la configuración de SDK y del nivel de lenguaje de su proyecto o módulo, realice los siguientes pasos:

1. En su IDE de JetBrains, seleccione **Archivo** y, a continuación, **Estructura del proyecto**. 

1. Se abrirá la ventana Estructura del proyecto. En **Configuración del proyecto**, seleccione **Módulos**. 

   1. Para actualizar el JDK del proyecto, selecciónelo en la lista desplegable situada junto a **SDK**. 

   1. Para actualizar el lenguaje del proyecto, elija una opción en el menú desplegable situado junto a **Nivel de lenguaje**. 

1. En **Project Settings**, seleccione **Modules**. 

   1. Para actualizar el JDK del módulo, selecciónelo en la lista desplegable situada junto a **SDK**. 

   1. Para actualizar el lenguaje del módulo, elija una opción en el menú desplegable situado junto a **Nivel de lenguaje**.

Para obtener más información, consulte [Project structure settings](https://www.jetbrains.com/help/idea/project-settings-and-structure.html) y [Module structure settings](https://www.jetbrains.com/help/idea/configure-modules.html) en la documentación de JetBrains.

**Actualización de la configuración de Maven**

Para actualizar el Maven Runner JRE, realice los siguientes pasos:

1. En su IDE de JetBrains, elija el icono del engranaje y, a continuación, seleccione **Configuración** en el menú que aparece. 

1. En la ventana **Configuración**, elija **Compilación, ejecución, implementación**, a continuación, **Herramientas de compilación** y, a continuación, **Maven** y **Runner**.

1. En el campo JRE, elija el JDK utilizado para compilar el módulo que está transformando.

### Configuración de un proyecto en VS Code
<a name="configure-vsc"></a>

Para configurar el proyecto en VS Code, el proyecto debe contener lo siguiente: 
+ Un archivo `pom.xml` en la carpeta raíz del proyecto
+ Un archivo `.java` en el directorio del proyecto

Si su proyecto contiene un ejecutable de contenedor de Maven (`mvnw` para macOS o `mvnw.cmd` para Windows), asegúrese de que esté en la raíz del proyecto. Amazon Q utilizará el contenedor y no será necesaria ninguna otra configuración de Maven.

Si no está utilizando un contenedor de Maven, instale Maven. Para obtener más información, consulte la sección [Installing Apache Maven](https://maven.apache.org/install.html) en la documentación de Apache Maven.

Después de instalar Maven, agréguelo a su variable de `PATH`. Para obtener más información, consulte [¿Cómo agrego Maven a mi `PATH`?](troubleshooting-code-transformation.md#add-maven-to-path). La variable `runtime` de Java también debe apuntar a un JDK y no a un JRE. Para confirmar que la configuración es correcta, ejecute `mvn -v`. El resultado debería mostrar su versión de Maven y la variable `runtime` que apunta a la ruta a su JDK.

## Paso 3: creación de un archivo de actualización de dependencias (opcional)
<a name="create-dependency-upgrade-file"></a>

Puede proporcionar a Amazon Q un *archivo de actualización de dependencias*, un archivo YAML que enumera las dependencias del proyecto y qué versiones deben actualizarse durante una transformación. Al proporcionar un archivo de actualización de dependencias, puede especificar dependencias de terceros y propias que de otro modo puede que Amazon Q no sepa que hay que actualizar.

Las dependencias propias se refieren a las bibliotecas, complementos y marcos que mantiene la organización y que solo están disponibles localmente o en la red privada de la organización. Amazon Q puede acceder a sus dependencias propias cuando realiza compilaciones en el entorno local. Para obtener más información, consulte [Compilación de código en el entorno local](how-CT-works.md#java-local-builds). Las dependencias de terceros están disponibles públicamente o son dependencias de código abierto que no son exclusivas de la organización.

Puede especificar las dependencias propias que desee actualizar en un archivo YAML y Amazon Q las actualizará durante la actualización de JDK (por ejemplo, de Java 8 a 17). Puede iniciar una transformación independiente (de 17 a 17 o de 21 a 21) después de la actualización inicial de JDK para actualizar las dependencias de terceros.

Una vez que Amazon Q realice una actualización mínima de JDK, puede iniciar una transformación independiente para actualizar todas las dependencias de terceros. Como alternativa, puede especificar las dependencias de terceros y sus versiones en un archivo YAML para actualizar únicamente esas dependencias durante la transformación de la actualización de la biblioteca.

Amazon Q le pedirá que proporcione un archivo de actualización de dependencias durante la transformación. Si desea proporcionar uno, primero asegúrese de haber configurado el archivo correctamente. Los siguientes campos son obligatorios en el archivo YAML:
+ name: el nombre del archivo de actualización de dependencias.
+ description (opcional): descripción del archivo de actualización de dependencias y para qué transformación.
+ dependencyManagement: contiene la lista de dependencias y complementos que se van a actualizar.
+ dependencies: contiene el nombre y la versión de las bibliotecas que se van a actualizar.
+ plugins: contiene los nombres y las versiones de los complementos que se van a actualizar.
+ identifier: el nombre de la biblioteca, el complemento u otra dependencia.
+ targetVersion: la versión de la dependencia a la que se va a actualizar.
+ versionProperty (opcional): la versión de la dependencia que está definiendo, tal y como se establece con la etiqueta `properties` del archivo `pom.xml` de la aplicación.
+ originType: si la dependencia es propia o de un tercero, especificado por FIRST\$1PARTY o THIRD\$1PARTY.

A continuación se muestra un ejemplo de un archivo YAML de actualización de dependencias y la configuración necesaria para que Amazon Q lo analice:

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

## Paso 4: transformación del código
<a name="transform-code-java"></a>

Para probar la configuración de su IDE, descargue y descomprima el proyecto de ejemplo y realice los siguientes pasos para su IDE. Si puede ver los cambios propuestos y el resumen de la transformación, estará listo para transformar su propio proyecto de código. Si la transformación falla, su IDE no se ha configurado correctamente. Para solucionar los problemas de configuración, revise [Paso 2: configuración del proyecto](#configure-project) y [Resolución de problemas](troubleshooting-code-transformation.md).

**nota**  
No apague, cierre ni ponga la máquina local en reposo durante la transformación del código. La compilación inicial y la de validación utilizan el entorno del cliente, lo que requiere una conexión de red estable. 

Para actualizar la versión de lenguaje del código de su proyecto o módulo de código, realice los siguientes pasos en su IDE.

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

1. Abra el módulo que desea actualizar en JetBrains. Asegúrese de haber compilado correctamente su proyecto en el IDE. 

1. Elige el logotipo de Amazon Q y pide a Amazon Q que transforme tu aplicación en el panel de chat que se abre.

1. Aparece la ventana emergente **Transformar su aplicación**. Elija el proyecto que desea actualizar de la lista desplegable y, a continuación, elija **Transformar**. 

1. Amazon Q le pide que proporcione un archivo de actualización de dependencias. Si ha configurado un YAML con las dependencias y la versión a las que desea realizar la actualización, añada el archivo. Amazon Q validará el archivo para asegurarse de que está configurado correctamente. Si se produce un error, revise el formato y los campos obligatorios descritos en [Paso 3: creación de un archivo de actualización de dependencias (opcional)](#create-dependency-upgrade-file).

1. Amazon Q inicia la transformación. Puede ver el progreso en la pestaña de **Detalles de la transformación**. 

1. Una vez completada la transformación, puede verificar el código actualizado antes de actualizar el proyecto. Para ver el código nuevo, vaya a la pestaña de **Detalles de la transformación** y, a continuación, seleccione **Ver diferencias**. En la ventana **Aplicar parche** que aparece, seleccione un archivo para abrir una vista de diferencias con el código de origen y el código actualizado. 

1. Para aceptar los cambios realizados por Amazon Q, seleccione **Ver diferencias** para abrir la ventana **Aplicar parche**. Seleccione todos los archivos actualizados y seleccione **Aceptar** para actualizar el proyecto en su lugar. 

1. Para obtener detalles sobre cómo se actualizó el código y sugerir los próximos pasos, en la pestaña **Detalles de la transformación**, seleccione **Ver resumen de la transformación**. 

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

1. Abra el proyecto o el espacio de trabajo que desea actualizar en VS Code. Asegúrese de haber compilado correctamente su proyecto en el IDE. 

1. Elige el logotipo de Amazon Q y pide a Amazon Q que transforme tu aplicación en el panel de chat que se abre.

1. Elija el proyecto que desea actualizar en la barra de búsqueda situada en la parte superior del IDE. 

1. Si Amazon Q no encuentra la versión del código de origen, le pedirá que elija la versión del código. Elija la versión en la que está escrito el código de origen y, a continuación, seleccione **Transformar** en la ventana emergente para continuar. 

1. Si se le solicita, introduzca la ruta de `JAVA_HOME` en su JDK. Para obtener más información, consulte [Configurar su proyecto de VS Code](#configure-vsc). 

1. Amazon Q le pide que proporcione un archivo de actualización de dependencias. Si ha configurado un YAML con las dependencias y la versión a las que desea realizar la actualización, añada el archivo. Amazon Q validará el archivo para asegurarse de que está configurado correctamente. Si se produce un error, revise el formato y los campos obligatorios descritos en [Paso 3: creación de un archivo de actualización de dependencias (opcional)](#create-dependency-upgrade-file).

1. Amazon Q inicia la transformación. Puede ver el progreso en la pestaña de **Centro de transformación**. 

1. Una vez completada la transformación, se abre la pestaña **Cambios propuestos**. Para verificar el código actualizado antes de actualizar el proyecto, seleccione **Descargar los cambios propuestos**. Seleccione un archivo para abrir una vista de diferencias con el código de origen y el código actualizado. 

1. Para aceptar los cambios realizados por Amazon Q, vaya a la pestaña **Cambios propuestos** y seleccione **Aceptar**. 

1. Para obtener detalles sobre cómo se actualizó el código y sugerirle los siguientes pasos, en el **Centro de transformaciones**, pulse el botón de puntos suspensivos **Vistas y más acciones** y, a continuación, elija **Mostrar resumen de la transformación**.

------

# Cómo transforma Amazon Q Developer el código para las actualizaciones del lenguaje Java
<a name="how-CT-works"></a>

Para transformar el código, Amazon Q Developer genera un plan de transformación que utiliza para actualizar la versión en lenguaje de código del proyecto. Después de transformar el código, proporciona un resumen de la transformación y las diferencias de los archivos para que pueda revisar los cambios antes de aceptarlos. Dado que Amazon Q Developer realiza los cambios mínimos necesarios para que el código actualizado sea compatible con el JDK de destino, es necesaria una transformación adicional para actualizar las bibliotecas y dependencias del proyecto. En las siguientes secciones, se proporcionan más detalles sobre cómo Amazon Q realiza la transformación.

## Compilación del código y creación de un plan de transformación
<a name="build-code-create-plan"></a>

Para empezar a transformar el código, Amazon Q compila el proyecto de forma local y genera un artefacto de compilación que contiene el código de origen, las dependencias del proyecto y los registros de compilación. 

Tras generar el artefacto de compilación, Amazon Q compila el código en un entorno de compilación seguro y crea un plan de transformación, que se personaliza para el proyecto o módulo que vaya a actualizar. El plan de transformación describe los cambios específicos que Amazon Q intentará realizar, incluidas las nuevas versiones de las dependencias, los principales cambios de código y las sustituciones sugeridas para el código en desuso. Estos cambios se basan en la versión preliminar del código y pueden cambiar durante la transformación.

## Transformación del código
<a name="transform-code"></a>

Para transformar el código, Amazon Q intenta actualizarlo a la versión de Java de destino en función de los cambios propuestos en el plan de transformación. A medida que realiza los cambios, vuelve a compilar y ejecuta las pruebas unitarias existentes en el código de origen para corregir de forma iterativa los errores encontrados. La actualización del JDK se puede realizar desde la siguiente versión del código fuente a la versión de destino:
+ Java 8 a 17
+ Java 8 a 21
+ Java 11 a 17
+ Java 11 a 21
+ Java 17 a 21

Amazon Q realiza los cambios mínimos necesarios para que el código sea compatible con la versión de Java de destino. Una vez que Amazon Q realice una actualización mínima de JDK, puede iniciar una transformación independiente para actualizar todas las dependencias de terceros. Como alternativa, puede especificar las dependencias de terceros y sus versiones en un archivo YAML para actualizar únicamente esas dependencias durante la transformación de la actualización de la biblioteca.

Amazon Q intenta realizar los siguientes cambios al actualizar el código:
+ Actualizar los componentes de código en desuso de acuerdo con las recomendaciones de la versión de Java de destino
+ Actualizar las bibliotecas y marcos más populares a una versión compatible con la versión de Java de destino. Esto incluye la actualización de las siguientes bibliotecas y marcos a sus últimas versiones principales disponibles: 
  + Apache Commons IO 
  + Apache HttpClient 
  + bc-fips 
  + Cucumber-JVM 
  + Hibernar 
  + 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**  
No apague ni cierre la máquina local durante la transformación del código, ya que la compilación del cliente requiere una conexión de red estable.

## Compilación de código en el entorno local
<a name="java-local-builds"></a>

Durante una transformación, Amazon Q realiza compilaciones de verificación en el entorno local. Amazon Q transforma el código en el servidor en varios pasos. Después de cada paso, Amazon Q envía el código al entorno local para compilar y probar los cambios que ha realizado. A continuación, el código se devuelve al servidor para continuar con la transformación. 

La compilación en el entorno local ayuda a verificar el código transformado al permitir que Amazon Q ejecute pruebas que requieren acceso a recursos privados. Para minimizar los riesgos de seguridad asociados a la compilación de código generado por IA en el entorno local, Amazon Q revisa y actualiza el código que genera para abordar problemas de seguridad.

## Revisión del resumen de la transformación y aceptación de los cambios
<a name="review-plan-accept-changes"></a>

Una vez completada la transformación, Amazon Q proporciona un resumen de la transformación con detalles sobre los cambios que ha realizado, incluido el estado de la compilación final, que indica si se ha actualizado todo el proyecto. También puede ver un resumen del registro de compilación para comprender los problemas que impidieron que Amazon Q compilara su código en la versión actualizada.

El resumen de la transformación también incluye las diferencias entre los cambios propuestos en el plan de transformación y los cambios que Amazon Q ha realizado finalmente para actualizar el código, así como cualquier cambio adicional que no estuviera en el plan original. 

Tras revisar el resumen de la transformación, podrá ver los cambios que Amazon Q propone en una vista con diferencias de los archivos. Los cambios de código que Amazon Q sugiera no afectarán a los archivos del proyecto actual hasta que los acepte. El código transformado está disponible hasta 30 días después de que se complete la transformación. 

## Finalización de transformaciones parcialmente correctas
<a name="partially-successful-transformations"></a>

Según la complejidad y las características específicas de la base de código, es posible que haya casos en los que la transformación se realice correctamente de forma parcial. Esto significa que Amazon Q solo ha podido transformar determinados archivos o áreas de código del proyecto. En este caso, debe actualizar manualmente el código restante para que el proyecto se pueda compilar en la versión de idioma actualizada. 

Para ayudar a transformar el resto del código, puede usar el chat de Amazon Q en el IDE. Puede pedir a Amazon Q que revise los archivos parcialmente actualizados y que proporcione un código nuevo para solucionar problemas, como los errores de compilación. También puedes usar funciones como el [desarrollo de funciones y el](q-in-IDE-chat.md#develop-code) [contexto del espacio](workspace-context.md) de trabajo para incluir más contenido de tu proyecto como contexto y obtener sugerencias para varios archivos a la vez. 