Compartir a través de


Evaluación de aplicaciones y códigos de Azure Migrate para Java versión 7 (versión preliminar)

Nota:

Este artículo es para la última generación de Evaluación de aplicaciones y códigos de Azure Migrate para Java, versión 7.x. Se encuentra en versión preliminar. Para obtener la versión estable anterior, versión 6.x, vea Evaluación de aplicaciones y códigos de Azure Migrate para Java.

En este artículo se muestra cómo usar la herramienta de evaluación de aplicaciones y códigos de Azure Migrate para Java a fin de evaluar y expandir cualquier tipo de aplicación Java. La herramienta le permite evaluar la preparación de la aplicación para la migración y la replanificación a Azure. Esta herramienta se ofrece como una interfaz de línea de comandos (CLI) y evalúa los archivos binarios de la aplicación Java y el código fuente a fin de identificar las oportunidades de migración y expansión para Azure. Le ayuda a modernizar y replanificar aplicaciones Java a gran escala mediante la identificación de casos de uso comunes y patrones de código y la propuesta de cambios recomendados.

La herramienta detecta el uso de la tecnología de la aplicación mediante el análisis estático de código, proporciona estimación de esfuerzo y acelera la expansión del código. Esta evaluación le ayuda a priorizar y mover aplicaciones Java a Azure. Con un conjunto de motores y reglas, la herramienta puede detectar y evaluar diferentes tecnologías como Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) y más. Después, la herramienta le ayuda a expandir la aplicación Java a diferentes destinos de Azure (Azure App Service, Azure Kubernetes Service y Azure Container Apps) con reglas específicas de expansión de Azure.

La herramienta se basa en un conjunto de componentes del proyecto Konveyor de Cloud Native Computing Foundation, creado y liderado por Red Hat.

Información general

La herramienta está diseñada para ayudar a las organizaciones a modernizar sus aplicaciones Java de forma que reduzca los costos y permita una innovación más rápida. La herramienta usa técnicas de análisis avanzadas para comprender la estructura y las dependencias de cualquier aplicación de Java y proporciona instrucciones sobre cómo refactorizar y migrar las aplicaciones a Azure.

Con ella, podrá realizar las siguientes tareas:

  • Detectar el uso de la tecnología: vea rápidamente qué tecnologías usa una aplicación. La detección es útil si tiene aplicaciones heredadas con poca documentación y quiere saber qué tecnologías usan.
  • Evaluar el código para un destino específico: evalúe una aplicación para un destino específico de Azure. Compruebe el esfuerzo y las modificaciones que debe realizar para cambiar la plataforma de sus aplicaciones a Azure.

Destinos admitidos

La herramienta contiene reglas que le ayudarán a cambiar la plataforma de sus aplicaciones para que pueda implementarlas y usar diferentes servicios de Azure.

Las reglas utilizadas por la evaluación de códigos y aplicaciones de Azure Migrate se agrupan según un destino. Un destino es dónde o cómo se ejecuta la aplicación, y las necesidades y expectativas generales. Al evaluar una aplicación, puede elegir varios destinos. En la tabla siguiente se describen los destinos disponibles:

Nombre de destino Descripción Destino
Azure App Service Procedimientos recomendados para implementar una aplicación en Azure App Service. azure-appservice
Azure Kubernetes Service Procedimientos recomendados para implementar una aplicación en Azure Kubernetes Service. azure-aks
Azure Container Apps Procedimientos recomendados para implementar una aplicación en Azure Container Apps. azure-container-apps
Preparación para la nube Procedimientos recomendados generales para preparar una aplicación en la nube (Azure). cloud-readiness
Linux Procedimientos recomendados generales para preparar una aplicación para Linux. linux
OpenJDK 11 Procedimientos recomendados generales para ejecutar una aplicación de Java 8 con Java 11. openjdk11
OpenJDK 17 Procedimientos recomendados generales para ejecutar una aplicación de Java 11 con Java 17. openjdk17
OpenJDK 21 Procedimientos recomendados generales para ejecutar una aplicación de Java 17 con Java 21. openjdk21

Cuando la herramienta evalúa la preparación para la nube y los servicios de Azure relacionados, también puede notificar información útil para el posible uso de diferentes servicios de Azure. En la lista siguiente se muestran algunos de los servicios cubiertos:

  • Bases de datos de Azure
  • Azure Service Bus
  • Azure Storage
  • Azure Content Delivery Network
  • Azure Event Hubs
  • Azure Key Vault
  • Azure Front Door

Descarga e instalación

