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


Azure Migrate-alkalmazás és kódértékelés Java-hoz

Ez az útmutató azt ismerteti, hogyan használhatja a Java Azure Migrate-alkalmazását és kódfelmérő eszközét 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 érhető el, és felméri a Java-alkalmazások bináris fájljait és forráskódját, hogy azonosítsa az Azure replatformálási és migrálási lehetőségeit. 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 nyújt, és felgyorsítja a kódismétlést, segít a Java-alkalmazások rangsorolásában és az Azure-ba való áthelyezésében. A motorokkal és szabályokkal 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. Ezután segít a Java-alkalmazás különböző Azure-célokra (Azure-alkalmazás Service, Azure Kubernetes Service, Azure Container Apps és Azure Spring Apps) való replatformálásában meghatározott Azure-replatformálási szabályokkal.

Ez az eszköz nyílt forráskód, és a Red Hat által létrehozott, az Eclipse nyilvános licencével közzétett WindUp-projekten alapul.

Á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él Leírás ID (Azonosító)
Azure App Service Ajánlott eljárások alkalmazás Azure-alkalmazás Szolgáltatásban való üzembe helyezéséhez. azure-appservice
Azure Spring Apps Ajánlott eljárások az alkalmazások Azure Spring Appsben való üzembe helyezéséhez. azure-spring-apps
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
Felderítés Azonosítja a technológia használatát, például kódtárakat és keretrendszereket. discovery
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

A parancssori appcat felület használatához le kell töltenie a következő szakaszban leírt ZIP-fájlt, és kompatibilis JDK 11-es vagy JDK 17-es telepítéssel kell rendelkeznie a számítógépen. A appcat CLI bármilyen Java-kompatibilis környezetben, például Windowson, Linuxon vagy Macen fut, Intel, Arm és Apple Silicon hardverekhez is. Javasoljuk, hogy használja az OpenJDK Microsoft-buildet.

További információkért lásd a Kibocsátási megjegyzések szakaszt .

Ismert problémák

Előfordulhat, hogy bizonyos szabályok nem aktiválódnak bizonyos Lambda-kifejezések elemzésekor. További információ: GitHub-probléma.

Ha összetett kétbájtos karaktereket tartalmazó, nem Unicode-környezetben fut appcat , az sérülést fog okozni. Kerülő megoldásokért tekintse meg a GitHub problémáját.

Korábbi kiadások

A következő korábbi kiadások is letölthetők:

Első lépések

A futtatáshoz appcatgyőződjön meg arról, hogy telepítve van egy támogatott JDK. Az eszköz a következő JDK-k használatát támogatja:

  • Microsoft Build of OpenJDK 11
  • Microsoft Build of OpenJDK 17
  • Eclipse Temurin™ JDK 11
  • Eclipse Temurin™ JDK 17

Miután telepített egy érvényes JDK-t, győződjön meg arról, hogy a telepítési könyvtár megfelelően van konfigurálva a JAVA_HOME környezeti változóban.

A folytatáshoz töltse le és bontsa ki a csomagot egy tetszőleges mappában. Ezután a következő könyvtárstruktúrát kapja:

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: Ez a könyvtár a következő dokumentációját appcattartalmazza: .
  • bin: Ez a könyvtár tartalmazza a parancssori appcat felület végrehajtható fájljait (Windows/Linux/Mac esetén).
  • minták: Ez a könyvtár egy mintaalkalmazást és több, a mintaalkalmazáson futtatandó appcat szkriptet tartalmaz.

Az eszköz futtatásához nyisson meg egy terminál munkamenetet, és írja be a következő parancsot a $APPCAT_HOME/bin könyvtárból:

./appcat --help

Ha a számítógép bármely pontjáról szeretné futtatni az eszközt, konfigurálja a $APPCAT_HOME/bin könyvtárat a PATH környezeti változóba, majd indítsa újra a terminálmunkamenetet.

Dokumentáció

A Java fő dokumentációját appcat az alábbi útmutatók ismertetik:

A technológiahasználat és a felhőbeli felkészültség felfedezése Azure-szolgáltatás nélkül

