

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Atualizar versões do Java com o Amazon Q Developer
<a name="code-transformation"></a>

O Amazon Q Developer pode atualizar aplicações Java para versões de linguagem mais recentes no ambiente de desenvolvimento integrado (IDE). As alterações que o Amazon Q pode fazer para atualizar seu código incluem a atualização de componentes de código obsoletos e APIs a atualização de bibliotecas, estruturas e outras dependências em seu código. 

Para transformar o código, o Amazon Q primeiro o compila na versão da linguagem de origem e verifica se ele tem as informações necessárias para realizar a transformação. Após o Amazon Q transformar o código com sucesso, é possível verificar e aceitar as alterações no IDE. Como o Amazon Q Developer faz as alterações mínimas necessárias para tornar o código atualizado compatível com o JDK de destino, é necessária uma transformação adicional para atualizar as bibliotecas e dependências do projeto. Para obter mais informações sobre como o Amazon Q transforma seu código, consulte [Como o Amazon Q Developer transforma o código para atualizações da linguagem Java](how-CT-works.md).

**Topics**
+ [Atualizações de Java suportadas e IDEs](#supported-languages-IDEs)
+ [Etapa 1: pré-requisitos](#java-upgrade-prerequisites)
+ [Etapa 2: configurar o projeto](#configure-project)
+ [Etapa 3: criar um arquivo de atualização de dependência (opcional)](#create-dependency-upgrade-file)
+ [Etapa 4: transformar o código](#transform-code-java)
+ [Como o Amazon Q Developer transforma o código para atualizações da linguagem Java](how-CT-works.md)

## Atualizações de Java suportadas e IDEs
<a name="supported-languages-IDEs"></a>

Atualmente, o Amazon Q é compatível com as versões Java abaixo de código-fonte e de destino para transformações. A transformação do código para a mesma versão Java inclui a atualização de bibliotecas e outras dependências na versão do código-fonte.


**Atualizações de Java compatíveis**  

| Versão do código-fonte | Versões de destino compatíveis | 
| --- | --- | 
| Java 8  | Java 17 e Java 21 | 
| Java 11 | Java 17 e Java 21 | 
| Java 17 | Java 17 e Java 21  | 
| Java 21 |  Java21   | 

O Amazon Q oferece suporte a atualizações de Java nas seguintes áreas: IDEs
+ Módulos em JetBrains IDEs
+ Projetos e espaços de trabalho no Visual Studio Code

## Etapa 1: pré-requisitos
<a name="java-upgrade-prerequisites"></a>

Antes de continuar, certifique-se de que você concluiu as etapas em [Configurar o Amazon Q no IDE](q-in-IDE-setup.md).

Antes de começar, certifique-se de que os seguintes pré-requisitos são atendidos: 
+ Seu projeto foi escrito em uma [versão Java compatível](#supported-languages-IDEs) e foi criado no Maven.
+ Seu projeto foi compilado com sucesso com o Maven em seu IDE. Atualmente, o Maven 3.8 ou posterior é compatível. 
+ O JDK de origem do seu projeto está disponível localmente e é a versão do seu código-fonte. Por exemplo, se você estiver transformando o código Java 8, sua instalação local do JDK deverá ser o JDK 8.
+ Seu projeto é construído em 55 minutos ou menos. 
+ Seu projeto está configurado corretamente e a versão correta do JDK foi especificada. Para obter mais informações, consulte [Etapa 2: configurar o projeto](#configure-project).
+ Seu projeto não exige acesso a recursos em sua rede privada, incluindo uma nuvem privada virtual (VPC) ou uma rede on-premises. Por exemplo, se seu projeto contiver testes de unidade que se conectam a um banco de dados em sua rede, a transformação falhará.
+ Seu projeto não usa plug-ins que empacotam linguagens diferentes de Java em seu projeto Java. Por exemplo, se seu projeto usar o [frontend-maven-plugin](https://github.com/eirslett/frontend-maven-plugin)para executar código de front-end além JavaScript do código-fonte Java, a transformação falhará.
+ Sua rede local permite uploads para buckets do Amazon S3 que o Amazon Q usa para transformar seu código. Para obter mais informações, consulte [Permitir acesso aos buckets do Amazon S3 em](firewall.md#data-perimeters) perímetros de dados.
+ Sua aplicação usa somente caracteres UTF-8. Se sua aplicação usar caracteres não UTF-8, o Amazon Q ainda tentará transformar seu código. 

## Etapa 2: configurar o projeto
<a name="configure-project"></a>

Para configurar seu projeto, use as informações a seguir para o IDE que você está usando.

### Configurar um projeto no JetBrains
<a name="configure-jetbrains"></a>

Para configurar seu projeto em JetBrains, talvez seja necessário especificar as seguintes configurações de projeto e módulo. 

Se seus módulos usam o mesmo JDK e o mesmo nível de linguagem do seu projeto, você não precisa atualizar as configurações do módulo.
+ SDK do projeto: o JDK usado para compilar seu projeto. 
+ Nível de linguagem do projeto: a versão do Java usada em seu projeto.
+ SDK do módulo: o JDK usado para compilar seu módulo. 
+ Nível de idioma do módulo: a versão do Java usada em seu módulo. 
+ Maven Runner JRE: o JDK com o qual você constrói seu módulo. 

**Atualizar as configurações do projeto e do módulo**

Para atualizar as configurações de SDK e de nível de idioma para o projeto ou módulo, siga as etapas a seguir:

1. No seu JetBrains IDE, escolha **Arquivo** e, em seguida, **Estrutura do projeto**. 

1. A janela Project Structure é aberta. Em **Configurações do projeto**, escolha **Módulos**. 

   1. Para atualizar o JDK do seu projeto, escolha na lista suspensa ao lado do **SDK**. 

   1. Para atualizar o idioma do seu projeto, escolha no menu suspenso ao lado do nível do **idioma**. 

1. Em **Configurações do projeto**, escolha **Módulos**. 

   1. Para atualizar seu módulo JDK, escolha na lista suspensa ao lado do **SDK**. 

   1. Para atualizar o idioma do seu módulo, escolha no menu suspenso ao lado do nível do **idioma**.

Para obter mais informações, consulte [Configurações da estrutura do projeto](https://www.jetbrains.com/help/idea/project-settings-and-structure.html) e [Configurações da estrutura do módulo](https://www.jetbrains.com/help/idea/configure-modules.html) na documentação do JetBrains.

**Atualizar as configurações do Maven**

Para atualizar o JRE do Maven Runner, siga as etapas a seguir:

1. No IDE JetBrains, selecione o ícone de engrenagem e, em seguida, escolha **Configurações** no menu que é exibido. 

1. Na janela **Configurações**, escolha **Construção, Execução, Implantação** depois **Ferramentas de Construção**, depois **Maven** e depois **Executor**.

1. No campo JRE, escolha o JDK usado para criar o módulo que você está transformando.

### Configurar um projeto no VS Code
<a name="configure-vsc"></a>

Para configurar seu projeto em VS Code, seu projeto deve conter o seguinte: 
+ O arquivo `pom.xml` na pasta do projeto
+ O arquivo `.java` no seu diretório de projeto

Se seu projeto contiver um Maven wrapper executável (`mvnw` para macOS ou `mvnw.cmd` para Windows), verifique se ele está na raiz do seu projeto. O Amazon Q usará o wrapper e nenhuma outra configuração Maven será necessária.

Se você não estiver usando um Maven wrapper, instale Maven. Para obter mais informações, consulte [Instalação do Apache Maven](https://maven.apache.org/install.html) na documentação do Apache Maven.

Depois de instalar Maven, adicione-o à sua `PATH` variável. Para obter mais informações, consulte [Como faço para adicionar o Maven ao meu `PATH`?](troubleshooting-code-transformation.md#add-maven-to-path) Sua `runtime` variável Java também deve estar apontando para um JDK e não para um JRE. Para confirmar se sua configuração está correta, execute `mvn -v`. A saída deve mostrar sua Maven versão e a `runtime` variável apontando para o caminho para seu JDK.

## Etapa 3: criar um arquivo de atualização de dependência (opcional)
<a name="create-dependency-upgrade-file"></a>

Você pode fornecer ao Amazon Q um *arquivo de atualização de dependência*, um arquivo YAML que lista as dependências do seu projeto e as versões para as quais atualizar durante uma transformação. Ao fornecer um arquivo de atualização de dependências, você poderá especificar dependências de terceiros e primárias que o Amazon Q talvez não saiba que precisam ser atualizadas.

As dependências primárias se referem às bibliotecas, plug-ins e estruturas que sua organização mantém e estão disponíveis somente localmente ou na rede privada da sua organização. O Amazon Q é capaz de acessar suas dependências primárias ao realizar compilações em seu ambiente local. Para obter mais informações, consulte [Compilar código no ambiente local](how-CT-works.md#java-local-builds). Dependências de terceiros são dependências disponíveis publicamente ou de código aberto que não são exclusivas da sua organização.

Você pode especificar dependências primárias que deseja atualizar em um arquivo YAML, e o Amazon Q as atualiza durante a atualização do JDK (por exemplo, do Java 8 para o 17). É possível iniciar uma transformação separada (do 17 para o 17 ou do 21 para 21) após a atualização inicial do JDK para atualizar dependências de terceiros.

Após o Amazon Q realizar uma atualização mínima do JDK, você poderá iniciar uma transformação separada para atualizar todas as dependências de terceiros. Como alternativa, é possível especificar dependências de terceiros e suas versões em um arquivo YAML para atualizar somente essas dependências durante a transformação de atualização da biblioteca.

O Amazon Q solicitará que você forneça um arquivo de atualização de dependência durante a transformação. Se você quiser fornecer um, primeiro verifique se configurou o arquivo corretamente. Os seguintes campos são necessários no arquivo YAML:
+ name: o nome do arquivo de atualização de dependência.
+ description (opcional): uma descrição do arquivo de atualização da dependência e para qual transformação.
+ dependencyManagement: contém a lista de dependências e plug-ins a serem atualizados.
+ dependencies: contém o nome e a versão das bibliotecas a serem atualizadas.
+ plugins: contém os nomes e as versões dos plug-ins a serem atualizados.
+ identifier: o nome da biblioteca, plug-in ou outra dependência.
+ targetVersion: a versão da dependência para a qual atualizar.
+ versionProperty (opcional): a versão da dependência que você está definindo, conforme definida com a tag `properties` no arquivo `pom.xml` da sua aplicação.
+ originType: se a dependência é primária ou de terceiros, especificada por FIRST\$1PARTY ou THIRD\$1PARTY.

Veja a seguir um exemplo de um arquivo YAML de atualização de dependência e a configuração necessária para análise do 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"
```

## Etapa 4: transformar o código
<a name="transform-code-java"></a>

Para testar a configuração do seu IDE, baixe e descompacte o projeto de amostra e conclua as etapas a seguir para seu IDE. Se você conseguir visualizar as alterações propostas e o resumo da transformação, estará pronto para transformar seu próprio projeto de código. Se a transformação falhar, o IDE não está configurado corretamente. Para resolver problemas de configuração, revise [Etapa 2: configurar o projeto](#configure-project) e [Solução de problemas](troubleshooting-code-transformation.md).

**nota**  
Não desligue, feche ou coloque sua máquina local em modo de espera durante a transformação do código. As compilações inicial e de validação usam o ambiente do lado do cliente, o que requer uma conexão de rede estável. 

Conclua estas etapas para atualizar a versão da linguagem de código do projeto ou módulo de código.

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

1. Abra o módulo no qual você deseja atualizar em JetBrains. Certifique-se de ter construído seu projeto com sucesso no IDE. 

1. Escolha o logotipo da Amazon Q e peça à Amazon Q que transforme seu aplicativo no painel de bate-papo que se abre.

1. Um pop-up **Transforme seu aplicativo** é exibido. Escolha o projeto que você deseja atualizar na lista suspensa e, em seguida, escolha **Transformar**. 

1. O Amazon Q solicita que você forneça um arquivo de dependência de atualização. Se você configurou um YAML com as dependências e a versão para a qual deseja atualizar, adicione seu arquivo. O Amazon Q validará o arquivo para garantir que ele esteja configurado corretamente. Se ocorrer um erro, revise o formato e os campos necessários descritos em [Etapa 3: criar um arquivo de atualização de dependência (opcional)](#create-dependency-upgrade-file).

1. O Amazon Q inicia a transformação. Você pode ver o progresso na guia **Detalhes da transformação**. 

1. Depois que a transformação for concluída, você poderá verificar o código atualizado antes de atualizar seu projeto. Para ver o novo código, vá até a guia **Detalhes da transformação** e escolha **Exibir diferença**. Na janela **Aplicar patch** exibida, escolha um arquivo para abrir uma visualização de diferenças com seu código-fonte e o código atualizado. 

1. Para aceitar as alterações feitas pelo Amazon Q, escolha **Exibir diferença** para abrir a janela **Aplicar patch**. Selecione todos os arquivos atualizados e escolha **OK** para atualizar seu projeto no local. 

1. Para obter detalhes sobre como seu código foi atualizado e sugerir as próximas etapas, na guia **Detalhes da transformação**, escolha **Exibir resumo da transformação**. 

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

1. Abra o projeto ou o espaço de trabalho no VS Code que você deseja atualizar. Certifique-se de que você construiu o projeto com êxito no IDE. 

1. Escolha o logotipo da Amazon Q e peça à Amazon Q que transforme seu aplicativo no painel de bate-papo que se abre.

1. Escolha o projeto que você deseja atualizar na barra de pesquisa na parte superior do IDE. 

1. Se o Amazon Q não conseguir encontrar a versão do seu código-fonte, ele solicitará que você escolha a versão do seu código. Escolha a versão em que seu código-fonte está escrito e, em seguida, escolha **Transformar** no pop-up para continuar. 

1. Caso seja solicitado, insira o caminho `JAVA_HOME` para o JDK. Para obter mais informações, consulte [Configurar seu projeto VS Code](#configure-vsc). 

1. O Amazon Q solicita que você forneça um arquivo de dependência de atualização. Se você configurou um YAML com as dependências e a versão para a qual deseja atualizar, adicione seu arquivo. O Amazon Q validará o arquivo para garantir que ele esteja configurado corretamente. Se ocorrer um erro, revise o formato e os campos necessários descritos em [Etapa 3: criar um arquivo de atualização de dependência (opcional)](#create-dependency-upgrade-file).

1. O Amazon Q inicia a transformação. Você pode ver o progresso na guia **Hub de transformação**. 

1. Depois que a transformação for concluída, a guia **Alterações propostas** será aberta. Para verificar o código atualizado antes de atualizar seu projeto, escolha **Baixar as alterações propostas**. Escolha um arquivo para abrir uma visualização de diferenças com seu código-fonte e código atualizado. 

1. Para aceitar as alterações feitas pela Amazon Q, acesse a guia **Alterações propostas** e escolha **Aceitar**. 

1. Para obter detalhes sobre como seu código foi atualizado e ver as próximas etapas sugeridas, no **Transformation Hub**, escolha o botão de reticências **Visualizações e Mais Ações** e, em seguida, escolha **Mostrar resumo da transformação**.

------

# Como o Amazon Q Developer transforma o código para atualizações da linguagem Java
<a name="how-CT-works"></a>

Para transformar o código, o Amazon Q Developer gera um plano de transformação usado para atualizar a versão da linguagem de código do projeto. Depois de transformar seu código, ele fornece um resumo da transformação e uma comparação de arquivos para você revisar as alterações antes de aceitá-las. Como o Amazon Q Developer faz as alterações mínimas necessárias para tornar o código atualizado compatível com o JDK de destino, é necessária uma transformação adicional para atualizar as bibliotecas e dependências do projeto. As seções a seguir fornecem mais detalhes sobre como o Amazon Q realiza a transformação.

## Criar seu código e criar um plano de transformação
<a name="build-code-create-plan"></a>

Para começar a transformar seu código, o Amazon Q cria seu projeto localmente e gera um artefato de construção que contém seu código-fonte, dependências do projeto e logs de criação. 

Depois de gerar o artefato de construção, o Amazon Q cria seu código em um ambiente de compilação seguro e cria um plano de transformação, que é personalizado para o projeto ou módulo que você está atualizando. O plano de transformação descreve as mudanças específicas que o Amazon Q tentará fazer, incluindo novas versões de dependência, grandes alterações no código e sugestões de substituições para o código obsoleto. Essas alterações são baseadas na compilação preliminar do seu código e podem mudar durante a transformação.

## Transformar o código
<a name="transform-code"></a>

Para transformar seu código, o Amazon Q tenta atualizá-lo para a versão Java de destino com base nas alterações propostas no plano de transformação. À medida que faz alterações, ele reconstrói e executa testes de unidade existentes em seu código-fonte para corrigir iterativamente quaisquer erros encontrados. A atualização do JDK pode ser feita da seguinte versão do código-fonte para a versão de destino:
+ Java 8 para 17
+ Java 8 para 21
+ Java 11 para 17
+ Java 11 para 21
+ Java 17 para 21

O Amazon Q faz as alterações mínimas necessárias para tornar seu código compatível com a versão Java de destino. Após o Amazon Q realizar uma atualização mínima do JDK, você poderá iniciar uma transformação separada para atualizar todas as dependências de terceiros. Como alternativa, é possível especificar dependências de terceiros e suas versões em um arquivo YAML para atualizar somente essas dependências durante a transformação de atualização da biblioteca.

O Amazon Q tenta fazer as seguintes alterações ao atualizar seu código:
+ Atualizar componentes de código obsoletos conforme as recomendações da versão Java de destino.
+ Atualizar bibliotecas e estruturas populares para uma versão compatível com a versão Java de destino. Isso inclui atualizar as seguintes bibliotecas e estruturas para as versões principais mais recentes disponíveis: 
  + Apache Commons E/S 
  + Apache HttpClient 
  + fips do bc-fips 
  + Pepino-JVM 
  + Hibernar 
  + jackson-annotations 
  + JakartaEE
  + Javax 
  + javax.servlet 
  + jaxb-api 
  + jaxb-impl 
  + jaxen 
  + jcl-over-slf4j 
  + JSON simples 
  + jsr305 
  + junit 
  + junit-jupiter-api 
  + Log4j 
  + Micronaut 
  + Mockito 
  + mockito-core 
  + Okio 
  + PowerMockito 
  + Quarkus 
  + slf4j 
  + slf4j-api 
  + Bota de primavera 
  + Framework da 
  + Spring Security 
  + Swagger 
  + testando 

**nota**  
Não desligue nem feche sua máquina local durante a transformação do código porque a compilação do lado do cliente requer uma conexão de rede estável.

## Compilar código no ambiente local
<a name="java-local-builds"></a>

Durante uma transformação, o Amazon Q realiza compilações de verificação em seu ambiente local. O Amazon Q transforma seu código no lado do servidor em várias etapas. Após cada etapa, o Amazon Q envia o código para seu ambiente local para compilar e testar as alterações feitas. O código é então enviado de volta para o lado do servidor para continuar a transformação. 

A compilação no ambiente local ajuda a verificar o código transformado, permitindo que o Amazon Q execute testes que exigem acesso a recursos privados. Para minimizar os riscos de segurança associados à compilação de código gerado por IA no ambiente local, o Amazon Q revisa e atualiza o código que gera para tratar de questões de segurança.

## Revisando o resumo da transformação e aceitando as alterações
<a name="review-plan-accept-changes"></a>

Depois que a transformação for concluída, o Amazon Q fornece um resumo da transformação com detalhes sobre as alterações feitas, incluindo o status da versão final, que indica se todo o seu projeto foi atualizado. Você também pode ver um resumo do log de compilação para entender quaisquer problemas que impediram o Amazon Q de criar seu código na versão atualizada.

Além disso, o resumo da transformação inclui as diferenças entre as mudanças propostas no plano de transformação e as alterações que a Amazon Q fez para atualizar seu código e quaisquer alterações adicionais que não estavam no plano original. 

Depois de revisar o resumo da transformação, você pode visualizar as alterações que o Amazon Q está propondo em uma visualização de comparação de arquivos. Qualquer alteração de código sugerida pela Amazon Q não afetará seus arquivos de projeto atuais até que você aceite as alterações. O código transformado está disponível até 30 dias após a conclusão da transformação. 

## Concluindo transformações parcialmente bem-sucedidas
<a name="partially-successful-transformations"></a>

Dependendo da complexidade e das especificidades da sua base de código, pode haver instâncias em que a transformação seja parcialmente bem-sucedida. Isso significa que o Amazon Q conseguiu transformar somente determinados arquivos ou áreas de código em seu projeto. Nesse caso, você precisa atualizar manualmente o código restante para que seu projeto possa ser compilado na versão atualizada do idioma. 

Para ajudar a transformar o resto do seu código, você pode usar o Amazon Q chat no IDE. Você pode pedir à Amazon Q que revise os arquivos parcialmente atualizados e forneça um novo código para resolver problemas, como erros de compilação. Você também pode usar recursos como [desenvolvimento de recursos](q-in-IDE-chat.md#develop-code) e [contexto do espaço de trabalho](workspace-context.md) para incluir mais do seu projeto como contexto e obter sugestões para vários arquivos ao mesmo tempo. 