Dela via


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

Installation

Om du vill installera appcatladdar 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.

Skärmbild av appcat-sammanfattningsrapporten.

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.

Skärmbild av AppCAT-sammanfattningsincidentrapporten.

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.

Skärmbild av AppCAT-utvärderingsrapporten.

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.

Skärmbild av AppCAT-probleminformationsrapporten.

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.

Skärmbild av AppCAT-problemkodrapporten.

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

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 och azure-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.