Aplikace Azure Migrate a posouzení kódu pro Javu

Tato příručka popisuje, jak pomocí nástroje pro posouzení kódu a aplikace Azure Migrate pro Javu vyhodnotit a znovu vytvořit jakýkoli typ aplikace v Javě. Nástroj umožňuje vyhodnotit připravenost aplikací na opětovné vytvoření a migraci do Azure. Tento nástroj se nabízí jako rozhraní příkazového řádku (rozhraní příkazového řádku) a vyhodnocuje binární soubory aplikací v Javě a zdrojový kód k identifikaci příležitostí k přeplatformování a migraci pro Azure. Pomáhá modernizovat a znovu vytvářet rozsáhlé aplikace v Javě tím, že identifikuje běžné případy použití a vzory kódu a navrhuje doporučené změny.

Nástroj zjišťuje využití aplikačních technologií prostřednictvím statické analýzy kódu, poskytuje odhad úsilí a urychluje přeformulování kódu, což vám pomůže určit prioritu a přesunout aplikace v Javě do Azure. Díky sadě modulů a pravidel může zjišťovat a vyhodnocovat různé technologie, jako je Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) a další. Pak vám pomůže znovu vytvořit aplikaci v Javě na různé cíle Azure (Aplikace Azure Service, Azure Kubernetes Service a Azure Container Apps) s konkrétními pravidly replatformování Azure.

Tento nástroj je opensourcový a je založený na windUpu, projektu vytvořeném společností Red Hat a publikovaném v rámci veřejné licence Eclipse.

Přehled

Tento nástroj je navržený tak, aby organizacím pomohl modernizovat své aplikace v Javě způsobem, který snižuje náklady a umožňuje rychlejší inovace. Nástroj používá pokročilé techniky analýzy k pochopení struktury a závislostí jakékoli aplikace v Javě a poskytuje pokyny k refaktoringu a migraci aplikací do Azure.

S ním můžete provádět následující úlohy:

  • Objevte využití technologií: Rychle zjistíte, které technologie aplikace používá. Zjišťování je užitečné, pokud máte starší verze aplikací, které nemají moc dokumentace, a chcete vědět, které technologie používají.
  • Posouzení kódu pro konkrétní cíl: Posouzení aplikace pro konkrétní cíl Azure Zkontrolujte úsilí a změny, které je potřeba udělat k opětovnému vytvoření aplikací do Azure.

Podporované cíle

Nástroj obsahuje pravidla, která vám pomůžou znovu vytvořit aplikace, abyste mohli nasazovat a používat různé služby Azure.

Pravidla používaná aplikací Azure Migrate a posouzením kódu se seskupují podle cíle. Cílem je umístění nebo způsob spuštění aplikace a obecné potřeby a očekávání. Při posuzování aplikace můžete zvolit více cílů. Následující tabulka popisuje dostupné cíle:

Cíl Popis ID
Azure App Service Osvědčené postupy pro nasazení aplikace do služby Aplikace Azure Service azure-appservice
Azure Kubernetes Service Osvědčené postupy pro nasazení aplikace do služby Azure Kubernetes Service azure-aks
Azure Container Apps Osvědčené postupy pro nasazení aplikace do Azure Container Apps azure-container-apps
Připravenost na cloud Obecné osvědčené postupy pro připravenost aplikačního cloudu (Azure) cloud-readiness
Zjišťování Identifikuje využití technologií, jako jsou knihovny a architektury. discovery
Linux Obecné osvědčené postupy pro vytvoření aplikace pro Linux linux
OpenJDK 11 Obecné osvědčené postupy pro spuštění aplikace Java 8 s Javou 11 openjdk11
OpenJDK 17 Obecné osvědčené postupy pro spuštění aplikace Java 11 s Javou 17 openjdk17
OpenJDK 21 Obecné osvědčené postupy pro spuštění aplikace Java 17 s Javou 21 openjdk21

Když nástroj vyhodnotí připravenost na cloud a související služby Azure, může také hlásit užitečné informace pro potenciální využití různých služeb Azure. Následující seznam obsahuje několik zahrnutých služeb:

  • Databáze Azure
  • Azure Service Bus
  • Azure Storage
  • Síť pro doručování obsahu Azure
  • Azure Event Hubs
  • Azure Key Vault
  • Azure Front Door

Stáhnout

Pokud chcete použít rozhraní příkazového appcat řádku, musíte stáhnout soubor ZIP popsaný v další části a mít na počítači kompatibilní instalaci sady JDK 11 nebo JDK 17. Rozhraní příkazového řádku běží na jakémkoli prostředí kompatibilním s Javou, jako je Windows, Linux nebo Mac, a to appcat jak pro hardware Intel, Arm, tak Apple Silicon. Doporučujeme používat Microsoft Build openJDK.

