Azure Migrate-program och kodutvärdering för Java
Kommentar
Vi har släppt en ny version av Azure Migrate-program och kodutvärdering för Java, version 7.x under förhandsversion, baserat på en ny analysmotor. Information om hur du laddar ned och experimenterar med den nya motorn, som är tillgänglig för Windows, Linux och macOS, finns i Azure Migrate-program och kodutvärdering för Java version 7
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. Det här verktyget erbjuds som ett CLI (kommandoradsgränssnitt) 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 genom analys av statisk kod, ger uppskattning av arbete och påskyndar kodomläggning, vilket hjälper dig att prioritera och 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, Spring, Hibernate, Java Message Service (JMS) med mera. Det 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.
Det här verktyget är öppen källkod och baseras på WindUp, ett projekt som skapats av Red Hat och publicerats under Eclipse Public License.
Ö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ål | beskrivning | ID |
---|---|---|
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 |
Identifiering | Identifierar teknikanvändning som bibliotek och ramverk. | discovery |
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
Om du vill använda appcat
CLI måste du ladda ned ZIP-filen som beskrivs i nästa avsnitt och ha en kompatibel JDK 11- eller JDK 17-installation på datorn.
appcat
CLI körs i alla Java-kompatibla miljöer som Windows, Linux eller Mac, både för Intel, Arm och Apple Silicon-maskinvara. Vi rekommenderar att du använder Microsoft Build of OpenJDK.
Ladda ned Azure Migrate-program och kodutvärdering för Java 6.3.9.0. Uppdaterad 2024-12-09.
Mer information finns i avsnittet Viktig information .
Kända problem
Vissa regler kanske inte utlöses när specifika Lambda-uttryck parsas. Mer information finns i GitHub-problemet.
Om du kör appcat
i en icke-unicode-miljö med komplexa tecken med dubbla byte kommer det att orsaka skada.
Lösningar finns i GitHub-problemet.
Tidigare versioner
Följande tidigare versioner är också tillgängliga för nedladdning:
- Azure Migrate-program och kodutvärdering för Java 6.3.0.9. Släpptes i augusti 2024.
- Azure Migrate-program och kodutvärdering för Java 6.3.0.8. Släpptes i mars 2024.
- Azure Migrate-program och kodutvärdering för Java 6.3.0.7. Släpptes i november 2023.
Kom igång
Om du vill köra appcat
kontrollerar du att du har ett JDK som stöds installerat. Verktyget stöder följande JDK:er:
- Microsoft Build of OpenJDK 11
- Microsoft Build of OpenJDK 17
- Eclipse Temurin™ JDK 11
- Eclipse Temurin™ JDK 17
När du har installerat ett giltigt JDK kontrollerar du att installationskatalogen JAVA_HOME
är korrekt konfigurerad i miljövariabeln.
Om du vill fortsätta laddar du ned och packar upp paketet 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 och molnberedskap utan en Azure-tjänst i åtanke
Identifiering av tekniker och molnberedskapsmål ger stor insikt i programomläggning och modernisering till molnet. Verktyget söker igenom programmet och dess komponenter för att få en omfattande förståelse för dess struktur, arkitektur och beroenden. Den hittar också potentiella problem som kan vara utmanande i en molnmiljö. Målet discovery
används särskilt för att skapa en detaljerad inventering av programmet och dess komponenter. Den här inventeringen utgör grunden för ytterligare analys och planering. Mer information finns i avsnittet Identifieringsrapport .
Använd följande kommando för att initiera identifiering och molnberedskap:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target discovery cloud-readiness
Den här typen av rapport är användbar när du inte har en specifik Azure-tjänst i åtanke att distribuera ditt program till.
Verktyget utför discovery
alltid om du inkluderar det värdet i parametern --target
eller inte.
Utvärdera ett Java-program
Utvärderingsfasen är där appcat
CLI analyserar programmet och dess komponenter för att fastställa dess lämplighet för omplätering och för att identifiera eventuella utmaningar eller begränsningar. Den här fasen handlar om att analysera programkoden och kontrollera dess efterlevnad med de valda målen.
Du kan välja flera mål med hjälp av en utrymmesavgränsad lista med värden med --target
argumentet .
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
cloud-readiness
discovery
linux
openjdk11
openjdk17
openjdk21
Sedan kan du köra appcat
med ett eller en kombination av tillgängliga mål, som du ser i följande exempel:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target cloud-readiness linux azure-appservice
Du kan också 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
För OpenJDK-mål (Java) rekommenderar vi att du bara väljer en i taget.
Rekommendation för mål för Azure-utvärdering
När du utvärderar ett program för Azure-distribution rekommenderar vi att du börjar med följande mål:
discovery
cloud-readiness
Ange också en Azure-tjänst för distribution, till exempel azure-appservice
eller azure-container-apps
.
Om du tänker flytta ett program från en Windows-miljö till en virtuell Linux-dator eller container rekommenderar vi att du även lägger till linux
målet.
Om du tänker flytta ett program från en äldre version av JDK till en nyare version rekommenderar vi att du väljer nästa huvudversion jämfört med den tidigare versionen som används av programmet. Använd till exempel openjdk11
när ditt program för närvarande distribueras med Java 8.
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 teknikanvändning som appcat
identifierats.
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) 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"/>
</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.
Viktig information
6.3.9.0
Den här versionen innehåller följande korrigeringar och innehåller en uppsättning nya regler. Mer information finns i nedan.
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 & 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. Mer information finns i nedan.
- 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.
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.