Condividi tramite


Applicazione e valutazione del codice di Azure Migrate per Java versione 7 (anteprima)

Nota

Questo articolo è destinato alla prossima generazione di applicazioni e valutazione del codice di Azure Migrate per Java, versione 7.x. Questa versione è disponibile in anteprima. Per la versione stabile precedente, versione 6.x, vedere l'applicazione Azure Migrate e la valutazione del codice per Java.

Questo articolo illustra come usare l'applicazione Azure Migrate e lo strumento di valutazione del codice per Java per valutare e riformare qualsiasi tipo di applicazione Java. Lo strumento consente di valutare l'idoneità delle applicazioni per il trasferimento su altre piattaforme e la migrazione ad Azure. Questo strumento viene offerto come interfaccia della riga di comando e valuta i file binari dell'applicazione Java e il codice sorgente per identificare le opportunità di riplatforming e migrazione per Azure. Consente di modernizzare e trasferire su altre piattaforme applicazioni Java su larga scala identificando i casi d'uso e i modelli di codice comuni e proponendo le modifiche consigliate.

Lo strumento individua l'utilizzo della tecnologia delle applicazioni tramite l'analisi statica del codice, fornisce una stima del lavoro e accelera la ripiattaforma del codice. Questa valutazione consente di classificare in ordine di priorità e spostare applicazioni Java in Azure. Con un set di motori e regole, lo strumento può individuare e valutare tecnologie diverse, ad esempio Java 11, Java 17, Jakarta EE, Spring, Hibernate, Java Message Service (JMS) e altro ancora. Lo strumento consente quindi di riformformare l'applicazione Java in destinazioni di Azure diverse, app Azure Servizio, servizio Azure Kubernetes e App Azure Container, con regole di ripiattaforma di Azure specifiche.

Lo strumento si basa su un set di componenti nel progetto Cloud Native Computing Foundation Konveyor, creato e guidato da Red Hat.

Panoramica

Lo strumento è progettato per aiutare le organizzazioni a modernizzare le proprie applicazioni Java in modo da ridurre i costi e consentire un'innovazione più rapida. Lo strumento usa tecniche di analisi avanzate per comprendere la struttura e le dipendenze di qualsiasi applicazione Java e fornisce indicazioni su come effettuare il refactoring e la migrazione delle applicazioni ad Azure.

Lo strumento consente di effettuare le attività seguenti:

  • Individuare l'utilizzo della tecnologia: vedere rapidamente quali tecnologie usano un'applicazione. L'individuazione è utile se si dispone di applicazioni legacy senza molta documentazione e si vuole sapere quali tecnologie usano.
  • Valutare il codice in una destinazione specifica: valutare un'applicazione per una destinazione di Azure specifica. Controllare l’impegno e le modifiche da apportare per trasferire le applicazioni da altre piattaforme in Azure.

Destinazioni supportate

Lo strumento contiene regole che consentono di trasferire ad altre piattaforme le applicazioni, in modo da poter distribuire e usare i servizi di Azure seguenti.

Le regole usate da valutazione di applicazioni e codice di Azure Migrate vengono raggruppate in base a una destinazione. Una destinazione indica dove e come viene eseguita l'applicazione, oltre alle esigenze e alle aspettative generali. Quando si valuta un'applicazione, è possibile scegliere più destinazioni. La tabella seguente descrive le destinazioni disponibili:

Nome di destinazione Descrizione Destinazione
Servizio app di Azure Procedure consigliate per la distribuzione di un'app nel servizio app di Azure. azure-appservice
Servizio Azure Kubernetes Procedure consigliate per la distribuzione di un'app nel servizio Azure Kubernetes. azure-aks
App contenitore di Azure Procedure consigliate per la distribuzione di un'app in App contenitore di Azure. azure-container-apps
Idoneità del cloud Procedure generali consigliate per la preparazione di un'applicazione Cloud (Azure). cloud-readiness
Linux Procedure generali consigliate per la preparazione di un'applicazione Linux. linux
OpenJDK 11 Procedure generali consigliate per l'esecuzione di un'applicazione Java 8 con Java 11. openjdk11
OpenJDK 17 Procedure generali consigliate per l'esecuzione di un'applicazione Java 11 con Java 17. openjdk17
OpenJDK 21 Procedure generali consigliate per l'esecuzione di un'applicazione Java 17 con Java 21. openjdk21

