Azure Migrate-program och kodutvärdering för Java version 7 (förhandsversion)
Kommentar
Den här artikeln gäller nästa generations Azure Migrate-program och kodutvärdering för Java, version 7.x. Den här versionen är i förhandsversion. Den tidigare stabila versionen, version 6.x, finns i Azure Migrate-program och kodutvärdering för Java.
Den här artikeln visar hur du använder Azure Migrate-programmet och kodutvärderingsverktyget för Java för att utvärdera och omplatforma alla typer av Java-program. Med verktyget kan du utvärdera programberedskapen för omplatformning och migrering till Azure. Det här verktyget erbjuds som ett kommandoradsgränssnitt (CLI) och utvärderar Java-programbinärfiler och källkod för att identifiera omplatformnings- och migreringsmöjligheter för Azure. Det hjälper dig att modernisera och omplatforma storskaliga Java-program genom att identifiera vanliga användningsfall och kodmönster och föreslå rekommenderade ändringar.
Verktyget identifierar användning av programteknik via statisk kodanalys, ger uppskattning av arbete och påskyndar kodomläggning. Den här utvärderingen hjälper dig att prioritera och flytta Java-program till Azure. Med en uppsättning motorer och regler kan verktyget identifiera och utvärdera olika tekniker som Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) med mera. Verktyget hjälper dig sedan att omplatforma Java-programmet till olika Azure-mål – Azure App Service, Azure Kubernetes Service och Azure Container Apps – med specifika Azure-omplatformningsregler.
Verktyget baseras på en uppsättning komponenter i Cloud Native Computing Foundation-projektetKonveyor, som skapats och leds av Red Hat.
Översikt
Verktyget är utformat för att hjälpa organisationer att modernisera sina Java-program på ett sätt som minskar kostnaderna och möjliggör snabbare innovation. Verktyget använder avancerade analystekniker för att förstå strukturen och beroendena för alla Java-program och ger vägledning om hur du omstrukturerar och migrerar programmen till Azure.
Med den kan du utföra följande uppgifter:
- Identifiera teknikanvändning: Se snabbt vilka tekniker ett program använder. Identifiering är användbart om du har äldre program med inte mycket dokumentation och vill veta vilka tekniker de använder.
- Utvärdera koden till ett specifikt mål: Utvärdera ett program för ett specifikt Azure-mål. Kontrollera arbetet och de ändringar du måste göra för att omplatforma dina program till Azure.
Mål som stöds
Verktyget innehåller regler som hjälper dig att formatera om dina program så att du kan distribuera till och använda olika Azure-tjänster.
De regler som används av Azure Migrate-programmet och kodutvärderingen grupperas baserat på ett mål. Ett mål är var eller hur programmet körs och allmänna behov och förväntningar. När du utvärderar ett program kan du välja flera mål. I följande tabell beskrivs tillgängliga mål:
Målnamn | beskrivning | Mål |
---|---|---|
Azure App Service | Metodtips för att distribuera en app till Azure App Service. | azure-appservice |
Azure Kubernetes Service | Metodtips för att distribuera en app till Azure Kubernetes Service. | azure-aks |
Azure Container Apps | Metodtips för att distribuera en app till Azure Container Apps. | azure-container-apps |
Molnberedskap | Allmänna metodtips för att göra ett programmoln (Azure) redo. | cloud-readiness |
Linux | Allmänna metodtips för att göra ett program i Linux redo. | linux |
OpenJDK 11 | Allmänna metodtips för att köra ett Java 8-program med Java 11. | openjdk11 |
OpenJDK 17 | Allmänna metodtips för att köra ett Java 11-program med Java 17. | openjdk17 |
OpenJDK 21 | Allmänna metodtips för att köra ett Java 17-program med Java 21. | openjdk21 |
När verktyget utvärderas för molnberedskap och relaterade Azure-tjänster kan det också rapportera användbar information för potentiell användning av olika Azure-tjänster. I följande lista visas några av de tjänster som omfattas:
- Azure-databaser
- Azure Service Bus
- Azure Storage
- Azure Content Delivery Network
- Azure Event Hubs
- Azure Key Vault
- Azure Front Door
Ladda ned och installera
Om du vill använda appcat
CLI måste du ladda ned paketet som är specifikt för din miljö och ha de beroenden som krävs i din miljö.
appcat
CLI körs i alla miljöer, till exempel Windows, Linux eller Mac, med intel, arm eller Apple Silicon-maskinvara.
För JDK-kravet rekommenderar vi att du använder Microsoft Build of OpenJDK.
OS | Arkitektur | Ladda ned länk | Andra filer |
---|---|---|---|
x64 | |||
Windows | x64 | Ladda ned | sha256 / sig |
macOS | x64 | Ladda ned | sha256 / sig |
Linux | x64 | Ladda ned | sha256 / sig |
AArch64 | |||
Windows | AArch64 / ARM64 | Ladda ned | sha256 / sig |
macOS | Apple Silicon | Ladda ned | sha256 / sig |
Linux | AArch64 / ARM64 | Ladda ned | sha256 / sig |
Förutsättningar
- Ladda ned och installera Microsoft Build of OpenJDK 17. Kontrollera att miljövariabeln JAVA_HOME har angetts.
-
Ladda ned Apache Maven och installera lokalt. Kontrollera att Maven-binärfilen (
mvn
) kan nås viaPATH
miljövariabeln. - Ladda ned och installera Python 3.
Installation
Om du vill installera appcat
laddar du ned lämplig zip-fil för din plattform. När du har laddat ned filen bör du, beroende på ditt operativsystem, antingen hitta en .tar.gz (Linux/macOS) eller .zip fil (Windows).
Extrahera binärfilen från den nedladdade filen. Du bör se följande mappstruktur:
/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
Köra verktyget
Alternativ 1: Kör appcat från den nedladdade mappen
Ändra katalogen till den extraherade mappen:
cd /azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
./appcat --help
Kommentar
Binärfilen appcat
letar först efter dess beroenden i den aktuella katalogen, där den körs från, och återgår till följande scenario om de inte hittas.
Alternativ 2: Lägg till den binära sökvägen appcat till din $PATH
Flytta innehållet i mappen till mappen .appcat i användarens hemkatalog – $HOME/.appcat på Linux/Mac och %USERPROFILE%/.appcat i Windows.
Lägg till mappen .appcat i miljövariabeln så att PATH
du kan köra verktyget från valfri mapp i terminalen.
mv <path-to-extracted>/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/ $HOME/.appcat
Kommentar
I det här sammanhanget, när appcat
binärfilen anropas från en annan mapp än där den är installerad, letar den efter dess beroenden i mappen .appcat i användarens hemkatalog.
Förbrukning
Underkommandon
AppCAT tillhandahåller två underkommandon för användning:
-
analyze
: Kör källkodsanalys på indatakällans kod eller en binär fil. -
transform
: Konvertera XML-regler från tidigare versioner (6 och äldre) till YAML-format som används av den här versionen.
Kommentar
För macOS-användare: Om du får ett felmeddelande om att "Apple inte kunde verifiera" när du försökte köra appen kan du lösa det här felet med hjälp av följande kommando:
xattr -d -r com.apple.quarantine /path/to/appcat_binary
Till exempel:
xattr -d -r com.apple.quarantine $HOME/.appcat/appcat
Analysera underkommando
Med analyze
underkommandot kan du köra källkod och binär analys.
Om du vill analysera programkällkoden kör du följande kommando:
./appcat analyze --input=<path-to-source-code> --output=<path-to-output-directory> --target=azure-appservice --overwrite
Flaggan --input
måste peka på en källkodskatalog eller en binär fil och --output
måste peka på en katalog för att lagra analysresultaten.
Om du vill ha mer information om analysflaggor kör du följande kommando:
./appcat analyze --help
Kör följande kommando för att kontrollera tillgängliga mål för AppCAT:
./appcat analyze --list-targets
Det här kommandot genererar följande utdata:
available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
linux
openjdk11
openjdk17
openjdk21
Analysera flera program
AppCAT är utformat för att analysera ett enda program per kommandokörning, men om du använder --bulk
alternativet kan du analysera flera program i en enda körning. Det här alternativet genererar en enda statisk rapport i utdatakatalogen som innehåller resultaten för alla program.
Om du vill analysera flera program kör du följande kommando:
./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>
Transformera underkommando
Med transform
underkommandot kan du konvertera tidigare appcat
XML-regler som används i 6.x-versionen till det nya YAML-format som används av den här versionen 7.x.
Om du vill transformera regler kör du följande kommando:
./appcat transform rules --input=<path-to-xml-rules> --output=<path-to-output-directory>
Flaggan --input
ska peka på en fil eller katalog som innehåller XML-regler och --output
flaggan ska peka på utdatakatalogen för de konverterade YAML-reglerna.
Exempel
Kommentar
Kontrollera att filbehörigheterna för skript i den extraherade mappen är inställda för att tillåta körning.
I exempelmappen hittar du ett exempelwebbprogram med namnet airsonic.war. Airsonic är en webbaserad medieströmmare som ger tillgång till din musik och gör att du kan dela den med vänner. Mer information om Airsonic finns i Airsonic.
I exempelkatalogen hittar du följande skript för att köra olika typer av analys:
- run-assessment: Tillhandahåller en rapport med kodutvärdering och steg för migrering av Airsonic till Azure App Service på Tomcat.
- run-assessment-transform-rules: Konverterar Windup XML-regler till analyzer-lsp-kompatibla YAML-regler.
- run-assessment-custom-rules: Tillhandahåller en kodutvärderingsrapport med anpassade regler (transformera XML till YAML).
- run-assessment-openjdk21: Genererar en rapport med kodutvärdering och steg för migrering av Airsonic till OpenJDK 21.
- endast run-assessment-package: Skapar en rapport genom att utvärdera specifika paket.
Beroende på ditt operativsystem kör du rätt skript, som du ser i följande exempel:
./samples/run-assessment
Rapporterna genereras och startas automatiskt. Du hittar rapporterna under .. /samples/report-* (Linux/macOS) eller .. \samples\report-* (Windows).
Sammanfattning av analysen
På landningssidan i rapporten visas alla tekniker som används i programmet. Instrumentpanelen innehåller en sammanfattning av analysen, inklusive antalet transformeringsincidenter, incidentkategorierna eller berättelsepunkterna.
När du zoomar in på cirkeldiagrammet Incidenter efter kategori kan du se antalet incidenter efter kategori: Obligatoriskt, Valfritt och Potentiellt.
Instrumentpanelen visar också berättelsepunkterna. Berättelsepunkterna är ett abstrakt mått som ofta används i agil programvaruutveckling för att uppskatta den ansträngningsnivå som krävs för att implementera en funktion eller förändring.
appcat
använder berättelsepunkter för att uttrycka den ansträngningsnivå som krävs för att migrera ett visst program. Artikelpunkter översätts inte nödvändigtvis till arbetstid, men värdet bör vara konsekvent mellan uppgifter.
Utvärderingsrapport
Utvärderingsrapporten ger en översikt över de omvandlingsproblem som skulle behöva lösas för att migrera programmet till Azure.
Dessa problem, även kallade Incidenter, har en allvarlighetsgrad (obligatorisk, valfri eller potentiell), en insatsnivå och ett tal som anger berättelsepunkterna. Berättelsepunkterna bestäms genom att beräkna antalet incidenter gånger den ansträngning som krävs för att lösa problemet.
Detaljerad information om ett specifikt problem
För varje incident kan du få mer information (probleminformation, innehållet i regeln och så vidare) bara genom att välja den. Du får också en lista över alla filer som påverkas av den här incidenten.
För varje fil eller klass som påverkas av incidenten kan du sedan gå in i källkoden för att markera den kodrad som skapade problemet.
Viktig information
7.6.0.1
Den här versionen innehåller följande korrigeringar och förbättringar.
-
--analyze-known-libraries
flagga: Fungerar nu på Windows. - Katalogrensning: Extra kataloger som skapas under analysen i Windows rensas nu automatiskt.
-
--json-output
flagga: Nu i drift. - Fel vid parsning av regler: Felet
unable to parse all the rules for ruleset
har lösts. - Beskrivningar av fliken Insikter: Regelbeskrivningar som saknas har lagts till.
- Internetanslutningsberoende: Analysen misslyckas inte längre utan en Internetanslutning.
-
--context-lines
flagga: Fungerar nu som förväntat när den är inställd på 0. - Python-kravet har tagits bort för att köra verktyget.
7.6.0.0
Den här versionen baseras på en annan uppsättning komponenter i Konveyor-projektet.
Allmänna uppdateringar
- Ny motor baserad på LSP-projektet Konveyor Analyzer, med ett CLI baserat på Konveyor Kantra-projektet .
6.3.9.0
Den här versionen innehåller följande korrigeringar och innehåller en uppsättning nya regler.
Allmänna uppdateringar
- Integrerade ändringar från uppströmslagringsplatsen Windup (6.3.9.Final Release).
- Lösta brutna länkar i regelbeskrivningar och hjälptext.
Regler
- Azure Message Queue: uppdaterade och lade till nya regler för
azure-message-queue-rabbitmq
ochazure-message-queue-amqp
. - Azure Service Bus: introducerade en identifieringsregel för Azure Service Bus.
- MySQL och PostgreSQL: regler för förfinad beroendeidentifiering.
- Azure-AWS-regler: förbättrade och förbättrade befintliga regler.
- S3 Spring Starter: lade till en identifieringsregel för S3 Spring Starter.
- RabbitMQ Spring JMS: lade till en identifieringsregel för RabbitMQ Spring JMS.
- Loggningsregler: uppdaterade och förfinade loggningsrelaterade regler.
- Lokal lagringsregel: uppdaterade och förfinade den lokala lagringsregeln.
- Azure File System Rule: uppdaterade och förfinade Azure File System-regeln.
Bibliotek
- Bibliotek har uppdaterats för att åtgärda säkerhetsrisker.
6.3.0.9
Den här versionen innehåller följande korrigeringar och innehåller en uppsättning nya regler.
- Löste ett problem med
localhost-java-00001
regeln. - Introducerade nya regler för att identifiera tekniker som AWS S3, AWS SQS, Alibaba molnoperativsystem S, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata och Alibaba Rocket MQ.
-
azure-file-system-02000
Uppdaterade för att nu stödja XML-filnamnstillägg. - Uppgraderade olika bibliotek för att åtgärda säkerhetsrisker.
6.3.0.8
Tidigare aktiverades en uppsättning mål som standard, vilket gjorde det svårt för vissa kunder att utvärdera stora program med för många incidenter relaterade till mindre kritiska problem. För att minska bruset i rapporter måste användarna nu ange flera mål, med parametern --target
, när de kör appcat
, vilket ger dem möjlighet att endast välja de mål som är viktiga.
6.3.0.7
GA-version (allmänt tillgänglig) av Azure Migrate-program och kodutvärdering.
Kända problem
7.6.0.1
- Flaggan
--overrideProviderSettings
stöds inte. - Problem med regler:
-
azure-system-config-01000
,http-session-01000
,java-removals-00150
regler utlöses inte. -
FileSystem - Java IO
regeln utlöses inte.
-
- Om du analyserar WAR-filer i Windows uppstår följande fel:
Failed to Move Decompiled File
. Ett fel uppstår vid analys av WAR-filer i Windows, som ansvarar för några redundanta incidenter som skapats i Windows OS. - Fel i Watcher-felkanalen i Windows:
Windows system assumed buffer larger than it is, events have likely been missed
. Det här felmeddelandet visas på kommandoraden under långvariga jobb i Windows. - Ctrl+C kan inte stoppa pågående analys. Avsluta processen manuellt genom att uttryckligen avsluta processen.
- I binära analysrapporter visar kodfragmentets rubrik en felaktig eller obefintlig filsökväg.
7.6.0.0
- Flaggan
--analyze-known-libraries
fungerar inte i Windows. - I Windows genereras följande extra mappar under analysprocessen, men tas inte bort automatiskt efter slutförande. Du kanske vill ta bort de här extra mapparna när analysen är klar.
- metadata.
- org.eclipse.osgi
- org.eclipse.equinox.app
- org.eclipse.core.runtime
- org.eclipse.equinox.launcher
- Flaggan
--overrideProviderSettings
stöds inte. - Flaggan
--json-output
stöds inte. I en framtida version genererar den JSON-utdata för filerna output.yaml och dependency.yaml . - Problem med regler:
-
azure-system-config-01000
,http-session-01000
,java-removals-00150
regler utlöses inte. -
FileSystem - Java IO
regeln utlöses inte. - Fel
unable to parse all the rules for ruleset
vid körning av analys. Det här felet uppstår under analysen när verktyget inte parsar alla regler i regeluppsättningen.
-
- Om du analyserar WAR-filer i Windows uppstår följande fel:
Failed to Move Decompiled File
. Ett fel uppstår vid analys av WAR-filer i Windows, som ansvarar för några redundanta incidenter som skapats i Windows OS. - Beskrivningar saknas för vissa regler på fliken Insikter . Vissa taggregler saknar beskrivningar, vilket leder till tomma rubriker som visas på fliken Insikter i rapporten.
- Fel i Watcher-felkanalen i Windows:
Windows system assumed buffer larger than it is, events have likely been missed
. Det här felmeddelandet visas på kommandoraden under långvariga jobb i Windows. - Den här versionen kräver en aktiv Internetanslutning för beroendeanalys.
- Ctrl+C kan inte stoppa pågående analys. Avsluta processen manuellt genom att uttryckligen avsluta processen.
- När flaggan
--context-lines
är inställd på ett tal 0 fungerar den inte som förväntat. Med den här flaggan kan användaren begränsa hur mycket av källkoden som ska visas i rapporten. Inställningen till värdet 0 kanske inte fungerar som förväntat.
Licens
Azure Migrate-program och kodutvärdering för Java är ett kostnadsfritt öppen källkod-baserat verktyg.