Delen via


Azure Migrate-toepassing en code-evaluatie voor Java versie 7 (preview)

Notitie

Dit artikel is bedoeld voor de volgende generatie Azure Migrate-toepassings- en code-evaluatie voor Java, versie 7.x. Deze versie is in preview. Voor de vorige stabiele versie, versie 6.x, raadpleegt u de Azure Migrate-toepassing en code-evaluatie voor Java.

In dit artikel leest u hoe u het azure Migrate-toepassings- en code-evaluatieprogramma voor Java gebruikt om elk type Java-toepassing te evalueren en opnieuw te platformen. Met het hulpprogramma kunt u de gereedheid van toepassingen evalueren voor het opnieuw platformen en migreren naar Azure. Dit hulpprogramma wordt aangeboden als een opdrachtregelinterface (CLI) en evalueert binaire java-toepassingsbestanden en broncode om herplatforming en migratiemogelijkheden voor Azure te identificeren. Hiermee kunt u grootschalige Java-toepassingen moderniseren en opnieuw platformen door veelvoorkomende use cases en codepatronen te identificeren en aanbevolen wijzigingen voor te stellen.

Het hulpprogramma detecteert het gebruik van toepassingstechnologie via statische codeanalyse, biedt schatting van inspanningen en versnelt het opnieuw platformen van code. Deze evaluatie helpt u bij het prioriteren en verplaatsen van Java-toepassingen naar Azure. Met een set engines en regels kan het hulpprogramma verschillende technologieën ontdekken en beoordelen, zoals Java 11, Java 17, Jakarta EE, Spring, Sluimerstand, Java Message Service (JMS) en meer. Het hulpprogramma helpt u vervolgens de Java-toepassing opnieuw te platformen naar verschillende Azure-doelen, Azure-app Service, Azure Kubernetes Service en Azure Container Apps, met specifieke regels voor opnieuw platformen van Azure.

Het hulpprogramma is gebaseerd op een set onderdelen in het Cloud Native Computing Foundation-project Konveyor, gemaakt en geleid door Red Hat.

Overzicht

Het hulpprogramma is ontworpen om organisaties te helpen hun Java-toepassingen te moderniseren op een manier die de kosten verlaagt en snellere innovatie mogelijk maakt. Het hulpprogramma maakt gebruik van geavanceerde analysetechnieken om inzicht te hebben in de structuur en afhankelijkheden van elke Java-toepassing en biedt richtlijnen voor het herstructureren en migreren van de toepassingen naar Azure.

Hiermee kunt u de volgende taken uitvoeren:

  • Ontdek technologiegebruik: snel zien welke technologieën een toepassing gebruikt. Detectie is handig als u verouderde toepassingen hebt met niet veel documentatie en wilt weten welke technologieën ze gebruiken.
  • Evalueer de code naar een specifiek doel: Evalueer een toepassing voor een specifiek Azure-doel. Controleer de inspanningen en de wijzigingen die u moet uitvoeren om uw toepassingen opnieuw te platformen naar Azure.

Ondersteunde doelen

Het hulpprogramma bevat regels voor het opnieuw platformen van uw toepassingen, zodat u verschillende Azure-services kunt implementeren en gebruiken.

De regels die worden gebruikt door azure Migrate-toepassings- en code-evaluatie, worden gegroepeerd op basis van een doel. Een doel is waar of hoe de toepassing wordt uitgevoerd, en algemene behoeften en verwachtingen. Bij het beoordelen van een toepassing kunt u meerdere doelen kiezen. In de volgende tabel worden de beschikbare doelen beschreven:

Doelnaam Beschrijving Doel
Azure App Service Aanbevolen procedures voor het implementeren van een app in Azure-app Service. azure-appservice
Azure Kubernetes Service Aanbevolen procedures voor het implementeren van een app in Azure Kubernetes Service. azure-aks
Azure Container Apps Aanbevolen procedures voor het implementeren van een app in Azure Container Apps. azure-container-apps
Gereedheid voor de cloud Algemene aanbevolen procedures voor het voorbereiden van een toepassingscloud (Azure). cloud-readiness
Linux Algemene aanbevolen procedures voor het voorbereiden van een toepassing op Linux. linux
OpenJDK 11 Algemene aanbevolen procedures voor het uitvoeren van een Java 8-toepassing met Java 11. openjdk11
OpenJDK 17 Algemene aanbevolen procedures voor het uitvoeren van een Java 11-toepassing met Java 17. openjdk17
OpenJDK 21 Algemene aanbevolen procedures voor het uitvoeren van een Java 17-toepassing met Java 21. openjdk21