Quando lo strumento valuta l'idoneità del cloud e dei servizi di Azure correlati, può anche segnalare informazioni utili per il potenziale utilizzo di servizi di Azure diversi. L'elenco seguente mostra alcuni dei servizi offerti:

  • Database di Azure
  • Bus di servizio di Azure
  • Archiviazione di Azure
  • Rete di distribuzione dei contenuti di Azure
  • Hub eventi di Azure
  • Azure Key Vault
  • Frontdoor di Azure

Scaricare e installare

Per usare l'interfaccia della appcat riga di comando, è necessario scaricare il pacchetto specifico dell'ambiente e avere le dipendenze necessarie nell'ambiente. L'interfaccia della appcat riga di comando viene eseguita in qualsiasi ambiente, ad esempio Windows, Linux o Mac, usando l'hardware Intel, Arm o Apple Silicon. Per il requisito JDK, è consigliabile usare Microsoft Build of OpenJDK.

Sistema operativo Architettura Collegamento di download Altri file
x64
Finestre x64 Scaricare sha256 / sig
macOS x64 Scaricare sha256 / sig
Linux x64 Scaricare sha256 / sig
AArch64
Finestre AArch64/ ARM64 Scaricare sha256 / sig
macOS Apple Silicon Scaricare sha256 / sig
Linux AArch64/ ARM64 Scaricare sha256 / sig

Prerequisiti

Installazione

Per installare appcat, scaricare il file ZIP appropriato per la piattaforma. Dopo aver scaricato il file, a seconda del sistema operativo, è necessario trovare un .tar.gz (Linux/macOS) o .zip file (Windows).

Estrarre il file binario dal file scaricato. Verrà visualizzata la struttura di cartelle seguente:

/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

Esecuzione dello strumento

Opzione 1: Eseguire appcat dalla cartella scaricata

Modificare la directory nella cartella estratta:

cd /azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/
./appcat --help

Nota

Il appcat file binario cerca innanzitutto le relative dipendenze nella directory corrente, da cui è in esecuzione ed esegue il fallback allo scenario seguente se non vengono trovate.

Opzione 2: Aggiungere il percorso binario appcat al $PATH

Spostare il contenuto della cartella nella cartella appcat nella home directory dell'utente, $HOME/.appcat in Linux/Mac e %USERPROFILE%/.appcat in Windows.

Aggiungere la cartella appcat alla PATH variabile di ambiente in modo da poter eseguire lo strumento da qualsiasi cartella nel terminale.

mv <path-to-extracted>/azure-migrate-appcat-for-java-cli-<OS>-<architecture>-<release-version>-preview/ $HOME/.appcat

Nota

In questo contesto, quando il appcat file binario viene chiamato da una cartella diversa da quella in cui è installato, cerca le relative dipendenze nella cartella appcat nella home directory dell'utente.

Utilizzo

Sottocomandi

AppCAT fornisce due sottocomandi per l'utilizzo:

  • analyze: eseguire l'analisi del codice sorgente sul codice sorgente di input o su un file binario.
  • transform: converte le regole XML dalle versioni precedenti (6 e precedenti) al formato YAML usato da questa versione.

Nota

Per gli utenti macOS: se viene visualizzato un errore che indica che "Apple non è stato in grado di verificare" quando si tenta di eseguire l'app, è possibile risolvere l'errore usando il comando seguente:

xattr -d -r com.apple.quarantine /path/to/appcat_binary

Ad esempio:

xattr -d -r com.apple.quarantine $HOME/.appcat/appcat

