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
- Stáhněte a nainstalujte Microsoft Build openJDK 17. Ujistěte se, že je nastavená proměnná prostředí JAVA_HOME .
-
Stáhněte si Apache Maven a nainstalujte místně. Ujistěte se, že binární soubor Mavenu (
mvn
) je dostupný prostřednictvímPATH
proměnné prostředí. - Stáhněte a nainstalujte Python 3.
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ářů.
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.
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.
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.
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.
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
- Nový modul založený na projektu LSP analyzátoru Konveyor s rozhraním příkazového řádku založeným na projektu Konveyor Kantra.
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
aazure-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í appcat
zadat 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-01000
pravidlajava-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-01000
pravidlajava-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.