Další informace najdete v části Poznámky k verzi.

Známé problémy

Při analýze konkrétních výrazů lambda se nemusí aktivovat určitá pravidla. Další informace najdete v problému s GitHubem.

Spuštění appcat v prostředí bez kódování Unicode se složitými znaky s dvojitými bajty způsobí poškození. Alternativní řešení najdete v problému s GitHubem.

Předchozí verze

Ke stažení jsou k dispozici také následující předchozí verze:

Začínáme

Pokud chcete spustit appcat, ujistěte se, že máte nainstalovanou podporovanou sadu JDK. Nástroj podporuje následující sady JDK:

  • Microsoft Build openJDK 11
  • Microsoft Build openJDK 17
  • Eclipse Temurin™ JDK 11
  • Eclipse Temurin™ JDK 17

Po nainstalování platné sady JDK se ujistěte, že je jeho instalační adresář správně nakonfigurovaný v JAVA_HOME proměnné prostředí.

Chcete-li pokračovat, stáhněte a rozbalte balíček ve složce podle vašeho výběru. Pak získáte následující adresářovou strukturu:

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: Tento adresář obsahuje dokumentaci .appcat
  • bin: Tento adresář obsahuje spustitelné soubory rozhraní příkazového appcat řádku (pro Windows/Linux/Mac).
  • ukázky: Tento adresář obsahuje ukázkovou aplikaci a několik skriptů pro spuštění appcat v ukázkové aplikaci.

Nástroj spustíte tak, že otevřete relaci terminálu a do adresáře $APPCAT_HOME/bin zadáte následující příkaz:

./appcat --help

Pokud chcete nástroj spustit odkudkoliv v počítači, nakonfigurujte adresář $APPCAT_HOME/bin do PATH proměnné prostředí a pak restartujte relaci terminálu.

Dokumentace

Následující příručky poskytují hlavní dokumentaci pro appcat Javu:

Zjišťování využití technologií a připravenosti na cloud bez použití služby Azure

Objev technologií a cílů připravenosti na cloud poskytují skvělý přehled o replatformování a modernizaci aplikací v cloudu. Nástroj prohledá aplikaci a její komponenty, aby získal komplexní přehled o jeho struktuře, architektuře a závislostech. Najde také potenciální problémy, které můžou být v cloudovém prostředí náročné. Cíl discovery se zejména používá k vytvoření podrobného inventáře aplikace a jejích komponent. Tento inventář slouží jako základ pro další analýzu a plánování. Další informace najdete v části Sestava zjišťování.

K zahájení zjišťování a připravenosti na cloud použijte následující příkaz:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target discovery cloud-readiness

Tento typ sestavy je užitečný, pokud nemáte v úmyslu nasadit aplikaci do konkrétní služby Azure.

Nástroj vždy provede discovery , zda tuto hodnotu zahrnete do parametru --target .

Posouzení aplikace v Javě

Fáze posouzení spočívá v appcat tom, že rozhraní příkazového řádku analyzuje aplikaci a její komponenty, aby určilo jeho vhodnost k přeplatování a identifikaci potenciálních problémů nebo omezení. Tato fáze zahrnuje analýzu kódu aplikace a kontrolu dodržování předpisů s vybranými cíli.

Více cílů můžete vybrat pomocí seznamu hodnot oddělených mezerami s argumentem --target .

Pokud chcete zkontrolovat dostupné cíle, spusťte následující příkaz:

./appcat --listTargetTechnologies

Tento příkaz vytvoří výstup podobný následujícímu příkladu:

Available target technologies:
    azure-aks
    azure-appservice
    azure-container-apps
    cloud-readiness
    discovery
    linux
    openjdk11
    openjdk17
    openjdk21

Pak můžete spustit appcat pomocí jedné nebo kombinace dostupných cílů, jak je znázorněno v následujícím příkladu:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target cloud-readiness linux azure-appservice

Můžete také spustit appcat s jedním z dostupných cílů OpenJDK, jak je znázorněno v následujícím příkladu:

./appcat \
    --input ./<my-application-source-path or my-application-jar-war-ear-file> \
    --target openjdk11

U cílů OpenJDK (Java) doporučujeme vybrat vždy jenom jednu.

Doporučení cílů pro posouzení Azure

Pokaždé, když vyhodnotíte aplikaci pro nasazení Azure, doporučujeme začít s následujícími cíli:

  • discovery
  • cloud-readiness