Wanneer het hulpprogramma beoordeelt op gereedheid voor de cloud en gerelateerde Azure-services, kan het ook nuttige informatie rapporteren voor mogelijk gebruik van verschillende Azure-services. In de volgende lijst ziet u een aantal van de services die worden behandeld:

  • Azure-databases
  • Azure Service Bus
  • Azure Storage
  • Azure-netwerk voor contentlevering
  • Azure Event Hubs
  • Azure Key Vault
  • Azure Front Door

Downloaden en installeren

Als u de appcat CLI wilt gebruiken, moet u het pakket downloaden dat specifiek is voor uw omgeving en over de vereiste afhankelijkheden in uw omgeving beschikken. De appcat CLI wordt uitgevoerd op elke omgeving, zoals Windows, Linux of Mac, met behulp van Intel-, Arm- of Apple Silicon-hardware. Voor de JDK-vereiste raden we u aan de Microsoft Build van OpenJDK te gebruiken.

Besturingssysteem Architectuur Koppeling downloaden Andere bestanden
x64
Windows x64 Downloaden sha256 / sig
macOS x64 Downloaden sha256 / sig
Linux x64 Downloaden sha256 / sig
AArch64
Windows AArch64 / ARM64 Downloaden sha256 / sig
macOS Apple Silicon Downloaden sha256 / sig
Linux AArch64 / ARM64 Downloaden sha256 / sig

Vereisten

Installatie

Als u wilt installeren appcat, downloadt u het juiste zip-bestand voor uw platform. Nadat u het bestand hebt gedownload, moet u, afhankelijk van uw besturingssysteem, een .tar.gz (Linux/macOS) of .zip -bestand (Windows) vinden.

Pak het binaire bestand uit het gedownloade bestand. U ziet nu de volgende mapstructuur:

/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

Het hulpprogramma uitvoeren

Optie 1: Appcat uitvoeren vanuit de gedownloade map

Wijzig de map in de uitgepakte map:

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

Notitie

Het appcat binaire bestand zoekt eerst naar de afhankelijkheden in de huidige map, waar deze wordt uitgevoerd en valt terug naar het volgende scenario als deze niet worden gevonden.

Optie 2: Voeg het binaire appcat-pad toe aan uw $PATH

Verplaats de inhoud van de map naar de map .appcat in de basismap van de gebruiker: $HOME/.appcat op Linux/Mac en %USERPROFILE%/.appcat in Windows.

Voeg de map .appcat toe aan uw PATH omgevingsvariabele, zodat u het hulpprogramma kunt uitvoeren vanuit elke map in de terminal.

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

Notitie

In deze context, wanneer het appcat binaire bestand wordt aangeroepen vanuit een andere map dan waar het is geïnstalleerd, zoekt het naar de afhankelijkheden in de map .appcat in de basismap van de gebruiker.

Gebruik

Subopdrachten

AppCAT biedt twee subopdrachten voor gebruik:

  • analyze: Voer broncodeanalyse uit op invoerbroncode of een binair bestand.
  • transform: XML-regels van vorige versies (6 en ouder) converteren naar YAML-indeling die door deze versie wordt gebruikt.

Notitie

Voor macOS-gebruikers: Als er een fout optreedt met de melding 'Apple kan niet verifiëren' bij het uitvoeren van de app, kunt u deze fout oplossen met behulp van de volgende opdracht:

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

Voorbeeld:

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

Subopdracht analyseren

Met de analyze subopdracht kunt u broncode en binaire analyse uitvoeren.

Voer de volgende opdracht uit om de broncode van de toepassing te analyseren:

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

