Partager via


Téléchargement de l’application et évaluation du code Azure Migrate pour Java version 7 (préversion)

Remarque

Cet article concerne la prochaine génération d’application et d’évaluation du code Azure Migrate pour Java, version 7.x. Cette version est en préversion. Pour connaître la version stable précédente, version 6.x, consultez l’application Azure Migrate et l’évaluation du code pour Java.

Cet article montre comment utiliser l’outil Azure Migrate d’évaluation des applications et du code pour Java afin d’évaluer et de déplacer n’importe quel type d’application Java vers une autre plateforme. L’outil vous permet d’évaluer si l’application est prête à un changement de plateforme, et à une migration vers Azure. Cet outil est proposé en tant qu’interface de ligne de commande (CLI) et évalue les fichiers binaires d’applications Java et le code source pour identifier les opportunités de replatformage et de migration pour Azure. Il vous aide à moderniser et à déplacer vers une autre plateforme les applications Java, à grande échelle, en identifiant les cas d’usage et les modèles de code courants ainsi qu’en préconisant des changements.

L’outil découvre l’utilisation de la technologie des applications par le biais de l’analyse statique du code, fournit une estimation des efforts et accélère la reformation du code. Cette évaluation vous permet de hiérarchiser et de déplacer des applications Java vers Azure. À l’aide d’un ensemble de moteurs et de règles, l’outil peut découvrir et évaluer différentes technologies telles que Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS), etc. L’outil vous aide ensuite à changer la plateforme de l’application Java vers différentes cibles Azure - Azure App Service, Azure Kubernetes Service et Azure Container Apps - à l’aide de règles de changement de plateforme Azure spécifiques.

L’outil est basé sur un ensemble de composants dans le projet Cloud Native Computing Foundation Konveyor, créé et dirigé par Red Hat.

Vue d’ensemble

L’outil est conçu pour aider les organisations à moderniser leurs applications Java de manière à réduire les coûts et à accélérer l’innovation. L’outil utilise des techniques d’analyse avancées pour comprendre la structure et les dépendances des applications Java. Il fournit des conseils d’aide sur la refactorisation et la migration des applications vers Azure.

L’avoir à vos côtés permet d’effectuer les tâches suivantes :

  • Découvrir les technologies utilisées : évaluez rapidement les technologies utilisées par une application. Cette découverte est utile si vous avez des applications héritées avec peu de documentation, et si vous souhaitez savoir quelles sont les technologies qu’elles utilisent.
  • Évaluer le code en fonction d’une cible spécifique : évaluez une application en fonction d’une cible Azure spécifique. Déterminez quels sont les efforts nécessaires et les modifications à effectuer pour déplacer vos applications vers une autre plateforme, notamment Azure.

Cibles prises en charge

L’outil contient des règles qui vous aident à changer la plateforme de vos applications pour pouvoir déployer et utiliser différents services Azure.

Les règles utilisées par l’application Azure Migrate et l’évaluation du code sont regroupées en fonction d’une cible. Une cible est l’endroit ou la façon dont l’application s’exécute, ainsi que les besoins généraux et les attentes. Lors de l’évaluation d’une application, vous pouvez choisir plusieurs cibles. Le tableau suivant décrit les cibles disponibles :

Nom de la cible Description Cible
Azure App Service Meilleures pratiques de déploiement d’une application sur Azure App Service. azure-appservice
Azure Kubernetes Service Meilleures pratiques de déploiement d’une application sur Azure Kubernetes Service. azure-aks
Azure Container Apps Meilleures pratiques de déploiement d’une application sur Azure Container Apps. azure-container-apps
État de préparation au cloud Bonnes pratiques générales pour préparer un cloud d’application (Azure). cloud-readiness
Linux Bonnes pratiques générales pour préparer une application à Linux. linux
OpenJDK 11 Bonnes pratiques générales pour l’exécution d’une application Java 8 avec Java 11. openjdk11
OpenJDK 17 Bonnes pratiques générales pour l’exécution d’une application Java 11 avec Java 17. openjdk17
OpenJDK 21 Bonnes pratiques générales pour l’exécution d’une application Java 17 avec Java 21. openjdk21

Lorsque l’outil évalue l’état de préparation au cloud et les services Azure associés, il peut également signaler des informations utiles sur l’utilisation potentielle de différents services Azure. La liste suivante présente quelques-uns des services couverts :

  • Bases de données Azure
  • Azure Service Bus
  • Stockage Azure
  • Azure Content Delivery Network
  • Azure Event Hubs
  • Azure Key Vault
  • Azure Front Door

