Sdílet prostřednictvím


Aplikace Azure Migrate a posouzení kódu pro Javu verze 7 (Preview)

Poznámka:

Tento článek je určený pro novou generaci aplikace Azure Migrate a posouzení kódu pro Javu verze 7.x. Tato verze je ve verzi Preview. Předchozí stabilní verzi verze 6.x najdete v tématu o aplikaci Azure Migrate a posouzení kódu pro Javu.

V tomto článku se dozvíte, 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 (CLI) a vyhodnocuje binární soubory aplikací v Javě a zdrojový kód k identifikaci příležitostí k přeformulová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. Toto posouzení vám pomůže určit prioritu a přesunout aplikace v Javě do Azure. Díky sadě modulů a pravidel může nástroj objevit a posoudit různé technologie, jako je Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) a další. Nástroj vám pak 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 přeplatformování Azure.

Tento nástroj je založený na sadě komponent v projektu Konveyor, který vytvořil a vedl Red Hat.

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ílový název Popis Cíl
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
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

Stažení a instalace

Pokud chcete použít rozhraní příkazového appcat řádku, musíte stáhnout balíček specifický pro vaše prostředí a mít požadované závislosti ve vašem prostředí. Rozhraní appcat příkazového řádku běží v libovolném prostředí, jako je Windows, Linux nebo Mac, pomocí hardwaru Intel, Arm nebo Apple Silicon. Pro požadavek sady JDK doporučujeme použít Microsoft Build sady OpenJDK.

Operační systém Architektura Odkaz ke stažení Další soubory
x64
Windows x64 Stáhnout sha256 / sig
macOS x64 Stáhnout sha256 / sig
Linux x64 Stáhnout sha256 / sig
AArch64
Windows AArch64 / ARM64 Stáhnout sha256 / sig
macOS Apple Silicon Stáhnout sha256 / sig
Linux AArch64 / ARM64 Stáhnout sha256 / sig

Požadavky

Instalace

Pokud chcete nainstalovat appcat, stáhněte si příslušný soubor ZIP pro vaši platformu. Po stažení souboru v závislosti na operačním systému byste měli najít soubor .tar.gz (Linux/macOS) nebo soubor .zip (Windows).

Extrahujte binární soubor ze staženého souboru. Měla by se zobrazit následující struktura složek:

/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
├── appcat.exe (Windows) / appcat (Linux/macOS)
├── samples/
├── fernflower.jar
├── LICENSE
├── NOTICE.txt
├── maven.default.index
├── jdtls/
├── static-report/
├── rulesets/   
├── readme.md
└── readme.html

Spuštění nástroje

Možnost 1: Spuštění appcatu ze stažené složky

Změňte adresář na extrahovaný adresář:

cd /azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
./appcat --help

Poznámka:

Binární appcat soubor nejprve vyhledá jeho závislosti v aktuálním adresáři, kde je spuštěný, a pokud se nenajde, vrátí se do následujícího scénáře.

Možnost 2: Přidání binární cesty appcat do $PATH

Přesuňte obsah složky do složky .appcat v domovském adresáři uživatele – $HOME/.appcat v Systému Linux/Mac a %USERPROFILE%/.appcat ve Windows.

Přidejte složku .appcat do PATH proměnné prostředí, abyste mohli nástroj spustit z libovolné složky v terminálu.

mv <path-to-extracted>/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/ $HOME/.appcat

Poznámka:

V tomto kontextu, když appcat se binární soubor volá z jiné složky, než je nainstalovaná, vyhledá jeho závislosti ve složce .appcat v domovském adresáři uživatele.

Využití

Podpříkazy

AppCAT poskytuje dva dílčí příkazy pro použití:

  • analyze: Spusťte analýzu zdrojového kódu u vstupního zdrojového kódu nebo binárního souboru.
  • transform: Převeďte pravidla XML z předchozích verzí (6 a starších) na formát YAML používaný touto verzí.

Poznámka:

Pro uživatele s macOS: Pokud při pokusu o spuštění aplikace dojde k chybě Apple nebylo možné ověřit, můžete tuto chybu vyřešit pomocí následujícího příkazu:

xattr -d -r com.apple.quarantine /path/to/appcat_binary

Příklad:

xattr -d -r com.apple.quarantine $HOME/.appcat/appcat

Analýza podpříkazu

Podpříkaz analyze umožňuje spustit zdrojový kód a binární analýzu.

Pokud chcete analyzovat zdrojový kód aplikace, spusťte následující příkaz:

./appcat analyze --input=<path-to-source-code> --output=<path-to-output-directory> --target=azure-appservice --overwrite