A technológiák és a felhőbeli felkészültségi célok felfedezése nagy betekintést nyújt az alkalmazások replatformálásába és modernizálásába a felhőben. Az eszköz megvizsgálja az alkalmazást és annak összetevőit, hogy átfogóan megismerje annak szerkezetét, architektúráját és függőségeit. Emellett olyan lehetséges problémákat is megtalál, amelyek kihívást jelenthetnek egy felhőkörnyezetben. A discovery cél különösen az alkalmazás és összetevői részletes leltárának létrehozására szolgál. Ez a leltár szolgál a további elemzések és tervezés alapjaként. További információt a Discovery jelentés szakaszában talál.

A következő paranccsal kezdeményezheti a felderítést és a felhő felkészültségét:

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

Ez a jelentéstípus akkor hasznos, ha nem rendelkezik egy adott Azure-szolgáltatással az alkalmazás üzembe helyezéséhez.

Az eszköz mindig azt hajtja végre, discovery hogy szerepel-e ez az érték a --target paraméterben.

Java-alkalmazás értékelése

Az értékelési fázisban a parancssori appcat felület elemzi az alkalmazást és annak összetevőit, hogy meghatározza az újratelepítésre való alkalmasságát, és azonosítsa az esetleges kihívásokat és korlátozásokat. Ez a fázis magában foglalja az alkalmazáskód elemzését és a kijelölt céloknak való megfelelés ellenőrzését.

Több cél kijelöléséhez használjon szóközzel tagolt értéklistát az --target argumentummal.

Az elérhető célok ellenőrzéséhez futtassa a következő parancsot:

./appcat --listTargetTechnologies

Ez a parancs az alábbi példához hasonló kimenetet hoz létre:

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

Ezután futtathatja appcat az elérhető célok egy vagy több kombinációját, ahogyan az a következő példában látható:

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

Az elérhető OpenJDK-célokkal is futtathat appcat , ahogyan az alábbi példában látható:

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

Az OpenJDK(Java)-célok esetében azt javasoljuk, hogy egyszerre csak egyet válasszon.

Az Azure-felmérés céljainak ajánlása

Amikor kiértékel egy alkalmazást az Azure-beli üzembe helyezéshez, javasoljuk, hogy kezdje a következő célokkal:

  • discovery
  • cloud-readiness

Emellett adjon meg egy üzembe helyezéshez szükséges Azure-szolgáltatást, például azure-appservice vagy azure-container-apps.

Ha windowsos környezetből linuxos virtuális gépre vagy tárolóba szeretne áthelyezni egy alkalmazást, javasoljuk, hogy adja hozzá a célértéket linux is.

Ha egy alkalmazást a JDK régebbi verziójáról egy újabb verzióra szeretne áthelyezni, javasoljuk, hogy az alkalmazás által használt korábbi verzióhoz képest válassza ki a következő főverziót. Például akkor használja openjdk11 , ha az alkalmazás jelenleg a Java 8-at használja.

Eredmények lekérése az appcatből

A felderítési és értékelési fázisok eredménye egy részletes jelentés, amely ütemtervet biztosít a Java-alkalmazás replatformálásához és modernizálásához, beleértve az Azure-szolgáltatásra és a replatform megközelítésre vonatkozó javaslatokat. A jelentés a replatformálási folyamat következő szakaszainak alapja. Segít a szervezeteknek megismerni az ilyen átalakításhoz szükséges erőfeszítéseket, és döntéseket hozni arról, hogyan modernizálhatják alkalmazásaikat a maximális előnyök érdekében.

A létrehozott appcat jelentés átfogó áttekintést nyújt az alkalmazásról és összetevőiről. A jelentés segítségével betekintést nyerhet az alkalmazás szerkezetébe és függőségeibe, és meghatározhatja a replatformálásra és a modernizációra való alkalmasságát.

A következő szakaszok további információkat nyújtanak a jelentésről.

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ő, Lehetséges és Információ.

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.

Felderítési jelentés

A felderítési jelentés a felderítési fázis során létrehozott jelentés. Az alkalmazás által az Információ kategóriában használt technológiák listáját jeleníti meg. Ez a jelentés csak tájékoztatást ad a felderített technológiahasználatról appcat .

Képernyőkép az appcat felderítési jelenté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ő, lehetséges vagy információ), 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.

Egyéni szabályok

Úgy is gondolhat appcat , mint egy szabálymotorra. Szabályokat használ a fájlok Java-archívumokból való kinyerésére, a Java-osztályok felbontására, a fájltípusok vizsgálatára és besorolására, a fájlok elemzésére és a jelentések összeállítására. Ebben appcata esetben a szabályok egy szabálykészlet formájában vannak definiálva. A szabálykészletek olyan egyedi szabályok gyűjteményei, amelyek meghatározott problémákat vagy mintákat határoznak meg, amelyek appcat az elemzés során észlelhetők.