Para usar la CLI de appcat, debe descargar el paquete específico del entorno y tener las dependencias necesarias en el entorno. La CLI de appcat se ejecuta en cualquier entorno, como Windows, Linux o Mac, tanto para hardware Intel, Arm o Apple Silicon. Para el requisito del JDK, se recomienda usar Microsoft Build de OpenJDK.

SO Arquitectura Vínculo de descarga Otros archivos
x64
Windows x64 Descargar sha256 / sig
macOS x64 Descargar sha256 / sig
Linux x64 Descargar sha256 / sig
AArch64
Windows AArch64/ARM64 Descargar sha256 / sig
macOS Apple Silicon Descargar sha256 / sig
Linux AArch64/ARM64 Descargar sha256 / sig

Requisitos previos

Instalación

Para instalar appcat, descargue el archivo ZIP adecuado para la plataforma. Después de descargar el archivo, en función del sistema operativo, debe encontrar un archivo .tar.gz (Linux/macOS) o .zip (Windows).

Extraiga el binario del archivo descargado. Debería ver la siguiente estructura de carpetas:

/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

Ejecución de la herramienta

Opción 1: Ejecución de appcat desde la carpeta descargada

Cambie el directorio a la carpeta extraída:

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

Nota:

El binario appcat busca primero sus dependencias en el directorio actual, desde donde se ejecuta, y recurre al escenario siguiente si no se encuentran.

Opción 2: Adición de la ruta de acceso del binario appcat a $PATH

Mueva el contenido de la carpeta a la carpeta .appcat del directorio principal del usuario: $HOME/.appcat en Linux/Mac y %USERPROFILE%/.appcat en Windows.

Agregue la carpeta .appcat a la variable de entorno PATH para poder ejecutar la herramienta desde cualquier carpeta del terminal.

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

Nota:

En este contexto, cuando se llama al archivo binario appcat desde una carpeta diferente a donde está instalado, busca sus dependencias en la carpeta .appcat en el directorio principal del usuario.

Uso

Subcomandos

AppCAT proporciona dos subcomandos para su uso:

  • analyze: ejecute el análisis de código fuente en el código fuente de entrada o en un binario.
  • transform: convierta reglas XML de versiones anteriores (6 y anteriores) al formato YAML usado por esta versión.

Nota:

Para los usuarios de macOS: si se produce un error que indica "No se ha podido comprobar Apple" al intentar ejecutar la aplicación, se puede resolver mediante el siguiente comando:

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

Por ejemplo:

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

Subcomando Analyze

El subcomando analyze permite ejecutar el análisis de código fuente y archivos binarios.

Para analizar el código fuente de la aplicación, ejecute el siguiente comando:

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

La marca --input debe apuntar a un directorio de código fuente o a un archivo binario, y --output debe apuntar a un directorio para almacenar los resultados del análisis.

Para más información sobre las marcas de analyze, ejecute el siguiente comando:

./appcat analyze --help

A fin de comprobar los destinos disponibles para AppCAT, ejecute el siguiente comando:

./appcat analyze --list-targets

Este comando genera el siguiente resultado:

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

Análisis de varias aplicaciones

AppCAT está diseñado para analizar una sola aplicación por cada ejecución de comandos, pero si usa la opción --bulk, puede analizar varias aplicaciones en una sola ejecución. Esta opción genera un único informe estático en el directorio de salida que incluye los resultados de todas las aplicaciones.

Para analizar varias aplicaciones, ejecute el siguiente 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 Transform

El subcomando transform permite convertir las reglas XML de appcat anteriores usadas en la versión 6.x al nuevo formato YAML usado por esta versión 7.x.

Para transformar reglas, ejecute el siguiente comando:

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

La marca --input debe apuntar a un archivo o directorio que contenga reglas XML y la marca --output debe apuntar al directorio de salida para las reglas YAML convertidas.

Ejemplos

Nota:

Asegúrese de que los permisos de archivo de los scripts de la carpeta extraída estén establecidos para permitir la ejecución.

En la carpeta samples puede encontrar una aplicación web de ejemplo denominada airsonic.war. Airsonic es un transmisor multimedia basado en web, que proporciona acceso a la música y le permite compartirla con amigos. Para más información sobre Airsonic, vea Airsonic.

