Megosztás a következőn keresztül:


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

Telepítés

A telepítéshez appcattö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.

Képernyőkép az appcat összefoglaló jelentéséről.

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.

Képernyőkép az AppCAT összefoglaló incidensjelentéséről.

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

Képernyőkép az AppCAT értékelési jelentéséről.

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.

Képernyőkép az AppCAT-probléma részletes jelentéséről.

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.

Képernyőkép az AppCAT problémakód jelentéséről.

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

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-rabbitmqazure-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 --targeta végrehajtásakor appcatlehető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-01000a java-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-01000a java-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.