Télécharger et installer

Pour utiliser l’interface CLI appcat, vous devez télécharger le package spécifique à votre environnement et avoir les dépendances requises dans votre environnement. L’interface appcat CLI s’exécute sur n’importe quel environnement tel que Windows, Linux ou Mac, à l’aide d’Intel, d’Arm ou de matériel Apple Silicon. Pour les exigences JDK, nous vous recommandons d’utiliser la build Microsoft d’OpenJDK.

Système d’exploitation Architecture Lien de téléchargement Autres fichiers
x64
Windows x64 Télécharger sha256 / sig
macOS x64 Télécharger sha256 / sig
Linux x64 Télécharger sha256 / sig
AArch64
Windows AArch64 / ARM64 Télécharger sha256 / sig
macOS Apple Silicon Télécharger sha256 / sig
Linux AArch64 / ARM64 Télécharger sha256 / sig

Prérequis

Installation

Pour installer appcat, téléchargez le fichier zip approprié pour votre plateforme. Après avoir téléchargé le fichier, selon votre système d’exploitation, vous devez trouver un fichier .tar.gz (Linux/macOS) ou .zip (Windows).

Extrayez le fichier binaire à partir du fichier téléchargé. Vous devez voir la structure de dossiers suivante :

/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

Exécution de l’outil

Option 1 : exécuter appcat à partir du dossier téléchargé

Remplacez le répertoire par le dossier extrait :

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

Remarque

Le fichier binaire appcat recherche d’abord ses dépendances dans le répertoire actif, où il s’exécute et revient au scénario suivant s’il n’est pas trouvé.

Option 2 : ajouter le chemin binaire appcat à votre $PATH

Déplacez le contenu du dossier vers le dossier .appcat dans le répertoire de base de l’utilisateur - $HOME/.appcat sur Linux/Mac et %USERPROFILE%/.appcat sur Windows.

Ajoutez le dossier .appcat à votre variable d’environnement PATH pour pouvoir exécuter l’outil à partir de n’importe quel dossier du terminal.

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

Remarque

Dans ce contexte, lorsque le fichier binaire appcat est appelé à partir d’un dossier différent de celui où il est installé, il recherche ses dépendances dans le dossier .appcat dans le répertoire de base de l’utilisateur.

Utilisation

Sous-commandes

AppCAT fournit deux sous-commandes pour l’utilisation :

  • analyze : exécutez l’analyse du code source sur le code source d’entrée ou un binaire.
  • transform↓: convertissez des règles XML des versions précédentes (6 et antérieures) au format YAML utilisé par cette version.

Remarque

Pour les utilisateurs macOS : si vous rencontrez une erreur indiquant « Apple n’a pas pu vérifier » lors de la tentative d’exécution de l’application, vous pouvez résoudre cette erreur à l’aide de la commande suivante :

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

Par exemple :

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

Analyser la sous-commande

La sous-commande analyze vous permet d’exécuter le code source et l’analyse binaire.

Pour analyser le code source de l’application, exécutez la commande suivante :

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

L’indicateur --input doit pointer vers un répertoire de code source ou un fichier binaire, et --output doit pointer vers un répertoire pour stocker les résultats de l’analyse.

Pour plus d’informations sur les indicateurs d’analyse, exécutez la commande suivante :

./appcat analyze --help

Pour vérifier quelles sont les cibles disponibles pour AppCAT, exécutez la commande suivante :

./appcat analyze --list-targets

Cette commande génère la sortie suivante :

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

Analyse de plusieurs applications

AppCAT est conçu pour analyser une application unique par exécution de commande, mais si vous utilisez l’option --bulk, vous pouvez analyser plusieurs applications dans une seule exécution. Cette option génère un rapport statique unique dans le répertoire de sortie qui inclut les résultats de toutes les applications.

Pour analyser plusieurs applications, exécutez la commande suivante :

./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>

Transformer une sous-commande

La sous-commande transform vous permet de convertir les règles XML précédentes appcat utilisées dans la version 6.x dans le nouveau format YAML utilisé par cette version 7.x.

Pour transformer des règles, exécutez la commande suivante :

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