De --input vlag moet verwijzen naar een broncodemap of een binair bestand en --output moet verwijzen naar een map om de analyseresultaten op te slaan.

Voer de volgende opdracht uit voor meer informatie over de analysevlagmen:

./appcat analyze --help

Voer de volgende opdracht uit om de beschikbare doelen voor AppCAT te controleren:

./appcat analyze --list-targets

Met deze opdracht wordt de volgende uitvoer gegenereerd:

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

Meerdere toepassingen analyseren

AppCAT is ontworpen voor het analyseren van één toepassing per opdrachtuitvoering, maar als u de --bulk optie gebruikt, kunt u meerdere toepassingen in één uitvoering analyseren. Met deze optie wordt één statisch rapport gegenereerd in de uitvoermap met de resultaten voor alle toepassingen.

Voer de volgende opdracht uit om meerdere toepassingen te analyseren:

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

Subopdracht transformeren

transform Met de subopdracht kunt u de vorige appcat XML-regels die in de 6.x-versie worden gebruikt, converteren naar de nieuwe YAML-indeling die door deze versie 7.x wordt gebruikt.

Voer de volgende opdracht uit om regels te transformeren:

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

De --input vlag moet verwijzen naar een bestand of map met XML-regels en de --output vlag moet verwijzen naar de uitvoermap voor de geconverteerde YAML-regels.

Voorbeelden

Notitie

Zorg ervoor dat de bestandsmachtigingen voor scripts in de uitgepakte map zijn ingesteld om uitvoering toe te staan.

In de map met voorbeelden vindt u een voorbeeldwebtoepassing met de naam airsonic.war. Airsonic is een webmediastreamer die toegang biedt tot uw muziek en waarmee u deze kunt delen met vrienden. Zie Airsonic voor meer informatie over Airsonic.

In de map met voorbeelden vindt u de volgende scripts om verschillende soorten analyse uit te voeren:

  • run-assessment: biedt een rapport met code-evaluatie en stappen voor het migreren van Airsonic naar Azure-app Service op Tomcat.
  • run-assessment-transform-rules: Converteert Windup XML-regels naar yamL-regels die compatibel zijn met analyzer-lsp.
  • run-assessment-custom-rules: biedt een code-evaluatierapport met behulp van aangepaste regels (XML transformeren naar YAML).
  • run-assessment-openjdk21: genereert een rapport met code-evaluatie en stappen voor het migreren van Airsonic naar OpenJDK 21.
  • run-assessment-package-only: Produceert een rapport door specifieke pakketten te beoordelen.

Voer, afhankelijk van uw besturingssysteem, het juiste script uit, zoals wordt weergegeven in het volgende voorbeeld:

./samples/run-assessment

De rapporten worden automatisch gegenereerd en gestart. U vindt de rapporten onder .. /samples/report-* (Linux/macOS) of .. \samples\report-* (Windows).

Samenvatting van de analyse

De landingspagina van het rapport bevat alle technologieën die in de toepassing worden gebruikt. Het dashboard biedt een overzicht van de analyse, waaronder het aantal transformatieincidenten, de incidentencategorieën of de verhaalpunten.

Schermopname van het overzichtsrapport van appcat.

Wanneer u inzoomt op het cirkeldiagram Incidenten per categorie , ziet u het aantal incidenten per categorie: Verplicht, Optioneel en Potentieel.

Het dashboard toont ook de verhaalpunten. De verhaalpunten zijn een abstracte metriek die vaak wordt gebruikt in Agile-softwareontwikkeling om een schatting te maken van het hoeveelheid werk dat nodig is om een functie of wijziging te implementeren. appcat gebruikt verhaalpunten om het benodigde inspanningsniveau voor het migreren van een bepaalde toepassing uit te drukken. Verhaalpunten vertalen zich niet noodzakelijkerwijs naar werkuren, maar de waarde moet consistent zijn voor alle taken.

Schermopname van het appCAT-overzichtsincidentrapport.

Evaluatierapport

Het evaluatierapport geeft een overzicht van de transformatieproblemen die moeten worden opgelost om de toepassing naar Azure te migreren.

