Ocena aplikacji i kodu usługi Azure Migrate dla języka Java w wersji 7 (wersja zapoznawcza)
Uwaga
Ten artykuł dotyczy następnej generacji aplikacji usługi Azure Migrate i oceny kodu dla języka Java w wersji 7.x. Ta wersja jest dostępna w wersji zapoznawczej. Aby uzyskać poprzednią stabilną wersję 6.x, zobacz Azure Migrate application and code assessment for Java (Aplikacja usługi Azure Migrate i ocena kodu dla języka Java).
W tym artykule pokazano, jak za pomocą narzędzia do oceny aplikacji i kodu usługi Azure Migrate dla języka Java ocenić i ponownie utworzyć dowolny typ aplikacji Java. Narzędzie umożliwia ocenę gotowości aplikacji do ponownego tworzenia i migracji na platformę Azure. To narzędzie jest oferowane jako interfejs wiersza polecenia i ocenia pliki binarne aplikacji Java i kod źródłowy w celu zidentyfikowania możliwości ponownego tworzenia i migracji dla platformy Azure. Pomaga to zmodernizować i ponownieplatformować aplikacje Java na dużą skalę, identyfikując typowe przypadki użycia i wzorce kodu oraz proponując zalecane zmiany.
Narzędzie odnajduje użycie technologii aplikacji za pomocą statycznej analizy kodu, zapewnia szacowanie nakładu pracy i przyspiesza ponowne tworzenie kodu. Ta ocena ułatwia ustalanie priorytetów i przenoszenie aplikacji Java na platformę Azure. Dzięki zestawowi aparatów i reguł narzędzie może odnajdywać i oceniać różne technologie, takie jak Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) i nie tylko. Następnie narzędzie ułatwia ponowne łączenie aplikacji Java z różnymi obiektami docelowymi platformy Azure — aplikacja systemu Azure Service, Azure Kubernetes Service i Azure Container Apps — przy użyciu określonych reguł ponownego tworzenia platformy Azure.
Narzędzie jest oparte na zestawie składników w projekcie Cloud Native Computing Foundation Konveyor utworzonym i prowadzonym przez firmę Red Hat.
Omówienie
Narzędzie zostało zaprojektowane w celu ułatwienia organizacjom modernizacji aplikacji Java w sposób, który zmniejsza koszty i umożliwia szybsze innowacje. Narzędzie używa zaawansowanych technik analizy do zrozumienia struktury i zależności dowolnej aplikacji Java oraz zawiera wskazówki dotyczące refaktoryzacji i migrowania aplikacji na platformę Azure.
Za jego pomocą można wykonywać następujące zadania:
- Odkrywanie użycia technologii: Szybko sprawdź, które technologie używa aplikacja. Odnajdywanie jest przydatne, jeśli masz starsze aplikacje z nie dużą ilością dokumentacji i chcesz wiedzieć, które technologie używają.
- Ocena kodu do określonego celu: Ocena aplikacji pod kątem określonego celu platformy Azure. Sprawdź nakład pracy i modyfikacje, które należy wykonać, aby ponownieplatformować aplikacje na platformie Azure.
Obsługiwane obiekty docelowe
Narzędzie zawiera reguły ułatwiające ponowne splatformowania aplikacji, dzięki czemu można wdrażać i używać różnych usług platformy Azure.
Reguły używane przez aplikację usługi Azure Migrate i ocenę kodu są grupowane na podstawie elementu docelowego. Element docelowy to miejsce, w którym działa aplikacja, oraz ogólne potrzeby i oczekiwania. Podczas oceniania aplikacji można wybrać wiele obiektów docelowych. W poniższej tabeli opisano dostępne elementy docelowe:
Nazwa docelowa | opis | Obiekt docelowy |
---|---|---|
Azure App Service | Najlepsze rozwiązania dotyczące wdrażania aplikacji w usłudze aplikacja systemu Azure Service. | azure-appservice |
Azure Kubernetes Service | Najlepsze rozwiązania dotyczące wdrażania aplikacji w usłudze Azure Kubernetes Service. | azure-aks |
Azure Container Apps | Najlepsze rozwiązania dotyczące wdrażania aplikacji w usłudze Azure Container Apps. | azure-container-apps |
Gotowość do chmury | Ogólne najlepsze rozwiązania dotyczące przygotowania chmury aplikacji (Azure). | cloud-readiness |
Linux | Ogólne najlepsze rozwiązania dotyczące przygotowania aplikacji do systemu Linux. | linux |
OpenJDK 11 | Ogólne najlepsze rozwiązania dotyczące uruchamiania aplikacji Java 8 z językiem Java 11. | openjdk11 |
OpenJDK 17 | Ogólne najlepsze rozwiązania dotyczące uruchamiania aplikacji Java 11 z językiem Java 17. | openjdk17 |
OpenJDK 21 | Ogólne najlepsze rozwiązania dotyczące uruchamiania aplikacji Java 17 z językiem Java 21. | openjdk21 |
Gdy narzędzie oceni gotowość do chmury i powiązane usługi platformy Azure, może również zgłosić przydatne informacje dotyczące potencjalnego użycia różnych usług platformy Azure. Poniższa lista zawiera kilka omówionych usług:
- Bazy danych platformy Azure
- Azure Service Bus
- Azure Storage
- Azure Content Delivery Network
- Azure Event Hubs
- Azure Key Vault
- Azure Front Door
Pobieranie i instalowanie
Aby użyć interfejsu appcat
wiersza polecenia, musisz pobrać pakiet specyficzny dla danego środowiska i mieć wymagane zależności w danym środowisku.
Interfejs appcat
wiersza polecenia działa w dowolnym środowisku, takim jak Windows, Linux lub Mac, przy użyciu sprzętu Intel, Arm lub Apple Silicon.
W przypadku wymagania zestawu JDK zalecamy użycie zestawu Microsoft Build zestawu OpenJDK.
System operacyjny | Architektura | Link pobierania | Inne pliki |
---|---|---|---|
x64 | |||
Windows | x64 | Pobierz | sha256 / sig |
macOS | x64 | Pobierz | sha256 / sig |
Linux | x64 | Pobierz | sha256 / sig |
AArch64 | |||
Windows | AArch64 / ARM64 | Pobierz | sha256 / sig |
macOS | Apple Silicon | Pobierz | sha256 / sig |
Linux | AArch64 / ARM64 | Pobierz | sha256 / sig |
Wymagania wstępne
- Pobierz i zainstaluj program Microsoft Build of OpenJDK 17. Upewnij się, że ustawiono zmienną środowiskową JAVA_HOME .
-
Pobierz oprogramowanie Apache Maven i zainstaluj je lokalnie. Upewnij się, że plik binarny Maven (
mvn
) jest osiągalny za pomocąPATH
zmiennej środowiskowej. - Pobierz i zainstaluj język Python 3.
Instalacja
Aby zainstalować appcat
program , pobierz odpowiedni plik zip dla swojej platformy. Po pobraniu pliku w zależności od systemu operacyjnego należy znaleźć .tar.gz (Linux/macOS) lub plik .zip (Windows).
Wyodrębnij plik binarny z pobranego pliku. Powinna zostać wyświetlona następująca struktura folderów:
/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
Uruchamianie narzędzia
Opcja 1. Uruchamianie serwera appcat z pobranego folderu
Zmień katalog na wyodrębniony folder:
cd /azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
./appcat --help
Uwaga
Plik appcat
binarny najpierw wyszukuje jego zależności w bieżącym katalogu, z którego jest uruchomiony, i wraca do następującego scenariusza, jeśli nie zostaną znalezione.
Opcja 2. Dodawanie ścieżki binarnej appcat do $PATH
Przenieś zawartość folderu do folderu .appcat w katalogu głównym użytkownika — $HOME/.appcat w systemach Linux/Mac i %USERPROFILE%/.appcat w systemie Windows.
Dodaj folder .appcat do PATH
zmiennej środowiskowej, aby można było uruchomić narzędzie z dowolnego folderu w terminalu.
mv <path-to-extracted>/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/ $HOME/.appcat
Uwaga
W tym kontekście, gdy appcat
plik binarny jest wywoływany z innego folderu niż zainstalowany, szuka zależności w folderze .appcat w katalogu głównym użytkownika.
Użycie
Podpoleceń polecenia
Usługa AppCAT udostępnia dwa polecenia podrzędne do użycia:
-
analyze
: Uruchom analizę kodu źródłowego w kodzie źródłowym danych wejściowych lub binarnym. -
transform
: przekonwertuj reguły XML z poprzednich wersji (6 i starszych) na format YAML używany przez tę wersję.
Uwaga
W przypadku użytkowników systemu macOS: jeśli podczas próby uruchomienia aplikacji wystąpi błąd informujący o błędzie "Firma Apple nie może zweryfikować", możesz rozwiązać ten błąd przy użyciu następującego polecenia:
xattr -d -r com.apple.quarantine /path/to/appcat_binary
Na przykład:
xattr -d -r com.apple.quarantine $HOME/.appcat/appcat
Analizowanie podpolecenia
Podpolecenia analyze
umożliwia uruchamianie kodu źródłowego i analizy binarnej.
Aby przeanalizować kod źródłowy aplikacji, uruchom następujące polecenie:
./appcat analyze --input=<path-to-source-code> --output=<path-to-output-directory> --target=azure-appservice --overwrite
Flaga --input
musi wskazywać katalog kodu źródłowego lub plik binarny i --output
musi wskazywać katalog w celu przechowywania wyników analizy.
Aby uzyskać więcej informacji na temat flag analizy, uruchom następujące polecenie:
./appcat analyze --help
Aby sprawdzić dostępne elementy docelowe dla usługi AppCAT, uruchom następujące polecenie:
./appcat analyze --list-targets
To polecenie generuje następujące dane wyjściowe:
available target technologies:
azure-aks
azure-appservice
azure-container-apps
azure-spring-apps
cloud-readiness
linux
openjdk11
openjdk17
openjdk21
Analizowanie wielu aplikacji
Usługa AppCAT jest przeznaczona do analizowania pojedynczej aplikacji na wykonanie polecenia, ale jeśli używasz tej opcji, możesz przeanalizować wiele aplikacji w jednym wykonaniu --bulk
. Ta opcja generuje pojedynczy raport statyczny w katalogu wyjściowym zawierający wyniki dla wszystkich aplikacji.
Aby przeanalizować wiele aplikacji, uruchom następujące polecenie:
./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>
Przekształć podpolecenia
Podpolecenia transform
umożliwia przekonwertowanie poprzednich appcat
reguł XML używanych w wersji 6.x na nowy format YAML używany przez tę wersję 7.x.
Aby przekształcić reguły, uruchom następujące polecenie:
./appcat transform rules --input=<path-to-xml-rules> --output=<path-to-output-directory>
Flaga --input
powinna wskazywać plik lub katalog zawierający reguły XML, a flaga --output
powinna wskazywać katalog wyjściowy dla przekonwertowanych reguł YAML.
Przykłady
Uwaga
Upewnij się, że uprawnienia do plików dla skryptów w wyodrębnionym folderze są ustawione na zezwalanie na wykonywanie.
W folderze samples można znaleźć przykładową aplikację internetową o nazwie airsonic.war. Airsonic to internetowy streamer multimediów, który zapewnia dostęp do muzyki i umożliwia udostępnianie go znajomym. Aby dowiedzieć się więcej o Airsonic, zobacz Airsonic.
W katalogu samples można znaleźć następujące skrypty do uruchamiania różnych typów analizy:
- run-assessment: zawiera raport z oceną kodu i krokami migracji Airsonic do usługi aplikacja systemu Azure w tomcat.
- run-assessment-transform-rules: konwertuje reguły XML windup na reguły YAML zgodne z analizatorem lsp.
- run-assessment-custom-rules: udostępnia raport oceny kodu przy użyciu reguł niestandardowych (przekształcanie kodu XML do YAML).
- run-assessment-openjdk21: generuje raport z oceną kodu i krokami migracji Airsonic do openJDK 21.
- run-assessment-package-only: tworzy raport, oceniając określone pakiety.
W zależności od systemu operacyjnego uruchom odpowiedni skrypt, jak pokazano w poniższym przykładzie:
./samples/run-assessment
Raporty są generowane i uruchamiane automatycznie. Raporty można znaleźć w obszarze .. /samples/report-* (Linux/macOS) lub .. \samples\report-* (Windows).
Podsumowanie analizy
Strona docelowa raportu zawiera listę wszystkich technologii używanych w aplikacji. Pulpit nawigacyjny zawiera podsumowanie analizy, w tym liczbę zdarzeń transformacji, kategorie zdarzeń lub punkty scenariusza.
Po powiększ wykres kołowy Incydenty według kategorii , możesz zobaczyć liczbę zdarzeń według kategorii: Obowiązkowe, Opcjonalne i Potencjalne.
Na pulpicie nawigacyjnym są również wyświetlane punkty historii. Punkty scenariusza to abstrakcyjna metryka często używana w tworzeniu oprogramowania Agile w celu oszacowania poziomu nakładu pracy potrzebnego do zaimplementowania funkcji lub zmiany.
appcat
używa punktów scenariusza, aby wyrazić poziom nakładu pracy potrzebnego do migracji określonej aplikacji. Punkty scenariuszy niekoniecznie przekładają się na godziny pracy, ale wartość powinna być spójna między zadaniami.
Raport z oceny
Raport oceny zawiera omówienie problemów z transformacją, które należy rozwiązać w celu przeprowadzenia migracji aplikacji na platformę Azure.
Te problemy, nazywane również zdarzeniami, mają ważność (obowiązkowe, opcjonalne lub potencjalne), poziom nakładu pracy i liczbę wskazującą punkty scenariusza. Punkty scenariusza są określane przez obliczenie liczby zdarzeń, w których nakład pracy wymagany do rozwiązania problemu.
Szczegółowe informacje dotyczące konkretnego problemu
Dla każdego zdarzenia możesz uzyskać więcej informacji (szczegóły problemu, zawartość reguły itd.), wybierając je tylko. Zostanie również wyświetlona lista wszystkich plików, których dotyczy to zdarzenie.
Następnie dla każdego pliku lub klasy, której dotyczy zdarzenie, możesz przejść do kodu źródłowego, aby wyróżnić wiersz kodu, który utworzył problem.
Informacje o wersji
7.6.0.1
Ta wersja zawiera następujące poprawki i ulepszenia.
-
--analyze-known-libraries
flaga: Teraz działa w systemie Windows. - Oczyszczanie katalogu: dodatkowe katalogi utworzone podczas analizy w systemie Windows są teraz automatycznie czyszczone.
-
--json-output
flaga: Teraz działa. - Błąd analizowania reguł: błąd
unable to parse all the rules for ruleset
został rozwiązany. - Opisy kart szczegółowych informacji: dodano brakujące opisy reguł.
- Zależność połączenia internetowego: analiza nie kończy się już niepowodzeniem bez połączenia internetowego.
-
--context-lines
flaga: Teraz zachowuje się zgodnie z oczekiwaniami po ustawieniu wartości 0. - Usunięto wymaganie języka Python dotyczące uruchamiania narzędzia.
7.6.0.0
Ta wersja jest oparta na innym zestawie składników projektu Konveyor.
Aktualizacje ogólne
- Nowy aparat oparty na projekcie LSP Konveyor Analyzer z interfejsem wiersza polecenia opartym na projekcie Konveyor Kantra .
6.3.9.0
Ta wersja zawiera następujące poprawki i zawiera zestaw nowych reguł.
Aktualizacje ogólne
- Zintegrowane zmiany z repozytorium nadrzędnego Windup (wersja 6.3.9.Final).
- Rozwiązano uszkodzone linki w opisach reguł i tekście pomocy.
Reguły
- Kolejka komunikatów platformy Azure: zaktualizowano i dodano nowe reguły dla i
azure-message-queue-rabbitmq
azure-message-queue-amqp
. - Azure Service Bus: wprowadzono regułę wykrywania dla usługi Azure Service Bus.
- MySQL i PostgreSQL: ulepszone reguły wykrywania zależności.
- Reguły platformy Azure-AWS: ulepszone i ulepszone istniejące reguły.
- S3 Spring Starter: dodano regułę wykrywania dla programu S3 Spring Starter.
- RabbitMQ Spring JMS: dodano regułę wykrywania dla RabbitMQ Spring JMS.
- Reguły rejestrowania: zaktualizowane i ulepszone reguły związane z rejestrowaniem.
- Reguła magazynu lokalnego: zaktualizowana i udoskonalona reguła magazynu lokalnego.
- Reguła systemu plików platformy Azure: zaktualizowana i uściśliła regułę systemu plików platformy Azure.
Biblioteki
- Zaktualizowano biblioteki w celu rozwiązania luk w zabezpieczeniach.
6.3.0.9
Ta wersja zawiera następujące poprawki i zawiera zestaw nowych reguł.
- Rozwiązano problem z regułą
localhost-java-00001
. - Wprowadzono nowe reguły identyfikowania technologii, takich jak AWS S3, AWS SQS, Alibaba system operacyjny w chmurze S, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata i Alibaba Rocket MQ.
- Zaktualizowano element ,
azure-file-system-02000
aby teraz obsługiwał rozszerzenia plików XML. - Uaktualniono różne biblioteki, aby rozwiązać problem z lukami w zabezpieczeniach.
6.3.0.8
Wcześniej zestaw celów był domyślnie włączony, co utrudnia niektórym klientom ocenę dużych aplikacji z zbyt dużą liczbą zdarzeń związanych z mniej krytycznymi problemami. Aby zmniejszyć liczbę szumów w raportach, użytkownicy muszą teraz określić wiele obiektów docelowych, z parametrem --target
, podczas wykonywania appcat
polecenia , dając im możliwość wybrania tylko elementów docelowych, które mają znaczenie.
6.3.0.7
Ogólnie dostępna wersja aplikacji i kodu usługi Azure Migrate.
Znane problemy
7.6.0.1
- Flaga
--overrideProviderSettings
nie jest obsługiwana. - Problemy z regułami:
-
azure-system-config-01000
, ,http-session-01000
java-removals-00150
reguły nie są wyzwalane. -
FileSystem - Java IO
reguła nie jest wyzwalana.
-
- Analizowanie plików WAR w systemie Windows powoduje następujący błąd:
Failed to Move Decompiled File
. Błąd występuje podczas analizowania plików WAR w systemie Windows, który jest odpowiedzialny za kilka nadmiarowych zdarzeń utworzonych w systemie operacyjnym Windows. - Błąd w kanale błędu obserwatora w systemie Windows:
Windows system assumed buffer larger than it is, events have likely been missed
. Ten komunikat o błędzie jest wyświetlany w wierszu polecenia podczas długotrwałych zadań w systemie Windows. - Nie można zatrzymać ciągłej analizy za pomocą Ctrl+C. Aby obejść ten proces, ręcznie zakończ ten proces, jawnie zabijając proces.
- W raportach analizy binarnej tytuł fragmentu kodu przedstawia niepoprawną lub nieistnieną ścieżkę pliku.
7.6.0.0
- Flaga
--analyze-known-libraries
nie działa w systemie Windows. - W systemie Windows następujące dodatkowe foldery są generowane podczas procesu analizy, ale nie są automatycznie usuwane po zakończeniu. Po zakończeniu analizy możesz usunąć te dodatkowe foldery.
- metadane.
- org.eclipse.osgi
- org.eclipse.equinox.app
- org.eclipse.core.runtime
- org.eclipse.equinox.launcher
- Flaga
--overrideProviderSettings
nie jest obsługiwana. - Flaga
--json-output
nie jest obsługiwana. W przyszłej wersji generuje dane wyjściowe JSON dla plików output.yaml i dependency.yaml . - Problemy z regułami:
-
azure-system-config-01000
, ,http-session-01000
java-removals-00150
reguły nie są wyzwalane. -
FileSystem - Java IO
reguła nie jest wyzwalana. - Błąd
unable to parse all the rules for ruleset
podczas uruchamiania analizy. Ten błąd występuje podczas analizy, gdy narzędzie nie może przeanalizować wszystkich reguł w zestawie reguł.
-
- Analizowanie plików WAR w systemie Windows powoduje następujący błąd:
Failed to Move Decompiled File
. Błąd występuje podczas analizowania plików WAR w systemie Windows, który jest odpowiedzialny za kilka nadmiarowych zdarzeń utworzonych w systemie operacyjnym Windows. - Brak opisów niektórych reguł na karcie Szczegółowe informacje . Niektóre reguły tagów nie mają opisów, co prowadzi do wyświetlania pustych tytułów na karcie Szczegółowe informacje raportu.
- Błąd w kanale błędu obserwatora w systemie Windows:
Windows system assumed buffer larger than it is, events have likely been missed
. Ten komunikat o błędzie jest wyświetlany w wierszu polecenia podczas długotrwałych zadań w systemie Windows. - Ta wersja wymaga aktywnego połączenia internetowego na potrzeby analizy zależności.
- Nie można zatrzymać ciągłej analizy za pomocą Ctrl+C. Aby obejść ten proces, ręcznie zakończ ten proces, jawnie zabijając proces.
- Gdy flaga
--context-lines
jest ustawiona na liczbę 0, nie działa zgodnie z oczekiwaniami. Ta flaga umożliwia użytkownikowi ograniczenie ilości kodu źródłowego, który powinien być wyświetlany w raporcie. Ustawienie wartości 0 może nie działać zgodnie z oczekiwaniami.
Licencja
Ocena aplikacji i kodu usługi Azure Migrate dla języka Java to bezpłatne narzędzie oparte na oprogramowaniu open source.