Azure Migrate-alkalmazás és kódértékelés a Java 7-es verziójához (előzetes verzió)
Feljegyzés
Ez a cikk az Azure Migrate-alkalmazás és a Java 7.x-es verziójának kódértékelésének következő generációját ismerteti. Ez a verzió előzetes verzióban érhető el. Az előző stabil verzió, a 6.x verzió esetében lásd az Azure Migrate-alkalmazást és a Java kódértékelését.
Ez a cikk bemutatja, hogyan használhatja a Java-hoz készült Azure Migrate-alkalmazást és kódfelmérő eszközt bármilyen Típusú Java-alkalmazás értékelésére és visszataszítására. Az eszköz lehetővé teszi az alkalmazások felkészültségének kiértékelését az Azure-ba való replatformáláshoz és migráláshoz. Ez az eszköz parancssori felületként (CLI) érhető el, és kiértékeli a Java-alkalmazások bináris fájljait és forráskódját, hogy azonosítsa az Azure-beli replatformálási és migrálási lehetőségeket. Segít a nagy méretű Java-alkalmazások modernizálásában és replatformálásában a gyakori használati esetek és kódminták azonosításával, valamint az ajánlott módosítások javaslatával.
Az eszköz statikus kódelemzéssel felderíti az alkalmazástechnológia használatát, munkamennyiség-becslést biztosít, és felgyorsítja a kódismétlést. Ez az értékelés segít a Java-alkalmazások rangsorolásában és az Azure-ba való áthelyezésében. A motorokkal és szabályokkal az eszköz különböző technológiákat fedezhet fel és értékelhet, mint például a Java 11, a Java 17, a Jakarta EE, a Spring, a Hibernate, a Java Message Service (JMS) stb. Az eszköz ezután segít a Java-alkalmazás különböző Azure-célokra való replatformálásában – Azure-alkalmazás Service, Azure Kubernetes Service és Azure Container Apps – meghatározott Azure-replatformálási szabályokkal.
Az eszköz a Cloud Native Computing Foundation Projekt Konveyor nevű projektjének összetevőin alapul, amelyeket Red Hat hozott létre és vezet.
Áttekintés
Az eszköz célja, hogy segítse a szervezeteket Java-alkalmazásaik modernizálásában oly módon, hogy az csökkenti a költségeket, és gyorsabb innovációt tesz lehetővé. Az eszköz fejlett elemzési technikákat használ a Java-alkalmazások szerkezetének és függőségeinek megértéséhez, és útmutatást nyújt az alkalmazások azure-ba való újrabontásához és migrálásához.
Ezzel a következő feladatokat hajthatja végre:
- Fedezze fel a technológia használatát: Gyorsan láthatja, hogy az alkalmazás mely technológiákat használja. A felderítés akkor hasznos, ha régebbi, nem sok dokumentációval rendelkező alkalmazásokkal rendelkezik, és tudni szeretné, hogy mely technológiákat használják.
- A kód értékelése egy adott célra: Alkalmazás értékelése egy adott Azure-célhoz. Ellenőrizze azokat az erőfeszítéseket és módosításokat, amelyeket meg kell tennie az alkalmazások Azure-ba való visszataszításához.
Támogatott célok
Az eszköz olyan szabályokat tartalmaz, amelyek segítenek az alkalmazások replatformálásában, így különböző Azure-szolgáltatásokban helyezheti üzembe és használhatja azokat.
Az Azure Migrate-alkalmazás és a kódértékelés által használt szabályok cél alapján vannak csoportosítva. A cél az alkalmazás futásának helye vagy működése, valamint az általános igények és elvárások. Egy alkalmazás értékelésekor több célt is kiválaszthat. Az alábbi táblázat az elérhető célokat ismerteti:
Célnév | Leírás | Cél |
---|---|---|
Azure App Service | Ajánlott eljárások alkalmazás Azure-alkalmazás Szolgáltatásban való üzembe helyezéséhez. | azure-appservice |
Azure Kubernetes Service | Ajánlott eljárások az alkalmazások Azure Kubernetes Service-ben való üzembe helyezéséhez. | azure-aks |
Azure Container-alkalmazások | Ajánlott eljárások az alkalmazások Azure Container Appsben való üzembe helyezéséhez. | azure-container-apps |
Felhőbeli készültség | Az alkalmazásfelhő (Azure) felkészítése általános ajánlott eljárások. | cloud-readiness |
Linux | Általános ajánlott eljárások egy linuxos alkalmazás készenlétbe hozáshoz. | linux |
OpenJDK 11 | Java 8-alkalmazások Java 11-zel való futtatásának általános ajánlott eljárásai. | openjdk11 |
OpenJDK 17 | Java 11-alkalmazások Java 17-zel való futtatásának általános ajánlott eljárásai. | openjdk17 |
OpenJDK 21 | Java 17-alkalmazások Java 21-zel való futtatásának általános ajánlott eljárásai. | openjdk21 |
Amikor az eszköz felméri a felhőbeli felkészültséget és a kapcsolódó Azure-szolgáltatásokat, hasznos információkat is jelenthet a különböző Azure-szolgáltatások lehetséges használatára vonatkozóan. Az alábbi lista néhány érintett szolgáltatást mutat be:
- Azure-adatbázisok
- Azure Service Bus
- Azure Storage
- Azure Content Delivery Network
- Azure-eseményközpontok
- Azure Key Vault
- Azure Front Door
Letöltés és telepítés
A parancssori appcat
felület használatához le kell töltenie a környezetéhez tartozó csomagot, és rendelkeznie kell a szükséges függőségekkel a környezetben.
A appcat
parancssori felület bármilyen környezetben , például Windowson, Linuxon vagy Macen fut Intel, Arm vagy Apple Silicon hardver használatával.
A JDK-követelményhez az OpenJDK Microsoft-buildjének használatát javasoljuk.
OS | Architektúra | Letöltési hivatkozás | Egyéb fájlok |
---|---|---|---|
x64 | |||
Windows | x64 | Letöltés | sha256 / sig |
macOS | x64 | Letöltés | sha256 / sig |
Linux | x64 | Letöltés | sha256 / sig |
AArch64 | |||
Windows | AArch64 / ARM64 | Letöltés | sha256 / sig |
macOS | Apple Silicon | Letöltés | sha256 / sig |
Linux | AArch64 / ARM64 | Letöltés | sha256 / sig |
Előfeltételek
- Töltse le és telepítse az OpenJDK 17 Microsoft Buildet. Győződjön meg arról, hogy a JAVA_HOME környezeti változó be van állítva.
-
Töltse le az Apache Maven-t , és telepítse helyileg. Győződjön meg arról, hogy a Maven bináris (
mvn
) elérhető a környezeti változón keresztülPATH
. - Töltse le és telepítse a Python 3-at.
Telepítés
A telepítéshez appcat
töltse le a platformhoz megfelelő zip-fájlt. A fájl letöltése után az operációs rendszertől függően .tar.gz (Linux/macOS) vagy .zip fájlt (Windows) kell keresnie .
Bontsa ki a bináris fájlt a letöltött fájlból. A következő mappastruktúra jelenik meg:
/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
Az eszköz futtatása
1. lehetőség: Az appcat futtatása a letöltött mappából
Módosítsa a könyvtárat a kibontott mappára:
cd /azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
./appcat --help
Feljegyzés
A appcat
bináris először az aktuális könyvtárban keresi meg a függőségeit, ahonnan fut, és visszaesik a következő forgatókönyvbe, ha nem található.
2. lehetőség: Adja hozzá az appcat bináris elérési útját a $PATH
Helyezze át a mappa tartalmát a felhasználó kezdőlapján lévő .appcat mappába – Linux/Mac rendszeren $HOME/.appcat , Windowson pedig %USERPROFILE%/.appcat .
Adja hozzá az .appcat mappát a PATH
környezeti változóhoz, hogy az eszközt a terminál bármely mappájából futtathassa.
mv <path-to-extracted>/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/ $HOME/.appcat
Feljegyzés
Ebben az összefüggésben, ha a appcat
bináris hívása egy másik mappából történik, mint ahol telepítve van, a felhasználó kezdőkönyvtárában lévő .appcat mappában keresi a függőségeit.
Használat
Alparancsok
Az AppCAT két alparancsot biztosít a használathoz:
-
analyze
: Forráskódelemzés futtatása bemeneti forráskódon vagy bináris fájlon. -
transform
: Konvertálja az XML-szabályokat a korábbi verziókból (6-os és régebbi verziókból) az ebben a verzióban használt YAML-formátumra.
Feljegyzés
MacOS-felhasználók esetén: Ha az alkalmazás futtatásakor az "Apple nem tudta ellenőrizni" hibaüzenet jelenik meg, a következő paranccsal háríthatja el ezt a hibát:
xattr -d -r com.apple.quarantine /path/to/appcat_binary
Példa:
xattr -d -r com.apple.quarantine $HOME/.appcat/appcat
Alparancs elemzése
Az analyze
alparancs lehetővé teszi a forráskód és a bináris elemzés futtatását.
Az alkalmazás forráskódjának elemzéséhez futtassa a következő parancsot:
./appcat analyze --input=<path-to-source-code> --output=<path-to-output-directory> --target=azure-appservice --overwrite
A --input
jelölőnek egy forráskódkönyvtárra vagy egy bináris fájlra kell mutatnia, és --output
egy könyvtárra kell mutatnia az elemzési eredmények tárolásához.
Az elemzési jelzőkkel kapcsolatos további információkért futtassa a következő parancsot:
./appcat analyze --help
Az AppCAT elérhető céljainak ellenőrzéséhez futtassa a következő parancsot:
./appcat analyze --list-targets
Ez a parancs a következő kimenetet hozza létre:
available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
linux
openjdk11
openjdk17
openjdk21
Több alkalmazás elemzése
Az AppCAT parancsvégrehajtásonként egyetlen alkalmazás elemzésére szolgál, de ha ezt a --bulk
lehetőséget használja, több alkalmazást is elemezhet egyetlen végrehajtás során. Ez a beállítás egyetlen statikus jelentést hoz létre a kimeneti könyvtárban, amely tartalmazza az összes alkalmazás eredményeit.
Több alkalmazás elemzéséhez futtassa a következő parancsot:
./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>
Alparancs átalakítása
Az transform
alparancs lehetővé teszi, hogy a 6.x verzióban használt korábbi appcat
XML-szabályokat a 7.x verzió által használt új YAML-formátumra konvertálja.
Szabályok átalakításához futtassa a következő parancsot:
./appcat transform rules --input=<path-to-xml-rules> --output=<path-to-output-directory>
A --input
jelölőnek egy XML-szabályokat tartalmazó fájlra vagy könyvtárra kell mutatnia, a --output
jelölőnek pedig a konvertált YAML-szabályok kimeneti könyvtárára kell mutatnia.
Példák
Feljegyzés
Győződjön meg arról, hogy a kinyert mappában lévő szkriptek fájlengedélyei a végrehajtás engedélyezésére vannak beállítva.
A minták mappában található egy airsonic.war nevű minta webalkalmazás. Az Airsonic egy webes médiastreamelő, amely hozzáférést biztosít a zenéjéhez, és lehetővé teszi, hogy megossza a barátaival. Az Airsonicról további információt az Airsonic című témakörben talál.
A mintakönyvtárban a következő szkriptek találhatók, amelyek különböző elemzési típusokat futtatnak:
- run-assessment: Kódértékelést és lépéseket tartalmaz az Airsonic Azure-alkalmazás Tomcat szolgáltatásba való migrálásához.
- run-assessment-transform-rules: Átalakítja a Windup XML-szabályokat analyzer-lsp-kompatibilis YAML-szabályokká.
- run-assessment-custom-rules: Kódértékelési jelentést biztosít egyéni szabályok használatával (XML-ből YAML-be alakítva).
- run-assessment-openjdk21: Létrehoz egy jelentést kódértékeléssel és az Airsonic OpenJDK 21-be való migrálásának lépéseivel.
- run-assessment-package-only: Adott csomagok értékelésével készít jelentést.
Az operációs rendszertől függően futtassa a megfelelő szkriptet az alábbi példában látható módon:
./samples/run-assessment
A jelentések automatikusan létrejönnek és elindulnak. A jelentéseket a .. /samples/report-* (Linux/macOS) vagy .. \samples\report-* (Windows).
Az elemzés összefoglalása
A jelentés kezdőlapja felsorolja az alkalmazásban használt összes technológiát. Az irányítópult összefoglalja az elemzést, beleértve az átalakítási incidensek számát, az incidensek kategóriáit vagy a történeti pontokat.
Ha nagyítja az Incidensek kategória szerint kördiagramot, a következő kategóriák szerint láthatja az incidensek számát: Kötelező, Nem kötelező és Lehetséges.
Az irányítópult a történeti pontokat is megjeleníti. A történeti pontok az Agilis szoftverfejlesztésben gyakran használt absztrakt metrikák, amelyekkel megbecsülhetők a funkciók vagy módosítások implementálásához szükséges erőfeszítések.
appcat
a történeti pontok használatával fejezi ki egy adott alkalmazás migrálásához szükséges erőfeszítéseket. A történeti pontok nem feltétlenül fordíthatók munkaidőre, de az értéknek konzisztensnek kell lennie a tevékenységek között.
Értékelési jelentés
Az értékelési jelentés áttekintést nyújt azokról az átalakítási problémákról, amelyeket meg kell oldani az alkalmazás Azure-ba való migrálásához.
Ezek a problémák, más néven incidensek súlyossággal (kötelező, nem kötelező vagy lehetséges), erőfeszítési szinttel és a történeti pontokat jelző számmal rendelkeznek. A történeti pontokat a probléma megoldásához szükséges incidensek számának kiszámításával határozzuk meg.
Részletes információ egy adott problémáról
Minden incidenshez további információkat (a probléma részleteit, a szabály tartalmát stb.) csak kiválasztva kaphat. Az incidens által érintett összes fájl listáját is lekérheti.
Ezután az incidens által érintett összes fájl vagy osztály esetében a forráskódba lépve kiemelheti a problémát létrehozó kódsort.
Kibocsátási megjegyzések
7.6.0.1
Ez a kiadás a következő javításokat és fejlesztéseket tartalmazza.
-
--analyze-known-libraries
jelölő: Mostantól Windows rendszeren is működik. - Címtárkarbantartás: A Windowson végzett elemzés során létrehozott további könyvtárak automatikusan törlődnek.
-
--json-output
jelölő: Most már működőképes. - Szabályelemzési hiba: A hiba
unable to parse all the rules for ruleset
megoldódott. - Elemzések lap leírása: Hiányzó szabályleírások lettek hozzáadva.
- Internetkapcsolat-függőség: Az elemzés már nem működik internetkapcsolat nélkül.
-
--context-lines
jelölő: Most a várt módon viselkedik, ha 0-ra van állítva. - Az eszköz futtatására vonatkozó Python-követelmény el lett távolítva.
7.6.0.0
Ez a kiadás a Konveyor-projekt különböző összetevőin alapul.
Általános frissítések
- Új motor a Konveyor Analyzer LSP projekten alapul, a Konveyor Kantra projekten alapuló cli-vel.
6.3.9.0
Ez a kiadás az alábbi javításokat tartalmazza, és új szabályokat tartalmaz.
Általános frissítések
- Integrált változások a Windup felsőbb rétegbeli adattárából (6.3.9.Final Release).
- Megoldotta a szabályleírásokban és a súgószövegben található hibás hivatkozásokat.
Szabályok
- Azure Message Queue: frissített és hozzáadott új szabályok és
azure-message-queue-rabbitmq
azure-message-queue-amqp
. - Azure Service Bus: bevezetett egy észlelési szabályt az Azure Service Bushoz.
- MySQL és PostgreSQL: kifinomult függőségészlelési szabályok.
- Azure-AWS-szabályok: továbbfejlesztett és továbbfejlesztett meglévő szabályok.
- S3 Spring Starter: hozzáadott egy észlelési szabályt az S3 Spring Starterhez.
- RabbitMQ Spring JMS: hozzáadott egy észlelési szabályt a RabbitMQ Spring JMS-hez.
- Naplózási szabályok: frissített és pontosított naplózási szabályok.
- Helyi tárolási szabály: frissítette és finomította a helyi tárolási szabályt.
- Azure Fájlrendszerszabály: frissítette és finomhangolta az Azure Fájlrendszer szabályt.
Kódtárak
- Frissített kódtárak a biztonsági rések kezelése érdekében.
6.3.0.9
Ez a kiadás az alábbi javításokat tartalmazza, és új szabályokat tartalmaz.
- Megoldotta a
localhost-java-00001
szabálysal kapcsolatos problémát. - Új szabályokat vezetett be az olyan technológiák azonosítására, mint az AWS S3, az AWS SQS, az Alibaba Cloud OSS, az Alibaba Cloud SMS, az Alibaba Scheduler X, az Alibaba Cloud Seata és az Alibaba Rocket MQ.
- Frissítettük az
azure-file-system-02000
XML-fájlbővítményeket. - A biztonsági rések kezelése érdekében különböző kódtárakat frissített.
6.3.0.8
Korábban alapértelmezés szerint engedélyezték a célok egy csoportját, ami megnehezíti bizonyos ügyfelek számára, hogy a kevésbé kritikus problémákhoz kapcsolódó túl sok incidenssel rendelkező nagy alkalmazásokat értékeljenek. A jelentések zajának csökkentése érdekében a felhasználóknak most már több célértéket kell megadniuk, és a paraméternek --target
a végrehajtásakor appcat
lehetőséget kell adni számukra, hogy csak azokat a célokat jelöljék ki, amelyek fontosak.
6.3.0.7
Az Azure Migrate-alkalmazás és a kódértékelés ga (általánosan elérhető) kiadása.
Ismert problémák
7.6.0.1
- A jelölő
--overrideProviderSettings
nem támogatott. - Szabályokkal kapcsolatos problémák:
-
azure-system-config-01000
,http-session-01000
ajava-removals-00150
szabályok nem aktiválódnak. -
FileSystem - Java IO
a szabály nem aktiválódik.
-
- A WAR-fájlok windowsos elemzése a következő hibát eredményezi:
Failed to Move Decompiled File
. Hiba történik a WAR-fájlok Windows rendszeren történő elemzésekor, amely a Windows operációs rendszeren létrehozott néhány redundáns incidensért felelős. - Hiba a Windows Watcher hibacsatornájában:
Windows system assumed buffer larger than it is, events have likely been missed
. Ez a hibaüzenet a parancssorban jelenik meg a Windowson futó hosszú ideig futó feladatok során. - A Ctrl+C nem állítja le a folyamatban lévő elemzést. A megkerülés érdekében manuálisan állítsa le a folyamatot a folyamat explicit megölésével.
- A bináris elemzési jelentésekben a kódrészlet címe helytelen vagy nem létező fájl elérési útját jeleníti meg.
7.6.0.0
- A jelölő
--analyze-known-libraries
nem működik Windows rendszeren. - Windows rendszeren a következő további mappák jönnek létre az elemzési folyamat során, de a befejezés után nem törlődnek automatikusan. Előfordulhat, hogy az elemzés befejezése után el szeretné távolítani ezeket a további mappákat.
- .metadata
- org.eclipse.osgi
- org.eclipse.equinox.app
- org.eclipse.core.runtime
- org.eclipse.equinox.launcher
- A jelölő
--overrideProviderSettings
nem támogatott. - A jelölő
--json-output
nem támogatott. Egy későbbi kiadásban JSON-kimeneteket hoz létre a output.yaml és a dependency.yaml fájlokhoz. - Szabályokkal kapcsolatos problémák:
-
azure-system-config-01000
,http-session-01000
ajava-removals-00150
szabályok nem aktiválódnak. -
FileSystem - Java IO
a szabály nem aktiválódik. - Hiba
unable to parse all the rules for ruleset
az elemzés futtatásakor. Ez a hiba akkor fordul elő az elemzés során, ha az eszköz nem elemzi a szabálykészlet összes szabályát.
-
- A WAR-fájlok windowsos elemzése a következő hibát eredményezi:
Failed to Move Decompiled File
. Hiba történik a WAR-fájlok Windows rendszeren történő elemzésekor, amely a Windows operációs rendszeren létrehozott néhány redundáns incidensért felelős. - Hiányzó leírások néhány szabályhoz az Elemzések lapon. Egyes címkeszabályokban nincsenek leírások, ezért üres címek jelennek meg a jelentés Insights lapján.
- Hiba a Windows Watcher hibacsatornájában :
Windows system assumed buffer larger than it is, events have likely been missed
. Ez a hibaüzenet a parancssorban jelenik meg a Windowson futó hosszú ideig futó feladatok során. - Ehhez a kiadáshoz aktív internetkapcsolat szükséges a függőségelemzéshez.
- A Ctrl+C nem állítja le a folyamatban lévő elemzést. A megkerülés érdekében manuálisan állítsa le a folyamatot a folyamat explicit megölésével.
- Ha a jelölő
--context-lines
értéke 0, az nem a várt módon működik. Ezzel a jelzővel a felhasználó korlátozhatja, hogy a forráskód mekkora része jelenjen meg a jelentésben. Előfordulhat, hogy a 0 értékre való beállítás nem a várt módon működik.
Licenc
Az Azure Migrate-alkalmazás és a Java kódértékelése egy ingyenes, nyílt forráskód-alapú eszköz.