Deze problemen, ook wel incidenten genoemd, hebben een ernst (verplicht, optioneel of potentieel), een inspanningsniveau en een getal dat de verhaalpunten aangeeft. De verhaalpunten worden bepaald door het aantal incidenten te berekenen dat nodig is om het probleem op te lossen.

Schermopname van het AppCAT-evaluatierapport.

Gedetailleerde informatie voor een specifiek probleem

Voor elk incident krijgt u meer informatie (de details van het probleem, de inhoud van de regel, enzovoort) door deze te selecteren. U krijgt ook de lijst met alle bestanden die worden beïnvloed door dit incident.

Schermopname van het detailrapport appCAT-probleem.

Vervolgens kunt u voor elk bestand of elke klasse die door het incident wordt beïnvloed, naar de broncode springen om de coderegel te markeren die het probleem heeft gemaakt.

Schermopname van het coderapport appCAT-probleem.

Opmerkingen bij de release

7.6.0.1

Deze release bevat de volgende oplossingen en verbeteringen.

  • --analyze-known-libraries vlag: Werkt nu in Windows.
  • Adreslijst opschonen: extra mappen die tijdens de analyse in Windows zijn gemaakt, worden nu automatisch opgeschoond.
  • --json-output vlag: Nu operationeel.
  • Fout bij parseren van regels: de fout unable to parse all the rules for ruleset is opgelost.
  • Beschrijvingen van inzichtentabbladen: ontbrekende regelbeschrijvingen zijn toegevoegd.
  • Afhankelijkheid van internetverbinding: Analyse mislukt niet meer zonder internetverbinding.
  • --context-lines vlag: Gedraagt zich nu zoals verwacht wanneer deze is ingesteld op 0.
  • Python-vereiste voor het uitvoeren van het hulpprogramma is verwijderd.

7.6.0.0

Deze release is gebaseerd op een andere set onderdelen van het Konveyor-project.

Algemene updates

6.3.9.0

Deze release bevat de volgende oplossingen en bevat een set nieuwe regels.

Algemene updates

  • Geïntegreerde wijzigingen uit de Windup upstream-opslagplaats (6.3.9.Final Release).
  • Opgeloste verbroken koppelingen in regelbeschrijvingen en Help-tekst.

Regels

  • Azure-berichtenwachtrij: nieuwe regels bijgewerkt en toegevoegd voor azure-message-queue-rabbitmq en azure-message-queue-amqp.
  • Azure Service Bus: er is een detectieregel geïntroduceerd voor Azure Service Bus.
  • MySQL en PostgreSQL: verfijnde regels voor afhankelijkheidsdetectie.
  • Azure-AWS-regels: verbeterde en verbeterde bestaande regels.
  • S3 Spring Starter: er is een detectieregel toegevoegd voor S3 Spring Starter.
  • RabbitMQ Spring JMS: er is een detectieregel toegevoegd voor RabbitMQ Spring JMS.
  • Regels voor logboekregistratie: bijgewerkte en verfijnde regels voor logboekregistratie.
  • Regel voor lokale opslag: de lokale opslagregel is bijgewerkt en verfijnd.
  • Azure File System-regel: de Regel voor het Azure-bestandssysteem bijgewerkt en verfijnd.

Bibliotheken

  • Bijgewerkte bibliotheken om beveiligingsproblemen te verhelpen.

6.3.0.9

Deze release bevat de volgende oplossingen en bevat een set nieuwe regels.

  • Er is een probleem opgelost met de localhost-java-00001 regel.
  • Nieuwe regels geïntroduceerd voor het identificeren van technologieën zoals AWS S3, AWS SQS, Alibaba Cloud OSS, Alibaba Cloud SMS, Alibaba Scheduler X, Alibaba Cloud Seata en Alibaba Rocket MQ.
  • azure-file-system-02000 Bijgewerkt om nu XML-bestandsextensies te ondersteunen.
  • Verschillende bibliotheken bijgewerkt om beveiligingsproblemen aan te pakken.

6.3.0.8

