Azure Migrate-program och kodutvärdering för Java
Den här guiden beskriver 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.
appcat
är ett kommandoradsverktyg från Azure Migrate för att utvärdera 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.
appcat
identifierar användning av programteknik via statisk kodanalys, stöder uppskattning av arbete och påskyndar kodomläggning, vilket hjälper dig att flytta Java-program till Azure. Med en uppsättning motorer och regler kan den identifiera och utvärdera olika tekniker som Java 11, Java 17, Jakarta EE 10, Quarkus, Spring och så vidare. Det hjälper dig sedan att omplatforma Java-programmet till olika Azure-mål (Azure App Service, Azure Kubernetes Service, Azure Container Apps och Azure Spring Apps) med specifika Azure-omplatformningsregler.
appcat
är öppen källkod och baseras på WindUp, ett projekt som skapats av Red Hat och publicerats under Eclipse Public License.
När ska jag använda Azure Migrate-program och kodutvärdering?
appcat
ä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 appcat
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 skicka om dina program till Azure.
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 följande Azure-tjänster.
Du kan använda följande tjänster som distributionsmål:
- Azure App Service
- Azure Spring Apps
- Azure Kubernetes Service
- Azure Container Apps
- molnberedskap
- discovery
- linux
- openjdk11
- openjdk17
- openjdk21
Du kan använda följande tjänster som resurstjänster:
- Azure-databaser
- Azure Service Bus
- Azure Storage
- Azure CDN
- Azure Event Hubs
- Azure Key Vault
Använda Azure Migrate-program och kodutvärdering för Java
Om du vill använda appcat
måste du ladda ned ZIP-filen som beskrivs i nästa avsnitt och ha en kompatibel JDK 11+-installation på datorn. appcat
körs på Windows, Linux eller Mac, både för Intel, Arm och Apple Silicon-maskinvara. Du kan använda Microsoft Build of OpenJDK för att köra appcat
.
Ladda ned
appcat
CLI är tillgängligt för nedladdning som en ZIP-fil från aka.ms/appcat/azure-appcat-cli-latest.zip.
Kör appcat
Packa upp zip-filen i valfri mapp. Sedan får du följande katalogstruktur:
appcat-cli-<version> # APPCAT_HOME
├── README.md
├── bin
│ ├── appcat
│ └── appcat.bat
├── docs
│ └── appcat-guide.html
└── samples
├── airsonic.war
├── run-assessment
├── run-assessment-custom-rules
├── run-assessment-exclude-packages
├── run-assessment-no-code-report
├── run-assessment-openjdk21
├── run-assessment-zip-report
└── run-discovery
- docs: Den här katalogen innehåller dokumentationen för
appcat
. - bin: Den här katalogen innehåller
appcat
CLI-körbara filer (för Windows/Linux/Mac). - exempel: Den här katalogen innehåller ett exempelprogram och flera skript som ska köras
appcat
mot exempelprogrammet.
Om du vill köra verktyget öppnar du en terminalsession och skriver följande kommando från katalogen $APPCAT_HOME/bin :
./appcat --help
Om du vill köra verktyget var som helst på datorn konfigurerar du katalogen $APPCAT_HOME/bin i PATH
miljövariabeln och startar sedan om terminalsessionen.
Dokumentation
Följande guider innehåller huvuddokumentationen för appcat
Java:
Identifiera teknikanvändning utan ett Azure-mål i åtanke
Identifiering av tekniker är det första steget i programomplatform och modernisering. Under identifieringsfasenappcat
genomsöker programmet och dess komponenter för att få en omfattande förståelse för dess struktur, arkitektur och beroenden. Den här informationen används för att skapa en detaljerad inventering av programmet och dess komponenter (se avsnittet Identifieringsrapport ), som utgör grunden för ytterligare analys och planering.
Använd följande kommando för att initiera identifiering:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target discovery
Identifieringsfasen är användbar när du inte har något specifikt Azure-mål i åtanke. Annars appcat
körs identifiering implicit för alla Azure-mål.
Utvärdera ett Java-program för ett specifikt mål
Utvärderingsfasen är där appcat
analyserar programmet och dess komponenter för att fastställa dess lämplighet för omplatorering och för att identifiera eventuella utmaningar eller begränsningar. Den här fasen handlar om att analysera programkoden och kontrollera dess kompatibilitet med det valda Azure-målet eller OpenJDK-målet.
Kör följande kommando för att kontrollera tillgängliga mål:
./appcat --listTargetTechnologies
Det här kommandot genererar utdata som liknar följande exempel:
Available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
discovery
linux
openjdk11
openjdk17
openjdk21
Sedan kan du köra appcat
med något av de tillgängliga Azure-målen, som du ser i följande exempel:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target azure-appservice
Du kan köra appcat
med något av de tillgängliga OpenJDK-målen, som du ser i följande exempel:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target openjdk11
Hämta resultat från appcat
Resultatet av identifierings- och utvärderingsfaserna är en detaljerad rapport som innehåller en översikt för omplatformning och modernisering av Java-programmet, inklusive rekommendationer för Azure-tjänsten och omplatformmetoden. Rapporten fungerar som grund för nästa steg i omplatformningsprocessen. Det hjälper organisationer att lära sig om den ansträngning som krävs för en sådan omvandling och fatta beslut om hur de ska modernisera sina program för maximala fördelar.
Rapporten som genereras av appcat
ger en omfattande översikt över programmet och dess komponenter. Du kan använda den här rapporten för att få insikter om programmets struktur och beroenden och för att fastställa dess lämplighet för omplatform och modernisering.
Följande avsnitt innehåller mer information om rapporten.
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, Potential och Information.
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.
Identifieringsrapport
Identifieringsrapporten är en rapport som genereras under identifieringsfasen. Den visar listan över tekniker som används av programmet i kategorin Information . Den här rapporten informerar dig bara om den teknik som appcat
upptäcktes.
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, som även kallas Incidenter, har en allvarlighetsgrad (obligatoriskt, valfritt, potentiellt eller information), 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.
Anpassade regler
Du kan se det appcat
som en regelmotor. Den använder regler för att extrahera filer från Java-arkiv, dekompilera Java-klasser, skannar och klassificerar filtyper, analyserar dessa filer och skapar rapporterna. I appcat
definieras reglerna i form av en regeluppsättning. En regeluppsättning är en samling enskilda regler som definierar specifika problem eller mönster som appcat
kan identifieras under analysen.
Dessa regler definieras i XML och använder följande regelmönster:
when (condition)
perform (action)
otherwise (action)
appcat
tillhandahåller en omfattande uppsättning standardregler för migrering. Eftersom program kan innehålla anpassade bibliotek eller komponenter appcat
kan du skriva egna regler för att identifiera användningen av komponenter eller programvara som den befintliga regeluppsättningen kan omfatta.
Om du vill skriva en anpassad regel använder du ett omfattande domänspecifikt språk (DLS) uttryckt i XML. Anta till exempel att du vill ha en regel som identifierar användningen av PostgreSQL JDBC-drivrutinen i ett Java-program och föreslår användning av Azure PostgreSQL – flexibel server i stället. Du behöver en regel för att hitta PostgreSQL JDBC-drivrutinen som definierats i en Maven-pom.xml-fil eller en Gradle-fil, till exempel beroendet som visas i följande exempel:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
För att identifiera användningen av det här beroendet använder regeln följande XML-taggar:
ruleset
: Regeluppsättningens unika identifierare. En regeluppsättning är en samling regler som är relaterade till en specifik teknik.targetTechnology
: Den teknik som regeln riktar in sig på. I det här fallet riktar sig regeln mot Azure App Services, Azure Kubernetes Service (AKS), Azure Spring Apps och Azure Container Apps.rule
: Rotelementet i en enskild regel.when
: Villkoret som måste uppfyllas för att regeln ska utlösas.perform
: Den åtgärd som ska utföras när regeln utlöses.hint
: Meddelandet som ska visas i rapporten, dess kategori (Information, Valfritt eller Obligatoriskt) och den ansträngning som krävs för att åtgärda problemet, från 1 (enkelt) till 13 (svårt).
Följande XML visar den anpassade regeldefinitionen:
<ruleset id="azure-postgre-flexible-server"
xmlns="http://windup.jboss.org/schema/jboss-ruleset"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://windup.jboss.org/schema/jboss-ruleset http://windup.jboss.org/schema/jboss-ruleset/windup-jboss-ruleset.xsd">
<metadata>
<description>Recommend Azure PostgreSQL Flexible Server.</description>
<dependencies>
<addon id="org.jboss.windup.rules,windup-rules-xml,3.0.0.Final"/>
</dependencies>
<targetTechnology id="azure-appservice"/>
<targetTechnology id="azure-aks"/>
<targetTechnology id="azure-container-apps"/>
<targetTechnology id="azure-spring-apps"/>
</metadata>
<rules>
<rule id="azure-postgre-flexible-server">
<when>
<project>
<artifact groupId="org.postgresql" artifactId="postgresql"/>
</project>
</when>
<perform>
<hint title="Azure PostgreSQL Flexible Server" category-id="mandatory" effort="7">
<message>The application uses PostgreSQL. It is recommended to use Azure PostgreSQL Flexible Server instead.</message>
<link title="Azure PostgreSQL Flexible Server documentation" href="https://learn.microsoft.com/azure/postgresql/flexible-server/overview"/>
</hint>
</perform>
</rule>
</rules>
</ruleset>
När du har kört den här regeln via appcat
kör du analysen igen för att granska den genererade rapporten. Precis som med andra incidenter visar utvärderingsrapporten de identifierade problemen och berörda filer som är relaterade till den här regeln.
Den fullständiga guiden för regelutveckling finns på azure.github.io/appcat-docs/rules-development-guide.
Licens
Azure Migrate-program och kodutvärdering för Java är ett kostnadsfritt öppen källkod verktyg utan kostnad och licensierat under samma licens som det överordnade WindUp-projektet.
Vanliga frågor och svar
F: Var kan jag ladda ned den senaste versionen av Azure Migrate-programmet och kodutvärderingen för Java?
Du kan ladda ned appcat
från aka.ms/appcat/azure-appcat-cli-latest.zip.
F: Var hittar jag mer information om Azure Migrate-program och kodutvärdering för Java?
När du laddar ned appcat
får du en dokumentkatalog med all information du behöver för att komma igång.
F: Var hittar jag de specifika Azure-reglerna?
Alla Azure-regler är tillgängliga i GitHub-lagringsplatsen appcat Rulesets.
F: Var hittar jag mer information om hur du skapar anpassade regler?
Se regelutvecklingsguiden för Azure Migrate-program och kodutvärdering för Java.
F: Var kan jag få hjälp när jag skapar anpassade regler?
Det bästa sättet att få hjälp är att skapa ett problem på GitHub-lagringsplatsen appcat-rulesets.