Anwendungs- und Codebewertung von Azure Migrate für Java Version 7 (Vorschau)
Hinweis
Dieser Artikel bezieht sich auf die nächste Generation der Anwendungs-und Codebewertung von Azure Migrate für Java, Version 7.x. Diese Version befindet sich in der Vorschau. Informationen zur vorherigen stabilen Version, Version 6.x, finden Sie unter Anwendungs- und Codebewertung von Azure Migrate für Java.
In diesem Artikel wird beschrieben, wie Sie das Azure Migrate-Tool zur Anwendungs- und Codebewertung für Java verwenden, um einen beliebigen Java-Anwendungstyp zu bewerten und auf eine neue Plattform zu verlagern. Mit dem Tool können Sie die Anwendungsbereitschaft für die Verlagerung auf eine neue Plattform und die Migration zu Azure bewerten. Dieses Tool wird als Befehlszeilenschnittstelle (CLI) angeboten und bewertet Binärdateien und Quellcode von Java-Anwendungen, um Möglichkeiten zum Verlagern auf eine andere Plattform oder zur Migration für Azure zu identifizieren. Es hilft Ihnen, große Java-Anwendungen zu modernisieren und auf eine neue Plattform zu verlagern, indem es häufige Anwendungsfälle und Codemuster identifiziert und empfohlene Änderungen vorschlägt.
Das Tool ermittelt durch eine statische Codeanalyse die Nutzung der Anwendungstechnologie, bietet eine Schätzung des Aufwands und beschleunigt die Verlagerung des Codes auf eine neue Plattform. Mithilfe dieser Bewertung können Sie Java-Anwendungen priorisieren und nach Azure verschieben. Mit einer Reihe von Engines und Regeln kann das Tool verschiedene Technologien wie Java 11, Java 17, Jakarta EE, Spring, Hibernate und Java Message Service (JMS) ermitteln und bewerten. Anschließend können Sie die Java-Anwendung mithilfe des Tools auf verschiedene Azure-Ziele (Azure App Service, Azure Kubernetes Service und Azure Container Apps) mit bestimmten entsprechenden Azure-Regeln auf eine andere Plattform verlagern.
Das Tool basiert auf einer Reihe von Komponenten im Konveyor-Projekt der Cloud Native Computing Foundation, das von Red Hat erstellt wurde und geleitet wird.
Übersicht
Das Tool soll Organisationen dabei unterstützen, ihre Java-Anwendungen so zu modernisieren, dass dabei die Kosten gesenkt und schnellere Innovationen ermöglicht werden. Das Tool verwendet erweiterte Analysetechniken, um die Struktur und Abhängigkeiten jeder Java-Anwendung zu verstehen, und bietet Anleitungen zum Umgestalten und Migrieren der Anwendungen zu Azure.
Mit dem Tool können Sie die folgenden Aufgaben ausführen:
- Ermitteln der Technologienutzung: Sehen Sie schnell, welche Technologien von einer Anwendung verwendet werden. Die Ermittlung ist nützlich, wenn Sie über ältere Anwendungen mit nicht viel Dokumentation verfügen und wissen möchten, welche Technologien sie verwenden.
- Bewerten des Codes für ein bestimmtes Ziel: Bewerten Sie eine Anwendung für ein bestimmtes Azure-Ziel. Überprüfen Sie den Aufwand und die Änderungen, die Sie vornehmen müssen, um Ihre Anwendungen zu Azure zu verlagern.
Unterstützte Ziele
Das Tool enthält Regeln, mit denen Sie Ihre Anwendungen auf eine neue Plattform verlagern können, damit Sie verschiedene Azure-Dienste bereitstellen und verwenden können.
Die Regeln, die durch die Anwendungs- und Codebewertung von Azure Migrate verwendeten werden, sind auf der Grundlage eines Ziels gruppiert. Ein Ziel beschreibt, wo oder wie die Anwendung ausgeführt wird, und enthält allgemeine Anforderungen und Erwartungen. Beim Bewerten einer Anwendung können Sie mehrere Ziele auswählen. In der folgenden Tabelle werden die verfügbaren Ziele beschrieben:
Zielname | Beschreibung | Ziel |
---|---|---|
Azure App Service | Best Practices für die Bereitstellung einer App in Azure App Service | azure-appservice |
Azure Kubernetes Service | Best Practices für die Bereitstellung einer App in Azure Kubernetes Service | azure-aks |
Azure Container Apps | Best Practices für die Bereitstellung einer App in Azure Container Apps | azure-container-apps |
Cloudbereitschaft | Allgemeine Best Practices zum Vorbereiten einer Anwendung für Cloud (Azure) | cloud-readiness |
Linux | Allgemeine Best Practices zum Vorbereiten einer Anwendung für Linux | linux |
OpenJDK 11 | Allgemeine Best Practices zum Ausführen einer Java 8-Anwendung mit Java 11 | openjdk11 |
OpenJDK 17 | Allgemeine Best Practices zum Ausführen einer Java 11-Anwendung mit Java 17 | openjdk17 |
OpenJDK 21 | Allgemeine Best Practices zum Ausführen einer Java 17-Anwendung mit Java 21 | openjdk21 |
Bei der Bewertung von Cloudbereitschaft und der zugehörigen Azure-Dienste kann das Tool außerdem nützliche Informationen für die potenzielle Nutzung verschiedener Azure-Dienste melden. In der folgenden Liste werden einige der behandelten Dienste aufgeführt:
- Azure-Datenbanken
- Azure Service Bus
- Azure Storage
- Übersicht über das Azure Content Delivery Network (CDN)
- Azure Event Hubs
- Azure Key Vault
- Azure Front Door
Herunterladen und Installieren
Um die appcat
-CLI zu verwenden, müssen Sie das für Ihre Umgebung spezifische Paket herunterladen und über die erforderlichen Abhängigkeiten in Ihrer Umgebung verfügen.
Die appcat
-CLI kann in jeder Umgebung ausgeführt werden, wie Windows, Linux oder Mac mit Intel-, ARM- und Apple Silicon-Hardware.
Für die JDK-Anforderung wird empfohlen, den Microsoft-Build von OpenJDK zu verwenden.
Betriebssystem | Aufbau | Link zum Herunterladen | Andere Dateien |
---|---|---|---|
x64 | |||
Windows | x64 | Download | sha256 / sig |
macOS | x64 | Download | sha256 / sig |
Linux | x64 | Download | sha256 / sig |
AArch64 | |||
Windows | AArch64/ARM64 | Download | sha256 / sig |
macOS | Apple Silicon | Download | sha256 / sig |
Linux | AArch64/ARM64 | Download | sha256 / sig |
Voraussetzungen
- Laden Sie den Microsoft-Build von OpenJDK 17 herunter, und installieren Sie ihn. Vergewissern Sie sich, dass die JAVA_HOME-Umgebungsvariable festgelegt wurde.
- Laden Sie Apache Maven herunter, und installieren Sie es lokal. Stellen Sie sicher, dass die Maven-Binärdatei (
mvn
) über diePATH
-Umgebungsvariable erreichbar ist. - Laden Sie Python 3 herunter, und installieren Sie es.
Installation
Um appcat
zu installieren, laden Sie die entsprechende ZIP-Datei für Ihre Plattform herunter. Nachdem Sie die Datei heruntergeladen haben, sollten Sie je nach Betriebssystem entweder eine .tar.gz-Datei (Linux/macOS) oder .zip-Datei (Windows) finden.
Extrahieren Sie die Binärdatei aus der heruntergeladenen Datei. Die folgende Ordnerstruktur sollte angezeigt werden:
/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
Ausführen des Tools
Option 1: Ausführen von appcat aus dem heruntergeladenen Ordner
Wechseln Sie zum Verzeichnis des extrahierten Ordners:
cd /azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
./appcat --help
Hinweis
Die appcat
-Binärdatei sucht zuerst nach ihren Abhängigkeiten im aktuellen Verzeichnis, in dem sie ausgeführt wird, und greift auf das folgende Szenario zurück, wenn sie nicht gefunden werden.
Option 2: Hinzufügen des Pfads der appcat-Binärdatei zu $PATH
Verschieben Sie den Inhalt des Ordners in den Ordner .appcat im Stammverzeichnis des Benutzers – $HOME/.appcat unter Linux/Mac und %USERPROFILE%/.appcat unter Windows.
Fügen Sie den Ordner .appcat zur PATH
-Umgebungsvariable hinzu, damit Sie das Tool in jedem Ordner im Terminal ausführen können.
mv <path-to-extracted>/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/ $HOME/.appcat
Hinweis
Wenn die appcat
-Binärdatei in diesem Kontext aus einem anderen Ordner aufgerufen wird als dem Installationsordner, sucht sie im Ordner .appcat im Stammverzeichnis des Benutzers nach ihren Abhängigkeiten.
Verbrauch
Unterbefehle
AppCAT bietet zwei Unterbefehle für die Verwendung:
analyze
: Ausführen der Quellcodeanalyse für Eingabequellcode oder eine Binärdatei.transform
: Konvertieren von XML-Regeln aus früheren Versionen (6 und älter) in das von dieser Version verwendete YAML-Format.
Hinweis
Für macOS-Benutzer: Wenn beim Versuch, die App auszuführen, ein Fehler mit dem Hinweis „Überprüfung durch Apple nicht möglich“ angezeigt wird, können Sie diesen Fehler mithilfe des folgenden Befehls beheben:
xattr -d -r com.apple.quarantine /path/to/appcat_binary
Zum Beispiel:
xattr -d -r com.apple.quarantine $HOME/.appcat/appcat
Analyze-Unterbefehl
Mit dem Unterbefehl analyze
können Sie Analysen für Quellcode und Binärdateien ausführen.
Führen Sie zum Analysieren des Anwendungsquellcodes den folgenden Befehl aus:
./appcat analyze --input=<path-to-source-code> --output=<path-to-output-directory> --target=azure-appservice --overwrite
Das --input
-Flag muss auf ein Quellcodeverzeichnis oder eine Binärdatei verweisen, und --output
muss auf ein Verzeichnis zum Speichern der Analyseergebnisse verweisen.
Wenn Sie weitere Informationen zu den Flags für die Analyse wünschen, führen Sie den folgenden Befehl aus:
./appcat analyze --help
Führen Sie den folgenden Befehl aus, um die verfügbaren Ziele für AppCAT zu bestimmen:
./appcat analyze --list-targets
Dieser Befehl erstellt die folgende Ausgabe:
available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
linux
openjdk11
openjdk17
openjdk21
Analysieren von mehreren Anwendungen
AppCAT ist für die Analyse einer einzelnen Anwendung pro Befehlsausführung konzipiert. Wenn Sie jedoch die Option --bulk
verwenden, können Sie mehrere Anwendungen in einer einzigen Ausführung analysieren. Diese Option generiert im Ausgabeverzeichnis einen einzelnen statischen Bericht, der die Ergebnisse für alle Anwendungen enthält.
Führen Sie den folgenden Befehl aus, um mehrere Anwendungen zu analysieren:
./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>
Transform-Unterbefehl
Mit dem transform
-Unterbefehl können Sie die vorherigen appcat
-XML-Regeln, die in der Version 6.x verwendet werden, in das neue YAML-Format konvertieren, das von dieser Version 7.x verwendet wird.
Führen Sie den folgenden Befehl aus, um Regeln zu transformieren:
./appcat transform rules --input=<path-to-xml-rules> --output=<path-to-output-directory>
Das --input
-Flag sollte auf eine Datei oder ein Verzeichnis mit XML-Regeln verweisen, und das --output
-Flag sollte auf das Ausgabeverzeichnis für die konvertierten YAML-Regeln verweisen.
Beispiele
Hinweis
Stellen Sie sicher, dass die Dateiberechtigungen für Skripts im extrahierten Ordner so festgelegt sind, dass die Ausführung zulässig ist.
Im samples-Ordner finden Sie eine Beispielwebanwendung namens airsonic.war. Airsonic ist ein webbasierter Medienstreamingdienst, der Zugriff auf Ihre Musik bietet und es Ihnen ermöglicht, sie mit Freunden zu teilen. Weitere Informationen zu Airsonic finden Sie unter Airsonic.
Im samples-Verzeichnis finden Sie die folgenden Skripts zum Ausführen verschiedener Analysetypen:
- run-assessment: Stellt einen Bericht mit einer Codebewertung und Schritten für die Migration von Airsonic zu Azure App Service auf Tomcat bereit.
- run-assessment-transform-rules: Konvertiert Windup-XML-Regeln in analyzer-lsp-kompatible YAML-Regeln.
- run-assessment-custom-rules: Stellt einen Codebewertungsbericht mithilfe von benutzerdefinierten Regeln bereit (Transformieren von XML in YAML).
- run-assessment-openjdk21: Generiert einen Bericht mit einer Codebewertung und Schritten für die Migration von Airsonic zu OpenJDK 21.
- run-assessment-package-only: Erstellt einen Bericht durch Bewertung bestimmter Pakete.
Führen Sie je nach Betriebssystem das entsprechende Skript aus, wie im folgenden Beispiel gezeigt:
./samples/run-assessment
Diese Berichte werden automatisch generiert und gestartet. Sie finden die Berichte unter ../samples/report-* (Linux/macOS) bzw. ..\samples\report-* (Windows).
Zusammenfassung der Analyse
Auf der Startseite des Berichts werden alle Technologien aufgelistet, die in der Anwendung verwendet werden. Das Dashboard bietet eine Zusammenfassung der Analyse, einschließlich der Anzahl der Transformationsvorfälle, der Vorfallkategorien oder der Story Points.
Wenn Sie das Kreisdiagramm Vorfälle nach Kategorie vergrößern, können Sie die Anzahl der Vorfälle nach Kategorie anzeigen: Obligatorisch, Optional und Potenziell.
Das Dashboard zeigt auch die Story Points. Die Story Points sind eine abstrakte Metrik, die häufig in der Agile-Softwareentwicklung verwendet wird, um den Aufwand zu schätzen, der erforderlich ist, um ein Feature oder eine Änderung zu implementieren. appcat
verwendet Story Points, um den Aufwand für die Migration einer bestimmten Anwendung auszudrücken. Story Points werden nicht unbedingt in Arbeitszeiten übersetzt, aber der Wert sollte für alle Aufgaben konsistent sein.
Bewertungsbericht
Der Bewertungsbericht gibt einen Überblick über die Transformationsprobleme, die gelöst werden müssen, um die Anwendung zu Azure zu migrieren.
Diese Probleme, auch als Vorfälle bezeichnet, haben einen Schweregrad (Obligatorisch, Optional oder Potenziell), einen Aufwand und eine Zahl, die die Story Points angibt. Die Story Points werden ermittelt, indem die Anzahl der Vorfälle mit dem Aufwand für die Behebung des Problems multipliziert werden.
Detaillierte Informationen zu einem bestimmten Problem
Für jeden Vorfall können Sie weitere Informationen (Problemdetails, den Inhalt der Regel usw.) abrufen, indem Sie ihn auswählen. Außerdem erhalten Sie die Liste aller Dateien, die von diesem Vorfall betroffen sind.
Anschließend können Sie für jede Datei oder Klasse, die vom Vorfall betroffen ist, in den Quellcode springen, um die Codezeile hervorzuheben, die das Problem erzeugt hat.
Versionshinweise
7.6.0.0
Dieses Release basiert auf einer anderen Gruppe von Komponenten des Konveyor-Projekts.
Allgemeine Updates
- Neues Modul basierend auf dem Projekt Konveyor Analyzer LSP mit einer CLI basierend auf dem Projekt Konveyor Kantra.
6.3.9.0
Dieses Release enthält die folgenden Korrekturen und eine Reihe neuer Regeln.
Allgemeine Updates
- Integrierte Änderungen aus dem Windup Upstreamrepository (6.3.9. finale Version).
- Behobene fehlerhafte Links in Regelbeschreibungen und Hilfetext.
Regeln
- Azure-Nachrichtenwarteschlange: aktualisierte und hinzugefügte neue Regeln für
azure-message-queue-rabbitmq
undazure-message-queue-amqp
. - Azure Service Bus: Es wurde eine Erkennungsregel für Azure Service Bus eingeführt.
- MySQL und PostgreSQL: verfeinerte Abhängigkeitserkennungsregeln.
- Azure-AWS-Regeln: Erweiterte und verbesserte vorhandene Regeln.
- S3 Spring Starter: Es wurde eine Erkennungsregel für S3 Spring Starter hinzugefügt.
- RabbitMQ Spring JMS: Es wurde eine Erkennungsregel für RabbitMQ Spring JMS hinzugefügt.
- Protokollierungsregeln: aktualisierte und verfeinerte protokollierungsbezogene Regeln.
- Regel für den lokalen Speicher: Die Regel für den lokalen Speicher wurde aktualisiert und verfeinert.
- Azure-Dateisystemregel: Die Azure-Dateisystemregel wurde aktualisiert und verfeinert.
Libraries
- Es wurde ein Update von Bibliotheken durchgeführt, um Sicherheitsrisiken zu beheben.
6.3.0.9
Dieses Release enthält die folgenden Korrekturen und eine Reihe neuer Regeln.
- Ein Problem mit der
localhost-java-00001
-Regel wurde behoben. - Es wurden neue Regeln zur Identifizierung von Technologien wie AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata und Alibaba Rocket MQ eingeführt.
azure-file-system-02000
wurde aktualisiert, um jetzt XML-Dateierweiterungen zu unterstützen.- Es wurde ein Upgrade verschiedener Bibliotheken durchgeführt, um Sicherheitsrisiken zu beheben.
6.3.0.8
Bislang wurde standardmäßig eine Reihe von Zielen aktiviert. Dadurch gestaltet sich das Bewerten großer Anwendungen mit zu vielen Incidents im Zusammenhang mit weniger kritischen Problemen für bestimmte Kunden als schwierig. Um Rauschen in Berichten zu verringern, müssen Benutzer beim Ausführen von appcat
jetzt mehrere Ziele mit dem --target
-Parameter angeben, wodurch sie lediglich die gewünschten Ziele auswählen können.
6.3.0.7
Allgemein verfügbares Release der Anwendungs- und Codebewertung von Azure Migrate.
Bekannte Probleme
7.6.0.0
- Das
--analyze-known-libraries
-Flag funktioniert unter Windows nicht. - Unter Windows werden die folgenden zusätzlichen Ordner während des Analysevorgangs generiert, aber nach Abschluss nicht automatisch entfernt. Sie können diese zusätzlichen Ordner nach Abschluss der Analyse entfernen.
- metadata.
- org.eclipse.osgi
- org.eclipse.equinox.app
- org.eclipse.core.runtime
- org.eclipse.equinox.launcher
- Das
--overrideProviderSettings
-Flag wird nicht unterstützt. - Das
--json-output
-Flag wird nicht unterstützt. In einem zukünftigen Release werden JSON-Ausgaben für die Dateien output.yaml und dependency.yaml generiert. - Regelprobleme:
- Die Regeln azure-system-config-01000, http-session-01000 und java-removals-00150 werden nicht ausgelöst.
- Die Regel FileSystem - Java IO wird nicht ausgelöst.
- Beim Ausführen der Analyse wird ein Fehler mit dieser Meldung angezeigt: „Es können nicht alle Regeln für den Regelsatz geparst werden“. Dieser Fehler tritt während der Analyse auf, wenn das Tool nicht alle Regeln im Regelsatz parst.
- Die Analyse von WAR-Dateien unter Windows führt zu folgendem Fehler:
Failed to Move Decompiled File
. Beim Analysieren von WAR-Dateien unter Windows tritt ein Fehler auf, der für einige redundante Vorfälle verantwortlich ist, die im Windows-Betriebssystem erstellt werden. - Fehlende Beschreibungen für einige Regeln auf der Registerkarte „Insights“. Bei einigen Regeln für Tags fehlen Beschreibungen, was dazu führt, dass auf der Registerkarte
Insights
des Berichts leere Titel angezeigt werden. - Fehler im Watcher-Fehlerkanal unter Windows:
Windows system assumed buffer larger than it is, events have likely been missed
. Diese Fehlermeldung wird in der Befehlszeile in Windows angezeigt, wenn die Ausführung von Aufträgen sehr lange dauert. - Dieses Release erfordert eine aktive Internetverbindung für die Abhängigkeitsanalyse.
- Mit STRG+C wird die laufende Analyse nicht beendet. Beheben Sie dieses Problem, indem Sie den Prozess manuell explizit beenden.
- Wenn das
--context-lines
-Flag auf die Zahl 0 festgelegt ist, funktioniert es nicht wie erwartet. Mit diesem Flag kann der Benutzer einschränken, wie viel Quellcode im Bericht angezeigt werden soll. Das Festlegen auf den Wert 0 funktioniert möglicherweise nicht wie erwartet.
Lizenz
Die Anwendungs- und Codebewertung von Azure Migrate für Java ist ein kostenloses Open-Source-Tool.