Voorheen werd een set doelen standaard ingeschakeld, waardoor het voor bepaalde klanten moeilijk is om grote toepassingen te beoordelen met te veel incidenten met betrekking tot minder kritieke problemen. Om ruis in rapporten te verminderen, moeten gebruikers nu meerdere doelen opgeven, met de parameter --target, wanneer ze worden appcatuitgevoerd , zodat ze de optie hebben om alleen de doelen te selecteren die van belang zijn.

6.3.0.7

GA -release (algemeen beschikbaar) van Azure Migrate-toepassing en code-evaluatie.

Bekende problemen

7.6.0.1

  • De vlag --overrideProviderSettings wordt niet ondersteund.
  • Problemen met regels:
    • azure-system-config-01000, http-session-01000worden java-removals-00150 regels niet geactiveerd.
    • FileSystem - Java IO de regel wordt niet geactiveerd.
  • Het analyseren van WAR-bestanden in Windows produceert de volgende fout: Failed to Move Decompiled File. Er treedt een fout op bij het analyseren van WAR-bestanden in Windows, die verantwoordelijk is voor een aantal redundante incidenten die zijn gemaakt op het Windows-besturingssysteem.
  • Fout in watcher-foutkanaal in Windows: Windows system assumed buffer larger than it is, events have likely been missed. Dit foutbericht wordt weergegeven op de opdrachtregel tijdens langlopende taken in Windows.
  • Ctrl+C kan de doorlopende analyse niet stoppen. Als u dit wilt omzeilen, beëindigt u het proces handmatig door het proces expliciet te beëindigen.
  • In binaire analyserapporten toont de titel van het codefragment een onjuist of niet-bestaand bestandspad.

7.6.0.0

  • De vlag --analyze-known-libraries werkt niet in Windows.
  • In Windows worden de volgende extra mappen gegenereerd tijdens het analyseproces, maar worden deze na voltooiing niet automatisch verwijderd. Mogelijk wilt u deze extra mappen verwijderen nadat de analyse is voltooid.
    • metadata.
    • org.eclipse.osgi
    • org.eclipse.equinox.app
    • org.eclipse.core.runtime
    • org.eclipse.equinox.launcher
  • De vlag --overrideProviderSettings wordt niet ondersteund.
  • De vlag --json-output wordt niet ondersteund. In een toekomstige release worden JSON-uitvoer gegenereerd voor de bestanden output.yaml en dependency.yaml .
  • Problemen met regels:
    • azure-system-config-01000, http-session-01000worden java-removals-00150 regels niet geactiveerd.
    • FileSystem - Java IO de regel wordt niet geactiveerd.
    • Fout unable to parse all the rules for ruleset bij het uitvoeren van analyse. Deze fout treedt op tijdens de analyse wanneer het hulpprogramma niet alle regels in de regelset kan parseren.
  • Het analyseren van WAR-bestanden in Windows produceert de volgende fout: Failed to Move Decompiled File. Er treedt een fout op bij het analyseren van WAR-bestanden in Windows, die verantwoordelijk is voor een aantal redundante incidenten die zijn gemaakt op het Windows-besturingssysteem.
  • Ontbrekende beschrijvingen voor sommige regels op het tabblad Inzichten . Sommige tagregels ontbreken beschrijvingen, wat leidt tot lege titels die worden weergegeven op het tabblad Inzichten van het rapport.
  • Fout in watcher-foutkanaal in Windows: Windows system assumed buffer larger than it is, events have likely been missed. Dit foutbericht wordt weergegeven op de opdrachtregel tijdens langlopende taken in Windows.
  • Voor deze release is een actieve internetverbinding vereist voor afhankelijkheidsanalyse.
  • Ctrl+C kan de doorlopende analyse niet stoppen. Als u dit wilt omzeilen, beëindigt u het proces handmatig door het proces expliciet te beëindigen.
  • Wanneer de vlag --context-lines is ingesteld op een getal 0, werkt deze niet zoals verwacht. Met deze vlag kan de gebruiker beperken hoeveel van de broncode in het rapport moet worden weergegeven. Het instellen op een waarde 0 werkt mogelijk niet zoals verwacht.

Licentie

Azure Migrate-toepassings- en code-evaluatie voor Java is een gratis, opensource-hulpprogramma.