Zadejte také službu Azure pro nasazení, například azure-appservice nebo azure-container-apps.

Pokud chcete přesunout aplikaci z prostředí Windows do virtuálního počítače nebo kontejneru s Linuxem, doporučujeme také přidat linux cíl.

Pokud chcete přesunout aplikaci ze starší verze sady JDK na novější verzi, doporučujeme vybrat další hlavní verzi v porovnání s předchozí verzí, kterou aplikace používá. Můžete například použít openjdk11 , když je vaše aplikace aktuálně nasazená s Javou 8.

Získání výsledků z appcatu

Výsledek fází zjišťování a posouzení je podrobná sestava, která poskytuje plán pro přeplatformování a modernizaci aplikace v Javě, včetně doporučení pro službu Azure a replatformního přístupu. Sestava slouží jako základ pro další fáze procesu opětovného vytváření. Pomáhá organizacím učit se o úsilí potřebném pro takovou transformaci a rozhodovat se o tom, jak modernizovat své aplikace pro maximální výhody.

Sestava appcat vygenerovaná pomocí komplexního přehledu aplikace a jejích komponent. Tuto sestavu můžete použít k získání přehledu o struktuře a závislostech aplikace a k určení jeho vhodnosti pro přeformulování a modernizaci.

Další informace o sestavě najdete v následujících částech.

Shrnutí analýzy

Cílová stránka sestavy obsahuje seznam všech technologií používaných v aplikaci. Řídicí panel poskytuje souhrn analýzy, včetně počtu incidentů transformace, kategorií incidentů nebo scénářů.

Snímek obrazovky se souhrnnou sestavou appcat

Když přiblížíte výsečový graf Incidenty podle kategorie , uvidíte počet incidentů podle kategorie: Povinné, Volitelné, Potenciální a Informace.

Řídicí panel také zobrazuje body příběhu. Body scénáře jsou abstraktní metrika, která se běžně používá při vývoji agilního softwaru k odhadu úrovně úsilí potřebného k implementaci funkce nebo změny. appcat používá body textu k vyjádření úrovně úsilí potřebného k migraci konkrétní aplikace. Body textu se nemusí nutně překládat na pracovní dobu, ale hodnota by měla být konzistentní napříč úkoly.

Snímek obrazovky se sestavou souhrnného incidentu AppCAT

Sestava zjišťování

Sestava zjišťování je sestava vygenerovaná během fáze zjišťování. Zobrazuje seznam technologií používaných aplikací v kategorii Informace . Tato sestava vás pouze informuje o využití technologií, které se appcat zjistilo.

Snímek obrazovky se sestavou zjišťování appcat

Sestava posouzení

Sestava posouzení poskytuje přehled problémů transformace, které je potřeba vyřešit při migraci aplikace do Azure.

Tyto problémy, označované také jako incidenty, mají závažnost (povinné, volitelné, potenciální nebo informační), úroveň úsilí a číslo označující body scénáře. Body scénáře jsou určeny výpočtem počtu incidentů, kolikrát se úsilí potřebné k vyřešení problému vyžaduje.

Snímek obrazovky se sestavou posouzení AppCAT

Podrobné informace o konkrétním problému

U každého incidentu můžete získat další informace (podrobnosti o problému, obsah pravidla atd.) jednoduše tak, že ho vyberete. Zobrazí se také seznam všech souborů ovlivněných tímto incidentem.

Snímek obrazovky se sestavou podrobností o problému AppCAT

Potom pro každý soubor nebo třídu ovlivněnou incidentem můžete přejít do zdrojového kódu a zvýraznit řádek kódu, který problém vytvořil.

Snímek obrazovky se sestavou kódu problému AppCAT

Vlastní pravidla

Můžete si představit appcat jako modul pravidel. Používá pravidla k extrakci souborů z archivů Javy, dekompiluje třídy Java, kontroluje a klasifikuje typy souborů, analyzuje tyto soubory a sestavy sestav. V appcat, pravidla jsou definována ve formě sady pravidel. Sada pravidel je kolekce jednotlivých pravidel, která definují konkrétní problémy nebo vzory, které appcat mohou během analýzy detekovat.

Tato pravidla jsou definována v jazyce XML a používají následující vzor pravidla:

when (condition)
    perform (action)
    otherwise (action)

appcat poskytuje komplexní sadu standardních pravidel migrace. Vzhledem k tomu, že aplikace můžou obsahovat vlastní knihovny nebo komponenty, appcat umožňuje napsat vlastní pravidla k identifikaci použití komponent nebo softwaru, které může stávající sada pravidel pokrýt.

