Partilhar via


Azure Migrate aplicativo e avaliação de código para Java versão 7 (Visualização)

Nota

Este artigo destina-se à próxima geração de aplicação Azure Migrate e avaliação de código para Java, versão 7.x. Esta versão está em pré-visualização. Para a versão estável anterior, versão 6.x, consulte Azure Migrate application and code assessment for Java.

Este artigo mostra como usar o aplicativo Azure Migrate e a ferramenta de avaliação de código para Java para avaliar e reformular qualquer tipo de aplicativo Java. A ferramenta permite avaliar a preparação do aplicativo para replataforma e migração para o Azure. Essa ferramenta é oferecida como uma interface de linha de comando (CLI) e avalia binários de aplicativos Java e código-fonte para identificar oportunidades de replataforma e migração para o Azure. Ele ajuda a modernizar e reformular aplicativos Java de grande escala, identificando casos de uso comuns e padrões de código e propondo alterações recomendadas.

A ferramenta descobre o uso da tecnologia de aplicativos por meio da análise estática de código, fornece estimativa de esforço e acelera a replataforma de código. Essa avaliação ajuda você a priorizar e mover aplicativos Java para o Azure. Com um conjunto de mecanismos e regras, a ferramenta pode descobrir e avaliar diferentes tecnologias, como Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) e muito mais. Em seguida, a ferramenta ajuda você a reformular o aplicativo Java para diferentes destinos do Azure - Serviço de Aplicativo do Azure, Serviço Kubernetes do Azure e Aplicativos de Contêiner do Azure - com regras específicas de replataforma do Azure.

A ferramenta é baseada em um conjunto de componentes do projeto Cloud Native Computing Foundation Konveyor, criado e liderado pela Red Hat.

Descrição geral

A ferramenta foi projetada para ajudar as organizações a modernizar seus aplicativos Java de uma forma que reduza custos e permita uma inovação mais rápida. A ferramenta usa técnicas avançadas de análise para entender a estrutura e as dependências de qualquer aplicativo Java e fornece orientação sobre como refatorar e migrar os aplicativos para o Azure.

Com ele, você pode executar as seguintes tarefas:

  • Descubra o uso da tecnologia: veja rapidamente quais tecnologias um aplicativo usa. A descoberta é útil se você tiver aplicativos herdados com pouca documentação e quiser saber quais tecnologias eles usam.
  • Avaliar o código para um destino específico: avalie um aplicativo para um destino específico do Azure. Verifique o esforço e as modificações que você precisa fazer para reformular seus aplicativos para o Azure.

Alvos suportados

A ferramenta contém regras para ajudá-lo a reformular seus aplicativos para que você possa implantar e usar diferentes serviços do Azure.

As regras usadas pelo aplicativo Azure Migrate e pela avaliação de código são agrupadas com base em um destino. Um destino é onde ou como o aplicativo é executado e as necessidades e expectativas gerais. Ao avaliar um aplicativo, você pode escolher vários destinos. A tabela a seguir descreve os destinos disponíveis:

Nome do destino Description Destino
Serviço de Aplicações do Azure Práticas recomendadas para implantar um aplicativo no Serviço de Aplicativo do Azure. azure-appservice
Azure Kubernetes Service Práticas recomendadas para implantar um aplicativo no Serviço Kubernetes do Azure. azure-aks
Azure Container Apps Práticas recomendadas para implantar um aplicativo em Aplicativos de Contêiner do Azure. azure-container-apps
Preparação para a nuvem Práticas recomendadas gerais para preparar um aplicativo Cloud (Azure). cloud-readiness
Linux Práticas recomendadas gerais para preparar um aplicativo Linux. linux
OpenJDK 11 Melhores práticas gerais para executar uma aplicação Java 8 com Java 11. openjdk11
OpenJDK 17 Melhores práticas gerais para executar uma aplicação Java 11 com Java 17. openjdk17
OpenJDK 21 Melhores práticas gerais para executar uma aplicação Java 17 com Java 21. openjdk21

Quando a ferramenta avalia a Preparação para a Nuvem e os serviços relacionados do Azure, também pode relatar informações úteis para o uso potencial de diferentes serviços do Azure. A lista seguinte mostra alguns dos serviços abrangidos:

  • Bases de Dados do Azure
  • Azure Service Bus
  • Armazenamento do Azure
  • Rede de Entrega de Conteúdos do Azure
  • Hubs de Eventos do Azure
  • Azure Key Vault
  • Azure Front Door