Příznak --input musí odkazovat na adresář zdrojového kódu nebo binární soubor a --output musí odkazovat na adresář pro uložení výsledků analýzy.

Další informace o příznakech analýzy potřebujete spuštěním následujícího příkazu:

./appcat analyze --help

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

./appcat analyze --list-targets

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

available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
linux
openjdk11
openjdk17
openjdk21

Analýza více aplikací

AppCAT je navržený tak, aby analyzoval jednu aplikaci na provedení příkazu, ale pokud použijete --bulk tuto možnost, můžete analyzovat více aplikací v jednom spuštění. Tato možnost vygeneruje jednu statickou sestavu ve výstupním adresáři, která obsahuje výsledky pro všechny aplikace.

Pokud chcete analyzovat více aplikací, spusťte následující příkaz:

./appcat analyze --bulk --input=<path-to-source-A> --output=<path-to-output-ABC> --target=<targetname>
./appcat analyze --bulk --input=<path-to-source-B> --output=<path-to-output-ABC> --target=<targetname>
./appcat analyze --bulk --input=<path-to-source-C> --output=<path-to-output-ABC> --target=<targetname>

Podpříkaz transformace

Podpříkaz transform umožňuje převést předchozí appcat pravidla XML použitá ve verzi 6.x do nového formátu YAML používaného touto verzí 7.x.

Pokud chcete transformovat pravidla, spusťte následující příkaz:

./appcat transform rules --input=<path-to-xml-rules> --output=<path-to-output-directory>

Příznak --input by měl odkazovat na soubor nebo adresář obsahující pravidla XML a --output příznak by měl odkazovat na výstupní adresář pro převedená pravidla YAML.

Ukázky

Poznámka:

Ujistěte se, že jsou oprávnění k souborům pro skripty v extrahované složce nastavená tak, aby povolovala provádění.

Ve složce s ukázkami najdete ukázkovou webovou aplikaci s názvem airsonic.war. Airsonic je webový streamer médií, který poskytuje přístup k vaší hudbě a umožňuje vám ji sdílet s přáteli. Další informace o Airsonic najdete v tématu Airsonic.

V adresáři ukázek najdete následující skripty pro spuštění různých typů analýzy:

  • run-assessment: Poskytuje sestavu s posouzením kódu a kroky pro migraci Airsonic do služby Aplikace Azure Service on Tomcat.
  • run-assessment-transform-rules: Převede pravidla XML aplikace Windup na pravidla YAML kompatibilní s analyzátorem lsp.
  • run-assessment-custom-rules: Poskytuje sestavu posouzení kódu pomocí vlastních pravidel (transformace XML na YAML).
  • run-assessment-openjdk21: Vygeneruje sestavu s posouzením kódu a kroky pro migraci Airsonic na OpenJDK 21.
  • run-assessment-package-only: Vytvoří sestavu vyhodnocením konkrétních balíčků.

V závislosti na operačním systému spusťte příslušný skript, jak je znázorněno v následujícím příkladu:

./samples/run-assessment

Sestavy se automaticky vygenerují a spustí. Sestavy najdete v části .. /samples/report-* (Linux/macOS) nebo .. \samples\report-* (Windows).

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ý, Nepovinný a Potenciální.

Ří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 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é nebo potenciální), ú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

Poznámky k verzi

7.6.0.1

Tato verze obsahuje následující opravy a vylepšení.

  • --analyze-known-libraries příznak: Nyní funguje ve Windows.
  • Vyčištění adresáře: Extra adresáře vytvořené během analýzy ve Windows se teď automaticky vyčistí.
  • --json-output příznak: Nyní je funkční.
  • Chyba analýzy pravidel: Chyba unable to parse all the rules for ruleset byla vyřešena.
  • Popisy karet Přehledy: Byly přidány chybějící popisy pravidel.
  • Závislost připojení k internetu: Analýza už selže bez připojení k internetu.
  • --context-lines příznak: Při nastavení na hodnotu 0 se teď chová podle očekávání.
  • Odebrání požadavku Pythonu ke spuštění nástroje

7.6.0.0

Tato verze je založená na jiné sadě komponent projektu Konveyor.

Obecné aktualizace

6.3.9.0

Tato verze obsahuje následující opravy a obsahuje sadu nových pravidel.

Obecné aktualizace

  • Integrované změny z upstreamového úložiště Windup (verze 6.3.9.Final).
  • Vyřešené nefunkční odkazy v popisech pravidel a textu nápovědy.