Analizza sottocomando

Il analyze sottocomando consente di eseguire il codice sorgente e l'analisi binaria.

Per analizzare il codice sorgente dell'applicazione, eseguire il comando seguente:

./appcat analyze --input=<path-to-source-code> --output=<path-to-output-directory> --target=azure-appservice --overwrite

Il --input flag deve puntare a una directory del codice sorgente o a un file binario e --output deve puntare a una directory per archiviare i risultati dell'analisi.

Per altre informazioni sui flag di analisi, eseguire il comando seguente:

./appcat analyze --help

Per controllare le destinazioni disponibili per AppCAT, eseguire il comando seguente:

./appcat analyze --list-targets

Questo comando produce l'output seguente:

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

Analisi di più applicazioni

AppCAT è progettato per analizzare una singola applicazione per ogni esecuzione del comando, ma se si usa l'opzione --bulk , è possibile analizzare più applicazioni in un'unica esecuzione. Questa opzione genera un singolo report statico nella directory di output che include i risultati per tutte le applicazioni.

Per analizzare più applicazioni, eseguire il comando seguente:

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

Trasforma sottocomando

Il transform sottocomando consente di convertire le regole XML precedenti appcat usate nella versione 6.x nel nuovo formato YAML usato da questa versione 7.x.

Per trasformare le regole, eseguire il comando seguente:

./appcat transform rules --input=<path-to-xml-rules> --output=<path-to-output-directory>

Il --input flag deve puntare a un file o a una directory contenente regole XML e il --output flag deve puntare alla directory di output per le regole YAML convertite.

Esempi

Nota

Assicurarsi che le autorizzazioni per i file per gli script nella cartella estratta siano impostate per consentire l'esecuzione.

Nella cartella samples è possibile trovare un'applicazione Web di esempio denominata airsonic.war. Airsonic è un streamer multimediale basato sul Web, fornendo l'accesso alla tua musica e consentendoti di condividerlo con gli amici. Per altre informazioni su Airsonic, vedi Airsonic.

Nella directory degli esempi è possibile trovare gli script seguenti per eseguire diversi tipi di analisi:

  • run-assessment: fornisce un report con valutazione del codice e passaggi per la migrazione di Airsonic al servizio app Azure in Tomcat.
  • run-assessment-transform-rules: converte le regole XML windup in regole YAML compatibili con analyzer-lsp.
  • run-assessment-custom-rules: fornisce un report di valutazione del codice usando regole personalizzate (trasformare XML in YAML).
  • run-assessment-openjdk21: genera un report con valutazione del codice e passaggi per la migrazione di Airsonic a OpenJDK 21.
  • run-assessment-package-only: produce un report valutando pacchetti specifici.

A seconda del sistema operativo, eseguire lo script appropriato, come illustrato nell'esempio seguente:

./samples/run-assessment

I report vengono generati e avviati automaticamente. È possibile trovare i report in .. /samples/report-* (Linux/macOS) o .. \samples\report-* (Windows).

Riepilogo dell'analisi

La pagina di destinazione del report elenca tutte le tecnologie usate nell'applicazione. Il dashboard fornisce un riepilogo dell'analisi, tra cui il numero di eventi imprevisti di trasformazione, le categorie di eventi imprevisti o i punti della storia.

Screenshot del report di riepilogo appcat.

Quando si fa zoom avanti sul grafico a torta Eventi imprevisti per categoria , è possibile visualizzare il numero di eventi imprevisti per categoria: Obbligatorio, Facoltativo e Potenziale.

Il dashboard mostra anche i punti della storia. I punti della storia sono una metrica astratta comunemente usata nello sviluppo software Agile per stimare il livello di sforzo necessario per implementare una funzionalità o una modifica. appcat usa i punti della storia per esprimere il livello di impegno necessario per eseguire la migrazione di una determinata applicazione. I punti della storia non si traducono necessariamente in ore lavorative, ma il valore deve essere coerente tra le attività.