L’indicateur --input doit pointer vers un fichier ou un répertoire contenant des règles XML, et l’indicateur --output doit pointer vers le répertoire de sortie des règles YAML converties.

Exemples

Remarque

Vérifiez que les autorisations de fichier pour les scripts dans le dossier extrait sont définies pour autoriser l’exécution.

Dans le dossier d’exemples, vous trouverez un exemple d’application web appelée airsonic.war. Airsonic est un diffuseur multimédia basé sur le web, fournissant l’accès à votre musique et vous permettant de le partager avec des amis. Pour en savoir plus sur Airsonic, consultez Airsonic.

Dans le répertoire d’exemples, vous trouverez les scripts suivants pour exécuter différents types d’analyse :

  • run-assessment : fournit un rapport avec l’évaluation du code et les étapes de migration d’Airsonic vers Azure App Service sur Tomcat.
  • run-assessment-transform-rules : convertit les règles XML Windup en règles YAML compatibles avec analyzer-lsp.
  • run-assessment-custom-rules : fournit un rapport d’évaluation du code à l’aide de règles personnalisées (transformez du code XML en YAML).
  • run-assessment-openjdk21 : génère un rapport avec l’évaluation du code et les étapes de migration d’Airsonic vers OpenJDK 21.
  • run-assessment-package-only : produit un rapport en évaluant des packages spécifiques.

Selon votre système d’exploitation, exécutez le script approprié, comme indiqué dans l’exemple suivant :

./samples/run-assessment

Les rapports sont générés et lancés automatiquement. Vous trouverez les rapports sous ../samples/report-* (Linux/macOS) ou ..\samples\report-* (Windows).

Résumé de l’analyse

La page d’arrivée du rapport liste toutes les technologies utilisées dans l’application. Le tableau de bord fournit un résumé de l’analyse notamment des informations sur le nombre d’incidents de transformation, les catégories d’incidents ou les story points.

Capture d’écran du rapport sous forme de résumé appcat.

Quand vous effectuez un zoom avant sur le graphique en secteurs Incidents par catégorie, vous pouvez voir le nombre d’incidents par catégorie : Obligatoire, Facultatif, and Potentiel.

Le tableau de bord montre également les story points. Les story points sont une métrique abstraite couramment utilisée en Agile software development afin d’estimer le niveau d’effort nécessaire pour implémenter une fonctionnalité ou un changement. appcat utilise des story points pour indiquer le niveau d’effort nécessaire à la migration d’une application particulière. Les story points ne se traduisent pas nécessairement en heures de travail, mais la valeur doit être cohérente d’une tâche à l’autre.

Capture d’écran du rapport d’incident dans le résumé AppCAT.

Rapport d’évaluation

Le rapport d’évaluation fournit une vue d’ensemble des problèmes de transformation à résoudre pour migrer l’application vers Azure.

Ces problèmes, également appelés incidents, sont associés à un niveau de gravité (Obligatoire, Facultatif ou Potentiel), un niveau d’effort et un nombre de story points. Les story points sont déterminés par le calcul du nombre d’incidents multiplié par le niveau d’effort nécessaire à la résolution du problème.

Capture d’écran du rapport d’évaluation AppCAT.

Informations détaillées sur un problème spécifique

Pour chaque incident, vous pouvez obtenir plus d’informations (détails du problème, contenu de la règle, etc.) en le sélectionnant simplement. Vous obtenez également la liste de tous les fichiers affectés par cet incident.

Capture d’écran du rapport des détails d’un problème AppCAT.

Puis, pour chaque fichier ou classe affectée par l’incident, vous pouvez accéder directement au code source afin de mettre en évidence la ligne de code à l’origine du problème.

Capture d’écran du rapport des problèmes de code AppCAT.

Notes de publication

7.6.0.0

Cette version est basée sur un ensemble différent de composants du projet Konveyor.

Mises à jour générales

6.3.9.0

Cette version contient les correctifs suivants et inclut un ensemble de nouvelles règles.

Mises à jour générales

  • Modifications intégrées du référentiel en amont Windup (version 6.3.9.Finale).
  • Les liens rompus résolus dans les descriptions des règles et le texte d’aide ont été résolus.

