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
- Descargue e instale Microsoft Build de OpenJDK 17. Confirme que la variable de entorno JAVA_HOME está establecida.
-
Descargue Apache Maven e instálelo en el entorno local. Asegúrese de que el binario de Maven (
mvn
) sea accesible desde la variable de entornoPATH
. - Descargue e instale Python 3.
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.
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.
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.
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.
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.
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
- Nuevo motor basado en el proyecto Konveyor Analyzer LSP, con una CLI basada en el proyecto Konveyor Kantra.
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
yazure-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
yjava-removals-00150
no se desencadenan. - La regla
FileSystem - Java IO
no se desencadena.
- Las 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. - 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
yjava-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.
- Las 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.