Screenshot del report di riepilogo degli incidenti di AppCAT.

Report di valutazione

Il report di valutazione offre una panoramica dei problemi di trasformazione che sarebbe necessario risolvere per eseguire la migrazione dell'applicazione ad Azure.

Questi problemi, detti anche Eventi imprevisti, hanno una gravità (obbligatorio, facoltativo o potenziale), un livello di sforzo e un numero che indica i punti della storia. I punti della storia sono determinati calcolando il numero di incidentinecessari per risolvere il problema.

Screenshot del report di valutazione appCAT.

Informazioni dettagliate per un problema specifico

Per ogni incidente, è possibile ottenere altre informazioni (dettagli del problema, contenuto della regola e così via) semplicemente selezionandolo. Si ottiene anche l'elenco di tutti i file interessati da questo incidente.

Screenshot del report dettagli del problema di AppCAT.

Quindi, per ogni file o classe interessata dall'incidente, è possibile passare al codice sorgente per evidenziare la riga di codice che ha creato il problema.

Screenshot del report del codice del problema di AppCAT.

Note sulla versione

7.6.0.1

Questa versione contiene le correzioni e i miglioramenti seguenti.

  • --analyze-known-libraries flag: ora funziona in Windows.
  • Pulizia directory: le directory aggiuntive create durante l'analisi in Windows vengono ora pulite automaticamente.
  • --json-output flag: ora operativo.
  • Errore di analisi delle regole: l'errore unable to parse all the rules for ruleset è stato risolto.
  • Descrizioni delle schede informazioni dettagliate: sono state aggiunte descrizioni delle regole mancanti.
  • Dipendenza connessione Internet: l'analisi non riesce più senza una connessione Internet.
  • --context-lines flag: ora si comporta come previsto quando è impostato su 0.
  • Rimozione del requisito python per eseguire lo strumento.

7.6.0.0

Questa versione si basa su un set diverso di componenti del progetto Konveyor.

Aggiornamenti generali

6.3.9.0

Questa versione contiene le correzioni seguenti e include un set di nuove regole.

Aggiornamenti generali

  • Modifiche integrate dal repository upstream Windup (versione 6.3.9.Final).
  • Collegamenti interrotti risolti nelle descrizioni delle regole e testo della Guida.

Regole

  • Coda messaggi di Azure: aggiornata e aggiunta di nuove regole per azure-message-queue-rabbitmq e azure-message-queue-amqp.
  • bus di servizio di Azure: è stata introdotta una regola di rilevamento per bus di servizio di Azure.
  • MySQL e PostgreSQL: regole di rilevamento delle dipendenze ottimizzate.
  • Regole di Azure-AWS: regole esistenti migliorate e migliorate.
  • S3 Spring Starter: aggiunta di una regola di rilevamento per S3 Spring Starter.
  • RabbitMQ Spring JMS: è stata aggiunta una regola di rilevamento per RabbitMQ Spring JMS.
  • Regole di registrazione: regole aggiornate e ottimizzate per la registrazione.
  • Regola di archiviazione locale: aggiornata e perfezionata la regola di archiviazione locale.
  • Regola del file system di Azure: aggiornata e perfezionata la regola del file system di Azure.

Raccolte

  • Librerie aggiornate per risolvere le vulnerabilità di sicurezza.

6.3.0.9

Questa versione contiene le correzioni seguenti e include un set di nuove regole.

  • È stato risolto un problema con la localhost-java-00001 regola.
  • Sono state introdotte nuove regole per identificare tecnologie come AWS S3, AWS SQS, Alibaba Sistema operativo cloud S, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata e Alibaba Rocket MQ.
  • Aggiornato per azure-file-system-02000 supportare ora le estensioni di file XML.
  • Aggiornamento di varie librerie per risolvere le vulnerabilità di sicurezza.

6.3.0.8