Transferir e Instalar

Para usar a appcat CLI, você deve baixar o pacote específico para seu ambiente e ter as dependências necessárias em seu ambiente. A appcat CLI é executada em qualquer ambiente, como Windows, Linux ou Mac, usando hardware Intel, Arm ou Apple Silicon. Para o requisito JDK, recomendamos que você use o Microsoft Build do OpenJDK.

SO Arquitetura Download Link Outros ficheiros
x64
Windows x64 Transferir sha256 / sig
macOS x64 Transferir sha256 / sig
Linux x64 Transferir sha256 / sig
AArch64
Windows AArch64 / ARM64 Transferir sha256 / sig
macOS Silício da Apple Transferir sha256 / sig
Linux AArch64 / ARM64 Transferir sha256 / sig

Pré-requisitos

Instalação

Para instalar appcato , baixe o arquivo zip apropriado para sua plataforma. Depois de baixar o arquivo, dependendo do seu sistema operacional, você deve encontrar um arquivo .tar.gz (Linux/macOS) ou .zip (Windows).

Extraia o binário do arquivo baixado. Você deve ver a seguinte estrutura de pastas:

/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
├── appcat.exe (Windows) / appcat (Linux/macOS)
├── samples/
├── fernflower.jar
├── LICENSE
├── NOTICE.txt
├── maven.default.index
├── jdtls/
├── static-report/
├── rulesets/   
├── readme.md
└── readme.html

Executando a ferramenta

Opção 1: Executar o appcat a partir da pasta baixada

Altere o diretório para a pasta extraída:

cd /azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
./appcat --help

Nota

O appcat binário primeiro procura suas dependências no diretório atual, de onde está sendo executado, e retorna ao seguinte cenário se elas não forem encontradas.

Opção 2: Adicione o caminho binário do appcat ao seu $PATH

Mova o conteúdo da pasta para a pasta .appcat no diretório inicial do usuário - $HOME/.appcat no Linux/Mac e %USERPROFILE%/.appcat no Windows.

Adicione a pasta .appcat à sua PATH variável de ambiente para que você possa executar a ferramenta a partir de qualquer pasta no terminal.

mv <path-to-extracted>/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/ $HOME/.appcat

Nota

Nesse contexto, quando o appcat binário é chamado de uma pasta diferente de onde está instalado, ele procura suas dependências na pasta .appcat no diretório inicial do usuário.

Utilização

Subcomandos

AppCAT fornece dois subcomandos para uso:

  • analyze: Execute a análise do código-fonte no código-fonte de entrada ou em um binário.
  • transform: Converta regras XML de versões anteriores (6 e anteriores) para o formato YAML usado por esta versão.

Nota

Para usuários do macOS: Se você encontrar um erro informando "A Apple não pôde verificar" ao tentar executar o aplicativo, você pode resolver esse erro usando o seguinte comando:

xattr -d -r com.apple.quarantine /path/to/appcat_binary

Por exemplo:

xattr -d -r com.apple.quarantine $HOME/.appcat/appcat

Analisar subcomando

O analyze subcomando permite executar o código-fonte e a análise binária.

Para analisar o código-fonte do aplicativo, execute o seguinte comando:

./appcat analyze --input=<path-to-source-code> --output=<path-to-output-directory> --target=azure-appservice --overwrite

O --input sinalizador deve apontar para um diretório de código-fonte ou um arquivo binário e --output deve apontar para um diretório para armazenar os resultados da análise.

Para obter mais informações sobre os sinalizadores de análise, execute o seguinte comando:

./appcat analyze --help

Para verificar os destinos disponíveis para o AppCAT, execute o seguinte comando:

./appcat analyze --list-targets

Este comando produz a seguinte saída:

available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
linux
openjdk11
openjdk17
openjdk21

Analisando vários aplicativos

O AppCAT foi projetado para analisar um único aplicativo por execução de comando, mas se você usar a --bulk opção, poderá analisar vários aplicativos em uma única execução. Esta opção gera um único relatório estático no diretório de saída que inclui os resultados para todos os aplicativos.

Para analisar vários aplicativos, execute o seguinte comando:

./appcat analyze --bulk --input=<path-to-source-A> --output=<path-to-output-ABC> --target=<targetname>
./appcat analyze --bulk --input=<path-to-source-B> --output=<path-to-output-ABC> --target=<targetname>
./appcat analyze --bulk --input=<path-to-source-C> --output=<path-to-output-ABC> --target=<targetname>

Subcomando Transformar

O transform subcomando permite converter as regras XML anteriores appcat usadas na versão 6.x no novo formato YAML usado por esta versão 7.x.

Para transformar regras, execute o seguinte comando:

./appcat transform rules --input=<path-to-xml-rules> --output=<path-to-output-directory>

O --input sinalizador deve apontar para um arquivo ou diretório contendo regras XML, e o --output sinalizador deve apontar para o diretório de saída para as regras YAML convertidas.

Exemplos

Nota

Certifique-se de que as permissões de arquivo para scripts na pasta extraída estão definidas para permitir a execução.

Na pasta de exemplos, você pode encontrar um aplicativo Web de exemplo chamado airsonic.war. Airsonic é um streamer de mídia baseado na web, fornecendo acesso à sua música e permitindo que você a compartilhe com amigos. Para saber mais sobre a Airsonic, consulte Airsonic.

No diretório de exemplos, você pode encontrar os seguintes scripts para executar diferentes tipos de análise:

  • run-assessment: fornece um relatório com avaliação de código e etapas para migrar o Airsonic para o Serviço de Aplicativo do Azure no Tomcat.
  • run-assessment-transform-rules: Converte regras XML de Windup em regras YAML compatíveis com analyzer-lsp.
  • run-assessment-custom-rules: fornece um relatório de avaliação de código usando regras personalizadas (transformar XML em YAML).
  • run-assessment-openjdk21: Gera um relatório com avaliação de código e etapas para migrar o Airsonic para o OpenJDK 21.
  • run-assessment-package-only: Produz um relatório avaliando pacotes específicos.

Dependendo do seu sistema operacional, execute o script apropriado, conforme mostrado no exemplo a seguir:

./samples/run-assessment

Os relatórios são gerados e lançados automaticamente. Pode encontrar os relatórios em .. /samples/report-* (Linux/macOS) ou .. \samples\report-* (Windows).

Resumo da análise

A página de destino do relatório lista todas as tecnologias usadas no aplicativo. O painel fornece um resumo da análise, incluindo o número de incidentes de transformação, as categorias de incidentes ou os pontos da história.

Captura de tela do relatório de resumo do appcat.

Ao ampliar o gráfico de pizza Incidentes por categoria , você pode ver o número de incidentes por categoria: Obrigatório, Opcional e Potencial.

O painel também mostra os pontos da história. Os pontos de história são uma métrica abstrata comumente usada no desenvolvimento de software ágil para estimar o nível de esforço necessário para implementar um recurso ou mudança. appcat usa pontos de história para expressar o nível de esforço necessário para migrar um aplicativo específico. Os pontos de história não se traduzem necessariamente em horas de trabalho, mas o valor deve ser consistente em todas as tarefas.

Captura de tela do relatório de incidente resumido do AppCAT.

Relatório de avaliação

O relatório de avaliação fornece uma visão geral dos problemas de transformação que precisariam ser resolvidos para migrar o aplicativo para o Azure.

Esses Problemas, também chamados de Incidentes, têm uma gravidade (Obrigatório, Opcional ou Potencial), um nível de esforço e um número indicando os pontos da história. Os pontos da história são determinados calculando o número de incidentes vezes o esforço necessário para resolver o problema.

Captura de ecrã do relatório de avaliação AppCAT.

Informações pormenorizadas sobre uma questão específica

Para cada incidente, você pode obter mais informações (o detalhe do problema, o conteúdo da regra e assim por diante) apenas selecionando-o. Você também obtém a lista de todos os arquivos afetados por esse incidente.

Captura de tela do relatório de detalhes do problema do AppCAT.

Em seguida, para cada arquivo ou classe afetada pelo incidente, você pode ir para o código-fonte para destacar a linha de código que criou o problema.

Captura de tela do relatório de código de problema do AppCAT.

Notas de versão

7.6.0.0

Esta versão é baseada em um conjunto diferente de componentes do projeto Konveyor.

Atualizações gerais

6.3.9.0

Esta versão contém as seguintes correções e inclui um conjunto de novas regras.

