Dela via


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.

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:

Kom igång

Om du vill köra appcatkontrollerar 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.

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 teknikanvändning som appcat identifierats.

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) 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 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.

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