In precedenza, per impostazione predefinita veniva abilitato un set di destinazioni, che rendeva difficile per alcuni clienti valutare applicazioni di grandi dimensioni causando troppi incidenti correlati a problemi meno critici. Per ridurre il rumore nei report, ora gli utenti devono specificare più destinazioni con il parametro --target durante l'esecuzione di appcat; ciò consente loro di selezionare solo le destinazioni importanti.

6.3.0.7

Versione disponibile a livello generale (disponibilità generale) di valutazione di applicazioni e codice di Azure Migrate.

Problemi noti

7.6.0.1

  • Il flag --overrideProviderSettings non è supportato.
  • Problemi relativi alle regole:
    • azure-system-config-01000, http-session-01000, java-removals-00150 le regole non vengono attivate.
    • FileSystem - Java IO la regola non viene attivata.
  • L'analisi dei file WAR in Windows genera l'errore seguente: Failed to Move Decompiled File. Si verifica un errore durante l'analisi dei file WAR in Windows, che è responsabile di alcuni eventi imprevisti ridondanti creati nel sistema operativo Windows.
  • Errore nel canale di errore watcher in Windows: Windows system assumed buffer larger than it is, events have likely been missed. Questo messaggio di errore viene visualizzato nella riga di comando durante i processi a esecuzione prolungata in Windows.
  • Ctrl+C non riesce ad arrestare l'analisi in corso. Per risolvere il problema, terminare manualmente il processo eliminando in modo esplicito il processo.
  • Nei report di analisi binaria il titolo del frammento di codice mostra un percorso di file non corretto o inesistente.

7.6.0.0

  • Il flag --analyze-known-libraries non funziona in Windows.
  • In Windows, durante il processo di analisi vengono generate le cartelle aggiuntive seguenti, ma non vengono rimosse automaticamente dopo il completamento. È possibile rimuovere queste cartelle aggiuntive al termine dell'analisi.
    • metadata.
    • org.eclipse.osgi
    • org.eclipse.equinox.app
    • org.eclipse.core.runtime
    • org.eclipse.equinox.launcher
  • Il flag --overrideProviderSettings non è supportato.
  • Il flag --json-output non è supportato. In una versione futura genera output JSON per i file output.yaml e dependency.yaml .
  • Problemi relativi alle regole:
    • azure-system-config-01000, http-session-01000, java-removals-00150 le regole non vengono attivate.
    • FileSystem - Java IO la regola non viene attivata.
    • Errore unable to parse all the rules for ruleset durante l'esecuzione dell'analisi. Questo errore si verifica durante l'analisi quando lo strumento non riesce ad analizzare tutte le regole nel set di regole.
  • L'analisi dei file WAR in Windows genera l'errore seguente: Failed to Move Decompiled File. Si verifica un errore durante l'analisi dei file WAR in Windows, che è responsabile di alcuni eventi imprevisti ridondanti creati nel sistema operativo Windows.
  • Descrizioni mancanti per alcune regole nella scheda Informazioni dettagliate . Alcune regole di tag non contengono descrizioni, causando la visualizzazione di titoli vuoti nella scheda Informazioni dettagliate del report.
  • Errore nel canale di errore watcher in Windows: Windows system assumed buffer larger than it is, events have likely been missed. Questo messaggio di errore viene visualizzato nella riga di comando durante i processi a esecuzione prolungata in Windows.
  • Questa versione richiede una connessione Internet attiva per l'analisi delle dipendenze.
  • Ctrl+C non riesce ad arrestare l'analisi in corso. Per risolvere il problema, terminare manualmente il processo eliminando in modo esplicito il processo.
  • Quando il flag --context-lines è impostato su un numero 0, non funziona come previsto. Questo flag consente all'utente di limitare la quantità di codice sorgente da visualizzare nel report. L'impostazione su un valore 0 potrebbe non funzionare come previsto.

Licenza

L'applicazione e la valutazione del codice di Azure Migrate per Java sono uno strumento gratuito basato su open source.