Atualizações gerais

  • Alterações integradas a partir do repositório Windup upstream (6.3.9.Versão Final).
  • Resolvidos links quebrados em descrições de regras e texto de ajuda.

Regras

  • Fila de Mensagens do Azure: novas regras atualizadas e adicionadas para azure-message-queue-rabbitmq e azure-message-queue-amqp.
  • Barramento de Serviço do Azure: introduziu uma regra de deteção para o Barramento de Serviço do Azure.
  • MySQL e PostgreSQL: regras refinadas de deteção de dependência.
  • Azure-AWS Rules: regras existentes aprimoradas e aprimoradas.
  • S3 Spring Starter: adicionada uma regra de deteção para o S3 Spring Starter.
  • RabbitMQ Spring JMS: adicionada uma regra de deteção para RabbitMQ Spring JMS.
  • Regras de registro: regras relacionadas ao registro em log atualizadas e refinadas.
  • Regra de armazenamento local: atualizou e refinou a regra de armazenamento local.
  • Regra do Sistema de Arquivos do Azure: atualizada e refinada a regra do Sistema de Arquivos do Azure.

Bibliotecas

  • Bibliotecas atualizadas para resolver vulnerabilidades de segurança.

6.3.0.9

Esta versão contém as seguintes correções e inclui um conjunto de novas regras.

  • Resolvido um problema com a localhost-java-00001 regra.
  • Introduziu novas regras para identificar tecnologias como AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata e Alibaba Rocket MQ.
  • Atualizado o azure-file-system-02000 para agora suportar extensões de arquivo XML.
  • Atualizou várias bibliotecas para resolver vulnerabilidades de segurança.

6.3.0.8

Anteriormente, um conjunto de destinos era habilitado por padrão, tornando difícil para certos clientes avaliar aplicativos grandes com muitos incidentes relacionados a problemas menos críticos. Para reduzir o ruído nos relatórios, os usuários agora devem especificar vários destinos, com o parâmetro --target, ao executar appcat, dando-lhes a opção de selecionar apenas os alvos que importam.

6.3.0.7

Versão GA (Geralmente Disponível) do aplicativo Azure Migrate e avaliação de código.

Problemas Conhecidos

7.6.0.0

  1. O sinalizador --analyze-known-libraries não está funcionando no Windows.
  2. No Windows, as seguintes pastas extras são geradas durante o processo de análise, mas não são removidas automaticamente após a conclusão. Talvez você queira remover essas pastas extras após a conclusão da análise.
    • metadata.
    • org.eclipse.osgi
    • org.eclipse.equinox.app
    • org.eclipse.core.runtime
    • org.eclipse.equinox.launcher
  3. O sinalizador --overrideProviderSettings não é suportado.
  4. O sinalizador --json-output não é suportado. Em uma versão futura, ele gera saídas JSON para os arquivos output.yaml e dependency.yaml .
  5. Questões de regras:
    • As regras azure-system-config-01000, http-session-01000, java-removals-00150 não estão sendo acionadas.
    • FileSystem - A regra Java IO não está sendo acionada
    • "incapaz de analisar todas as regras para o conjunto de regras" ao executar a análise. Este erro ocorre durante a análise quando a ferramenta não consegue analisar todas as regras no conjunto de regras.
  6. Analisar arquivos WAR no Windows produz o seguinte erro: Failed to Move Decompiled File. Ocorre um erro ao analisar arquivos WAR no Windows, que é responsável por alguns incidentes redundantes criados no sistema operacional Windows.
  7. Faltam descrições para algumas regras na guia Insights. Algumas regras de tag não têm descrições, levando a que títulos em branco apareçam na Insights guia do relatório.
  8. Erro no canal de erro do observador no Windows: Windows system assumed buffer larger than it is, events have likely been missed. Esta mensagem de erro aparece na linha de comando durante trabalhos de longa execução no Windows.
  9. Esta versão requer uma conexão ativa com a Internet para análise de dependência.
  10. +Ctrl C não consegue parar a análise contínua. Para contornar o problema, encerre manualmente o processo matando explicitamente o processo.
  11. Quando o sinalizador --context-lines é definido como um número 0, ele não funciona como esperado. Esse sinalizador permite que o usuário limite quanto do código-fonte deve aparecer no relatório. A configuração com um valor 0 pode não funcionar conforme o esperado.

Licença

O Azure Migrate application and code assessment for Java é uma ferramenta gratuita baseada em código aberto.