En el directorio samples puede encontrar los siguientes scripts para ejecutar diferentes tipos de análisis:

  • run-assessment: proporciona un informe con la evaluación del código y los pasos para migrar Airsonic a Azure App Service en Tomcat.
  • run-assessment-transform-rules: convierte las reglas XML de Windup en reglas YAML compatibles con analyzer-lsp.
  • run-assessment-custom-rules: proporciona un informe de evaluación de código mediante reglas personalizadas (se transforma XML en YAML).
  • run-assessment-openjdk21: genera un informe con la evaluación del código y los pasos para migrar Airsonic a OpenJDK 21.
  • run-assessment-package-only: genera un informe mediante la evaluación de paquetes específicos.

En función del sistema operativo, ejecute el script adecuado, como se muestra en el ejemplo siguiente:

./samples/run-assessment

Los informes se generan e inician de manera automática. Puede encontrar los informes en ../samples/report-* (Linux/macOS) o ..\samples\report-* (Windows).

Resumen del análisis

La página de aterrizaje del informe enumera todas las tecnologías que se usan en la aplicación. El panel proporciona un resumen del análisis, incluido el número de incidentes de transformación, las categorías de incidentes o los grados de dificultad del caso.

Captura de pantalla del informe de resumen de appcat.

Al acercar el gráfico circular Incidentes por categoría, puede ver el número de incidentes por categoría: Obligatorio, Opcional y Potencial.

El panel también muestra los grados de dificultad del caso. Los grados de dificultad del caso son una métrica abstracta que se usa habitualmente en Agile Software Development para calcular el nivel de esfuerzo necesario para implementar una característica o un cambio. appcat usa grados de dificultad del caso para expresar el nivel de esfuerzo necesario para migrar una aplicación determinada. Los grados de dificultad del caso no se traducen necesariamente en horas de trabajo, pero el valor debe ser coherente en todas las tareas.

Captura de pantalla del informe de incidentes de resumen de AppCAT.

Informe de evaluación

El informe de valoración proporciona información general sobre los problemas de transformación que tendrían que resolverse para migrar la aplicación a Azure.

Estos Problemas, también denominados Incidentes, tienen una gravedad (Obligatorio,Opcional o Potencial), un nivel de esfuerzo y un número que indica los grados de dificultad del caso. Los grados de dificultad del caso se determinan calculando el número de incidentes durante el esfuerzo necesario para solucionar el problema.

Captura de pantalla del informe de valoración de AppCAT.

Información detallada de un problema específico

Para cada incidente, puede obtener más información (el detalle del problema, el contenido de la regla, etc.) simplemente seleccionándolo. También obtendrá la lista de todos los archivos afectados por este incidente.

Captura de pantalla del informe de detalles del problema de AppCAT.

A continuación, para cada archivo o clase afectado por el incidente, puede saltar al código fuente para resaltar la línea de código que creó el problema.

Captura de pantalla del informe de código de problema de AppCAT.

Notas de la versión

7.6.0.1

Esta versión contiene las siguientes correcciones y mejoras.

  • Marca --analyze-known-libraries: no funciona en Windows.
  • Limpieza de directorios: los directorios adicionales creados durante el análisis en Windows ahora se limpian automáticamente.
  • Marca --json-output: ya operativa.
  • Error de análisis de reglas: se ha resuelto el error unable to parse all the rules for ruleset.
  • Descripciones de la pestaña Insights: se han agregado descripciones de reglas que faltan.
  • Dependencia de conexión a Internet: ya no se produce un error en el análisis sin una conexión a Internet.
  • Marca --context-lines: ahora se comporta según lo previsto cuando se establece en 0.
  • Se ha quitado el requisito de Python para ejecutar la herramienta.

7.6.0.0

Esta versión se basa en un otro conjunto de componentes del proyecto Konveyor.

Actualizaciones generales

6.3.9.0

Esta versión contiene las siguientes correcciones e incluye un conjunto de reglas nuevas.

Actualizaciones generales

  • Cambios integrados del repositorio ascendente de Windup (versión 6.3.9.Final).
  • Vínculos rotos resueltos en descripciones de reglas y texto de ayuda.

Reglas

  • Cola de mensajes de Azure: se han actualizado y agregado nuevas reglas para azure-message-queue-rabbitmq y azure-message-queue-amqp.
  • Azure Service Bus: introdujo una regla de detección para Azure Service Bus.
  • MySQL y PostgreSQL: se han refinado las reglas de detección de dependencias.
  • Reglas de Azure-AWS: reglas existentes mejoradas y mejoradas.
  • S3 Spring Starter: se ha agregado una regla de detección para S3 Spring Starter.
  • RabbitMQ Spring JMS: se ha agregado una regla de detección para RabbitMQ Spring JMS.
  • Reglas de registro: reglas actualizadas y refinadas relacionadas con el registro.
  • Regla de almacenamiento local: se ha actualizado y refinado la regla de almacenamiento local.
  • Regla del sistema de archivos de Azure: se ha actualizado y refinado la regla del sistema de archivos de Azure.