Ezek a szabályok XML-ben vannak definiálva, és a következő szabálymintát használják:

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

appcat szabványos migrálási szabályok átfogó készletét biztosítja. Mivel az alkalmazások egyéni kódtárakat vagy összetevőket tartalmazhatnak, appcat saját szabályok írásával azonosíthatja a meglévő szabálykészlet által lefedett összetevők vagy szoftverek használatát.

Egyéni szabály írásához xml-ben kifejezett, tartományspecifikus nyelvet (DLS) kell használnia. Tegyük fel például, hogy olyan szabályt szeretne, amely azonosítja a PostgreSQL JDBC-illesztő használatát egy Java-alkalmazásban, és ehelyett a rugalmas Azure PostgreSQL-kiszolgáló használatát javasolja. Egy Maven-pom.xml-fájlban vagy egy Gradle-fájlban definiált PostgreSQL JDBC-illesztő megkereséséhez szabályra van szükség, például a következő példában látható függőségre:

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

A függőség használatának észleléséhez a szabály a következő XML-címkéket használja:

  • ruleset: A szabálykészlet egyedi azonosítója. A szabálykészletek olyan szabályok gyűjteményei, amelyek egy adott technológiához kapcsolódnak.
  • targetTechnology: A technológia, amelyet a szabály céloz. Ebben az esetben a szabály a Azure-alkalmazás Services, az Azure Kubernetes Service (AKS), az Azure Spring Apps és az Azure Container Apps szolgáltatást célozza.
  • rule: Egyetlen szabály gyökéreleme.
  • when: A szabály aktiválásához teljesítendő feltétel.
  • perform: A szabály aktiválásakor végrehajtandó művelet.
  • hint: A jelentésben megjelenítendő üzenet, annak kategóriája (Információ, Nem kötelező vagy Kötelező), valamint a probléma megoldásához szükséges munka, 1 (egyszerű) és 13 (nehéz) között.

Az alábbi XML az egyéni szabálydefiníciót jeleníti meg:

<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"/>
        <targetTechnology id="azure-spring-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://learn.microsoft.com/azure/postgresql/flexible-server/overview"/>
                </hint>
            </perform>
        </rule>
    </rules>
</ruleset>

A szabály appcatvégrehajtása után futtassa újra az elemzést a létrehozott jelentés áttekintéséhez. A többi incidenshez hasonlóan az értékelési jelentés felsorolja a szabályhoz kapcsolódó azonosított problémákat és érintett fájlokat.

Képernyőkép az appcatről egy szabály végrehajtásával.

A szabályok fejlesztésének teljes útmutatója elérhető a azure.github.io/appcat-docs/rules-development-guide.

Kibocsátási megjegyzések

6.3.0.9

Ez a kiadás az alábbi javításokat tartalmazza, és új szabályokat tartalmaz. További információkért lásd alább.

  • 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ájlkiterjesztések támogatását.
  • 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.

Licenc

Az Azure Migrate-alkalmazás és a Java kódértékelése ingyenes, nyílt forráskód eszköz, amely a felsőbb rétegbeli WindUp-projekt licencével azonos licenccel rendelkezik.

Gyakori kérdések

K: Hol tölthetem le az Azure Migrate-alkalmazás és a Java kódértékelésének legújabb verzióját?

A aka.ms/appcat/azure-appcat-cli-latest.zip innen tölthető leappcat.

K: Hol találhatok további információt az Azure Migrate-alkalmazásról és a Java kódértékeléséről?

Letöltéskor appcategy dokumentumkönyvtárat kap az első lépésekhez szükséges összes információval.

K: Hol találom a konkrét Azure-szabályokat?

Az összes Azure-szabály elérhető az appcat Rulesets GitHub-adattárban.

K: Hol találhatok további információt az egyéni szabályok létrehozásáról?

Tekintse meg az Azure Migrate-alkalmazás és a Java kódértékelésének szabályzatfejlesztési útmutatóját .

K: Hol kaphatok segítséget egyéni szabályok létrehozásakor?

A legjobb megoldás, ha problémát hoz létre az appcat-rulesets GitHub-adattárban.