Share via


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 appcatkan 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 appcatmå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.

Skärmbild av appcat-sammanfattningsrapporten.

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.

Skärmbild av AppCAT-sammanfattningsincidentrapporten.

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.

Skärmbild av appcat-identifieringsrapporten.

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.

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.

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 appcatdefinieras 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 appcatkö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.

Skärmbild av appcaten med en regel som körs.

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 appcatfå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.

Nästa steg