Bibliotecas

  • Se han actualizado las bibliotecas para abordar las vulnerabilidades de seguridad.

6.3.0.9

Esta versión contiene las siguientes correcciones e incluye un conjunto de reglas nuevas.

  • Se ha resuelto un problema con la regla localhost-java-00001.
  • Se introdujeron nuevas reglas para identificar tecnologías como AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata y Alibaba Rocket MQ.
  • Se ha actualizado azure-file-system-02000 para que ahora admita extensiones de archivo XML.
  • Se han actualizado varias bibliotecas para abordar las vulnerabilidades de seguridad.

6.3.0.8

Anteriormente, un conjunto de destinos se habilitaba de forma predeterminada, lo que dificultaba que determinados clientes evaluaran aplicaciones grandes con demasiados incidentes relacionados con problemas menos críticos. Para reducir el ruido en los informes, los usuarios ahora deben especificar varios destinos, con el parámetro --target, al ejecutar appcat, lo que les da la opción de seleccionar solo los destinos que importan.

6.3.0.7

Versión de disponibilidad general (disponible con carácter general) de la evaluación de código y la aplicación de Azure Migrate.

Problemas conocidos

7.6.0.1

  • No se admite la marca --overrideProviderSettings.
  • Problemas de reglas:
    • Las reglas azure-system-config-01000, http-session-01000 y java-removals-00150 no se desencadenan.
    • La regla FileSystem - Java IO no se desencadena.
  • El análisis de archivos WAR en Windows genera el siguiente error: Failed to Move Decompiled File. Se produce un error al analizar archivos WAR en Windows, que es responsable de algunos incidentes redundantes creados en el sistema operativo Windows.
  • Error en el canal Error de Monitor en Windows: Windows system assumed buffer larger than it is, events have likely been missed. Este mensaje de error aparece en la línea de comandos durante los trabajos de ejecución prolongada en Windows.
  • Ctrl+C no puede detener el análisis en curso. Para solucionarlo, finalice manualmente el proceso mediante su eliminación explícita.
  • En los informes de análisis binarios, el título del fragmento de código muestra una ruta de acceso de archivo incorrecta o inexistente.

7.6.0.0

  • La marca --analyze-known-libraries no funciona en Windows.
  • En Windows, se generan las siguientes carpetas adicionales durante el proceso de análisis, pero no se quitan automáticamente después de la finalización. Es posible que quiera quitar estas carpetas adicionales una vez que finalice el análisis.
    • metadata.
    • org.eclipse.osgi
    • org.eclipse.equinox.app
    • org.eclipse.core.runtime
    • org.eclipse.equinox.launcher
  • No se admite la marca --overrideProviderSettings.
  • No se admite la marca --json-output. En una versión futura, genera salidas JSON para los archivos output.yaml y dependency.yaml.
  • Problemas de reglas:
    • Las reglas azure-system-config-01000, http-session-01000 y java-removals-00150 no se desencadenan.
    • La regla FileSystem - Java IO no se desencadena.
    • Error unable to parse all the rules for ruleset al ejecutar el análisis. Este error se produce durante el análisis cuando la herramienta no puede analizar todas las reglas del conjunto de reglas.
  • El análisis de archivos WAR en Windows genera el siguiente error: Failed to Move Decompiled File. Se produce un error al analizar archivos WAR en Windows, que es responsable de algunos incidentes redundantes creados en el sistema operativo Windows.
  • Faltan descripciones de algunas reglas en la pestaña Insights. Algunas reglas de etiqueta carecen de descripciones, lo que genera títulos en blanco que aparecen en la pestaña Insights del informe.
  • Error en el canal Error de Monitor en Windows: Windows system assumed buffer larger than it is, events have likely been missed. Este mensaje de error aparece en la línea de comandos durante los trabajos de ejecución prolongada en Windows.
  • Esta versión necesita una conexión a Internet activa para el análisis de dependencias.
  • Ctrl+C no puede detener el análisis en curso. Para solucionarlo, finalice manualmente el proceso mediante su eliminación explícita.
  • Cuando la marca --context-lines se establece en un número 0, no funciona según lo previsto. Esta marca permite al usuario limitar la cantidad de código fuente que debe aparecer en el informe. Es posible que establecer en un valor 0 no funcione según lo previsto.

Licencia

La evaluación de aplicaciones y códigos de Azure Migrate para Java es una herramienta gratuita basada en código abierto.