K napsání vlastního pravidla použijete jazyk DLS (Rich Domain Specific Language) vyjádřený v jazyce XML. Řekněme například, že chcete pravidlo, které identifikuje použití ovladače PostgreSQL JDBC v aplikaci v Javě a navrhuje místo toho použití flexibilního serveru Azure PostgreSQL. Potřebujete pravidlo pro vyhledání ovladače PostgreSQL JDBC definovaného v souboru pom.xml Mavenu nebo souboru Gradle, například závislost zobrazená v následujícím příkladu:

<dependency>
    <groupId>org.postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <scope>runtime</scope>
</dependency>

K detekci použití této závislosti používá pravidlo následující značky XML:

  • ruleset: Jedinečný identifikátor sady pravidel. Sada pravidel je kolekce pravidel, která souvisejí s konkrétní technologií.
  • targetTechnology: Technologie, na kterou pravidlo cílí. V tomto případě se pravidlo zaměřuje na služby Aplikace Azure Services, Azure Kubernetes Service (AKS) a Azure Container Apps.
  • rule: Kořenový prvek jednoho pravidla.
  • when: Podmínka, která musí být splněna, aby se pravidlo aktivovalo.
  • perform: Akce, která se má provést při aktivaci pravidla.
  • hint: Zpráva, která se má zobrazit v sestavě, její kategorie (Informace, Volitelné nebo Povinné) a úsilí potřebné k vyřešení problému v rozsahu od 1 (snadné) do 13 (obtížné).

Následující xml ukazuje definici vlastního pravidla:

<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://video2.skills-academy.com/azure/postgresql/flexible-server/overview"/>
                </hint>
            </perform>
        </rule>
    </rules>
</ruleset>

Po provedení tohoto pravidla appcatznovu spusťte analýzu a zkontrolujte vygenerovanou sestavu. Stejně jako u jiných incidentů obsahuje sestava posouzení seznam zjištěných problémů a ovlivněných souborů souvisejících s tímto pravidlem.

Snímek obrazovky appcatu se spuštěným pravidlem

Kompletní průvodce vývojem pravidel je k dispozici na azure.github.io/appcat-docs/rules-development-guide.

Poznámky k verzi

6.3.0.9

Tato verze obsahuje následující opravy a obsahuje sadu nových pravidel. Další informace najdete níže.

  • Vyřešili jsme problém s pravidlem localhost-java-00001 .
  • Zavedla nová pravidla pro identifikaci technologií, jako jsou AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata a Alibaba Rocket MQ.
  • Aktualizovali jsme azure-file-system-02000 aktualizaci na podporu přípon souborů XML.
  • Upgradovali jsme různé knihovny, které řeší ohrožení zabezpečení.

6.3.0.8

Dříve byla ve výchozím nastavení povolena sada cílů, která některým zákazníkům znesnadňuje vyhodnocení velkých aplikací s příliš mnoha incidenty souvisejícími s méně kritickými problémy. Aby uživatelé snížili šum v sestavách, musí nyní při provádění appcatzadat více cílů s parametrem --target, který jim dává možnost vybrat pouze cíle, které jsou důležité.

6.3.0.7

Obecná dostupnost (obecně dostupná) verze aplikace Azure Migrate a posouzení kódu

Licence

Aplikace Azure Migrate a hodnocení kódu pro Javu je bezplatný opensourcový nástroj bez poplatků a licencovaný pod stejnou licencí jako nadřazený projekt WindUp.

Nejčastější dotazy

Otázka: Kde si můžu stáhnout nejnovější verzi aplikace Azure Migrate a posouzení kódu pro Javu?

Můžete si stáhnout appcat z aka.ms/appcat/azure-appcat-cli-latest.zip.

Otázka: Kde najdu další informace o aplikaci Azure Migrate a posouzení kódu pro Javu?

Při stahování appcatzískáte adresář dokumentace se všemi informacemi, které potřebujete, abyste mohli začít.

Otázka: Kde najdu konkrétní pravidla Azure?

Všechna pravidla Azure jsou k dispozici v úložišti Appcat Rulesets GitHub.

Otázka: Kde najdu další informace o vytváření vlastních pravidel?

Viz Průvodce vývojem pravidel pro aplikaci Azure Migrate a posouzení kódu pro Javu.

Otázka: Kde získám pomoc při vytváření vlastních pravidel?

Nejlepší způsob, jak získat pomoc, je vytvořit problém v úložišti GitHubu pro sady pravidel appcat.