Pravidla

  • Fronta zpráv Azure: Aktualizována a přidána nová pravidla pro azure-message-queue-rabbitmq a azure-message-queue-amqp.
  • Azure Service Bus: Zavedlo pravidlo detekce pro Azure Service Bus.
  • MySQL a PostgreSQL: upřesňující pravidla detekce závislostí.
  • Pravidla Azure-AWS: rozšířená a vylepšená existující pravidla
  • S3 Spring Starter: Přidali jsme pravidlo detekce pro S3 Spring Starter.
  • RabbitMQ Spring JMS: Přidali jsme pravidlo detekce pro RabbitMQ Spring JMS.
  • Pravidla protokolování: Aktualizovaná a upřesňující pravidla související s protokolováním
  • Pravidlo místního úložiště: aktualizovalo a upřesňuje pravidlo místního úložiště.
  • Pravidlo systému souborů Azure: Aktualizovalo a upřesňuje pravidlo systému souborů Azure.

Knihovny

  • Aktualizované knihovny pro řešení ohrožení zabezpečení

6.3.0.9

Tato verze obsahuje následující opravy a obsahuje sadu nových pravidel.

  • 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

Známé problémy

7.6.0.1

  • Příznak --overrideProviderSettings není podporovaný.
  • Problémy s pravidly:
    • azure-system-config-01000, http-session-01000pravidla java-removals-00150 se neaktivují.
    • FileSystem - Java IO pravidlo se neaktivuje.
  • Při analýze souborů WAR ve Windows dojde k následující chybě: Failed to Move Decompiled File. Při analýze souborů WAR ve Windows dojde k chybě, která odpovídá za několik redundantních incidentů vytvořených v operačním systému Windows.
  • Chyba v kanálu Error Watcheru ve Windows: Windows system assumed buffer larger than it is, events have likely been missed. Tato chybová zpráva se zobrazí na příkazovém řádku během dlouhotrvajících úloh ve Windows.
  • Kombinace kláves Ctrl+C se nepovede zastavit probíhající analýzu. Pokud chcete tento proces obejít, ukončete ho ručně tím, že proces explicitně ukončíte.
  • V sestavách binární analýzy zobrazuje název fragmentu kódu nesprávnou nebo neexistující cestu k souboru.

7.6.0.0

  • Příznak --analyze-known-libraries nefunguje ve Windows.
  • Ve Windows se během procesu analýzy generují následující další složky, ale po dokončení se automaticky neodeberou. Tyto nadbytečné složky můžete po dokončení analýzy odebrat.
    • metadata.
    • org.eclipse.osgi
    • org.eclipse.equinox.app
    • org.eclipse.core.runtime
    • org.eclipse.equinox.launcher
  • Příznak --overrideProviderSettings není podporovaný.
  • Příznak --json-output není podporovaný. V budoucí verzi generuje výstupy JSON pro soubory output.yaml a dependency.yaml .
  • Problémy s pravidly:
    • azure-system-config-01000, http-session-01000pravidla java-removals-00150 se neaktivují.
    • FileSystem - Java IO pravidlo se neaktivuje.
    • Chyba unable to parse all the rules for ruleset při spuštění analýzy K této chybě dochází během analýzy, když nástroj nedokáže analyzovat všechna pravidla v sadě pravidel.
  • Při analýze souborů WAR ve Windows dojde k následující chybě: Failed to Move Decompiled File. Při analýze souborů WAR ve Windows dojde k chybě, která odpovídá za několik redundantních incidentů vytvořených v operačním systému Windows.
  • Chybějící popisy některých pravidel na kartě Přehledy Některá pravidla značek nemají popisy, což vede k prázdným názvům zobrazeným na kartě Přehledy sestavy .
  • Chyba v kanálu Error Watcheru ve Windows: Windows system assumed buffer larger than it is, events have likely been missed. Tato chybová zpráva se zobrazí na příkazovém řádku během dlouhotrvajících úloh ve Windows.
  • Tato verze vyžaduje aktivní připojení k internetu pro analýzu závislostí.
  • Kombinace kláves Ctrl+C se nepovede zastavit probíhající analýzu. Pokud chcete tento proces obejít, ukončete ho ručně tím, že proces explicitně ukončíte.
  • Pokud je příznak --context-lines nastavený na číslo 0, nefunguje podle očekávání. Tento příznak umožňuje uživateli omezit, kolik zdrojového kódu by se mělo v sestavě objevit. Nastavení na hodnotu 0 nemusí fungovat podle očekávání.

Licence

Aplikace Azure Migrate a posouzení kódu pro Javu je bezplatný opensourcový nástroj.