Règles

  • File d’attente de messages Azure : mise à jour et ajout de nouvelles règles pour azure-message-queue-rabbitmq et azure-message-queue-amqp.
  • Azure Service Bus : a introduit une règle de détection pour Azure Service Bus.
  • MySQL et PostgreSQL : règles de détection de dépendance affinées.
  • Règles Azure AWS : règles ajustées et améliorées.
  • S3 Spring Starter : ajout d’une règle de détection pour S3 Spring Starter.
  • RabbitMQ Spring JMS : ajout d’une règle de détection pour RabbitMQ Spring JMS.
  • Règles de journalisation : règles de journalisation mises à jour et affinées.
  • Règle de stockage local : mise à jour et amélioration de la règle de stockage local.
  • Règle de système de fichiers Azure : mise à jour et amélioration de la règle du système de fichiers Azure.

Bibliothèques

  • Mise à jour de différentes bibliothèques pour résoudre les vulnérabilités de sécurité.

6.3.0.9

Cette version contient les correctifs suivants et inclut un ensemble de nouvelles règles.

  • Résolution d’un problème avec la règle de localhost-java-00001.
  • Introduction de nouvelles règles d’identification des technologies telles que AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata et Alibaba Rocket MQ.
  • azure-file-system-02000 mis à jour pour prendre désormais en charge les extensions de fichier XML.
  • Mise à niveau de différentes bibliothèques pour résoudre les vulnérabilités de sécurité.

6.3.0.8

Auparavant, un ensemble de cibles était activé par défaut, ce qui rendait difficile pour certains clients d’évaluer des applications volumineuses présentant trop d’incidents liés à des problèmes moins critiques. Pour réduire le bruit dans les rapports, les utilisateurs doivent désormais spécifier plusieurs cibles, avec le paramètre --target, lors de l’exécution de appcat, en leur donnant la possibilité de sélectionner uniquement les cibles qui leur importent.

6.3.0.7

Version en disponibilité générale de l’évaluation des applications et du code Azure Migrate.

Problèmes connus

7.6.0.0

  1. L’indicateur --analyze-known-libraries ne fonctionne pas sur Windows.
  2. Sur Windows, les dossiers supplémentaires suivants sont générés pendant le processus d’analyse, mais ne sont pas automatiquement supprimés après l’achèvement. Vous pouvez supprimer ces dossiers supplémentaires une fois l’analyse terminée.
    • metadata.
    • org.eclipse.osgi
    • org.eclipse.equinox.app
    • org.eclipse.core.runtime
    • org.eclipse.equinox.launcher
  3. L’indicateur --overrideProviderSettings n’est pas pris en charge.
  4. L’indicateur --json-output n’est pas pris en charge. Dans une version ultérieure, il génère des sorties JSON pour les fichiers output.yaml et dependency.yaml.
  5. Problèmes de règles :
    • azure-system-config-01000, http-session-01000, java-removals-00150 règles ne sont pas déclenchées.
    • La règle FileSystem - Java E/S n’est pas déclenchée
    • « impossible d’analyser toutes les règles pour le jeu de règles » lors de l’exécution de l’analyse. Cette erreur se produit lors de l’analyse lorsque l’outil ne parvient pas à analyser toutes les règles dans l’ensemble de règles.
  6. L’analyse des fichiers WAR sur Windows génère l’erreur suivante : Failed to Move Decompiled File. Une erreur se produit lors de l’analyse des fichiers WAR sur Windows, qui est responsable de quelques incidents redondants créés sur le système d’exploitation Windows.
  7. Descriptions manquantes pour certaines règles de l’onglet Insights. Certaines règles de balise manquent de descriptions, ce qui entraîne l’affichage de titres vides sous l’onglet Insights du rapport.
  8. Erreur dans le canal d’erreur Watcher sur Windows : Windows system assumed buffer larger than it is, events have likely been missed. Ce message d’erreur s’affiche sur la ligne de commande pendant les travaux de longue durée sur Windows.
  9. Cette version nécessite une connexion Internet active pour l’analyse des dépendances.
  10. Ctrl+C ne parvient pas à arrêter l’analyse en cours. Pour contourner ce problème, arrêtez manuellement le processus en tuant explicitement le processus.
  11. Lorsque l’indicateur --context-lines est défini sur un nombre 0, il ne fonctionne pas comme prévu. Cet indicateur permet à l’utilisateur de limiter la quantité de code source qui doit apparaître sur le rapport. La définition d’une valeur 0 peut ne pas fonctionner comme prévu.

Licence

L’application et l’évaluation du code Azure Migrate pour Java sont un outil open source gratuit.