Azure Migrate-toepassings- en code-evaluatie voor Java
In deze handleiding wordt beschreven hoe u het azure Migrate-hulpprogramma voor toepassings- en code-evaluatie 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 CLI (opdrachtregelinterface) 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, zodat u prioriteit kunt geven aan Java-toepassingen en deze kunt verplaatsen naar Azure. Met een set engines en regels kan het verschillende technologieën detecteren en beoordelen, zoals Java 11, Java 17, Jakarta EE, Spring, Sluimerstand, Java Message Service (JMS) en meer. Vervolgens kunt u de Java-toepassing opnieuw platformeren naar verschillende Azure-doelen (Azure-app Service, Azure Kubernetes Service en Azure Container Apps) met specifieke regels voor opnieuw platformen van Azure.
Dit hulpprogramma is open source en is gebaseerd op WindUp, een project dat is gemaakt door Red Hat en gepubliceerd onder de openbare Eclipse-licentie.
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:
Doel | Description | Id |
---|---|---|
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 |
Detectie | Identificeert technologiegebruik, zoals bibliotheken en frameworks. | discovery |
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
Als u de appcat
CLI wilt gebruiken, moet u het ZIP-bestand downloaden dat in de volgende sectie wordt beschreven en een compatibele JDK 11- of JDK 17-installatie op uw computer hebben. De appcat
CLI wordt uitgevoerd op elke java-compatibele omgeving, zoals Windows, Linux of Mac, zowel voor Intel-, Arm- als Apple Silicon-hardware. U wordt aangeraden de Microsoft Build van OpenJDK te gebruiken.
Download de Azure Migrate-toepassing en code-evaluatie voor Java 6.3.9.0. Bijgewerkt op 2024-12-09.
Zie de sectie Releaseopmerkingen voor meer informatie.
Bekende problemen
Bepaalde regels worden mogelijk niet geactiveerd bij het parseren van specifieke Lambda-expressies. Zie het GitHub-probleem voor meer informatie.
Als u in een niet-Unicode-omgeving met complexe dubbel-bytetekens wordt uitgevoerd appcat
, zal dit leiden tot beschadiging. Zie het GitHub-probleem voor tijdelijke oplossingen.
Vorige releases
De volgende eerdere versies zijn ook beschikbaar om te downloaden:
- Azure Migrate-toepassing en code-evaluatie voor Java 6.3.0.9. Uitgebracht op augustus 2024.
- Azure Migrate-toepassing en code-evaluatie voor Java 6.3.0.8. Uitgebracht op maart 2024.
- Azure Migrate-toepassing en code-evaluatie voor Java 6.3.0.7. Uitgebracht op november 2023.
Aan de slag
Controleer of u een ondersteunde JDK hebt geïnstalleerd om uit te voeren appcat
. Het hulpprogramma ondersteunt de volgende JDK's:
- Microsoft Build van OpenJDK 11
- Microsoft Build van OpenJDK 17
- Eclipse Temurin™ JDK 11
- Eclipse Temurin™ JDK 17
Nadat u een geldige JDK hebt geïnstalleerd, controleert u of de installatiemap juist is geconfigureerd in de JAVA_HOME
omgevingsvariabele.
Als u wilt doorgaan, downloadt en pakt u het pakket uit in een map van uw keuze. Vervolgens krijgt u de volgende mapstructuur:
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: Deze map bevat de documentatie van
appcat
. - bin: Deze map bevat de
appcat
uitvoerbare CLI-bestanden (voor Windows/Linux/Mac). - voorbeelden: Deze map bevat een voorbeeldtoepassing en verschillende scripts die moeten worden uitgevoerd
appcat
voor de voorbeeldtoepassing.
Als u het hulpprogramma wilt uitvoeren, opent u een terminalsessie en typt u de volgende opdracht uit de map $APPCAT_HOME/bin :
./appcat --help
Als u het hulpprogramma vanaf elke locatie op uw computer wilt uitvoeren, configureert u de map $APPCAT_HOME/bin in uw PATH
omgevingsvariabele en start u de terminalsessie opnieuw.
Documentatie
De volgende handleidingen bevatten de hoofddocumentatie voor appcat
Java:
Technologiegebruik en cloudgereedheid detecteren zonder rekening te houden met een Azure-service
Detectie van technologieën en cloudgereedheidsdoelen bieden een goed inzicht in het opnieuw platformen en moderniseren van toepassingen in de cloud. Het hulpprogramma scant de toepassing en de bijbehorende onderdelen om een uitgebreid inzicht te krijgen in de structuur, architectuur en afhankelijkheden. Er worden ook potentiële problemen gevonden die mogelijk lastig zijn in een cloudomgeving. Het discovery
doel wordt met name gebruikt om een gedetailleerde inventarisatie van de toepassing en de bijbehorende onderdelen te maken. Deze inventarisatie dient als basis voor verdere analyse en planning. Zie de sectie Detectierapport voor meer informatie.
Gebruik de volgende opdracht om detectie en cloudgereedheid te initiëren:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target discovery cloud-readiness
Dit type rapport is handig wanneer u geen specifieke Azure-service in gedachten hebt om uw toepassing te implementeren.
Het hulpprogramma voert altijd uit discovery
of u die waarde al dan niet opneemt in de --target
parameter.
Een Java-toepassing evalueren
In de evaluatiefase analyseert de appcat
CLI de toepassing en de bijbehorende onderdelen om de geschiktheid voor herplatorming te bepalen en mogelijke uitdagingen of beperkingen te identificeren. Deze fase omvat het analyseren van de toepassingscode en het controleren van de naleving van de geselecteerde doelen.
U kunt meerdere doelen selecteren met behulp van een door spaties gescheiden lijst met waarden met het --target
argument.
Voer de volgende opdracht uit om de beschikbare doelen te controleren:
./appcat --listTargetTechnologies
Met deze opdracht wordt uitvoer geproduceerd die vergelijkbaar is met het volgende voorbeeld:
Available target technologies:
azure-aks
azure-appservice
azure-container-apps
cloud-readiness
discovery
linux
openjdk11
openjdk17
openjdk21
Vervolgens kunt u uitvoeren appcat
met behulp van een of een combinatie van beschikbare doelen, zoals wordt weergegeven in het volgende voorbeeld:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target cloud-readiness linux azure-appservice
U kunt ook worden uitgevoerd appcat
met een van de beschikbare OpenJDK-doelen, zoals wordt weergegeven in het volgende voorbeeld:
./appcat \
--input ./<my-application-source-path or my-application-jar-war-ear-file> \
--target openjdk11
Voor OpenJDK-doelen (Java) raden we u aan slechts één voor één te kiezen.
Aanbeveling van doelen voor Azure-evaluatie
Wanneer u een toepassing voor Azure-implementatie evalueert, wordt u aangeraden te beginnen met de volgende doelen:
discovery
cloud-readiness
Geef ook een Azure-service op voor implementatie, zoals azure-appservice
of azure-container-apps
.
Als u van plan bent om een toepassing van een Windows-omgeving te verplaatsen naar een Linux-VM of -container, raden we u ook aan het linux
doel toe te voegen.
Als u een toepassing wilt verplaatsen van een oudere versie van de JDK naar een nieuwere versie, raden we u aan de volgende primaire versie te kiezen in vergelijking met de vorige versie die door de toepassing wordt gebruikt. Gebruik bijvoorbeeld openjdk11
wanneer uw toepassing momenteel is geïmplementeerd met Java 8.
Resultaten ophalen van appcat
Het resultaat van de detectie- en evaluatiefasen is een gedetailleerd rapport dat een roadmap biedt voor het opnieuw platformen en moderniseren van de Java-toepassing, waaronder aanbevelingen voor de Azure-service en de aanpak voor opnieuw platformen. Het rapport fungeert als de basis voor de volgende fasen van het herplatformingsproces. Het helpt organisaties meer te weten te komen over de inspanningen die nodig zijn voor een dergelijke transformatie en beslissingen te nemen over het moderniseren van hun toepassingen voor maximale voordelen.
Het rapport dat wordt gegenereerd door appcat
biedt een uitgebreid overzicht van de toepassing en de bijbehorende onderdelen. U kunt dit rapport gebruiken om inzicht te krijgen in de structuur en afhankelijkheden van de toepassing en om de geschiktheid voor herplatforming en modernisering te bepalen.
In de volgende secties vindt u meer informatie over het rapport.
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.
Wanneer u inzoomt op het cirkeldiagram Incidenten per categorie , ziet u het aantal incidenten per categorie: Verplicht, Optioneel, Potentieel en Informatie.
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.
Detectierapport
Het detectierapport is een rapport dat tijdens de detectiefase wordt gegenereerd. Hier ziet u de lijst met technologieën die door de toepassing worden gebruikt in de categorie Informatie . Dit rapport geeft u alleen informatie over het gedetecteerde technologiegebruik appcat
.
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, potentieel of informatie), 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.
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.
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.
Aangepaste regels
U kunt het beschouwen appcat
als een regelengine. Er worden regels gebruikt om bestanden uit Java-archieven te extraheren, Java-klassen te decompileren, bestandstypen te scannen en classificeert, deze bestanden te analyseren en de rapporten te compileren. In appcat
, de regels worden gedefinieerd in de vorm van een regelset. Een regelset is een verzameling afzonderlijke regels die specifieke problemen of patronen definiëren die appcat
tijdens de analyse kunnen worden gedetecteerd.
Deze regels worden gedefinieerd in XML en gebruiken het volgende regelpatroon:
when (condition)
perform (action)
otherwise (action)
appcat
biedt een uitgebreide set standaardmigratieregels. Omdat toepassingen mogelijk aangepaste bibliotheken of onderdelen bevatten, appcat
kunt u uw eigen regels schrijven om het gebruik van onderdelen of software te identificeren die door de bestaande regelset kunnen worden behandeld.
Als u een aangepaste regel wilt schrijven, gebruikt u een uitgebreide domeinspecifieke taal (DLS), uitgedrukt in XML. Stel dat u een regel wilt die het gebruik van het PostgreSQL JDBC-stuurprogramma in een Java-toepassing identificeert en in plaats daarvan het gebruik van de Flexibele Server van Azure PostgreSQL voorstelt. U hebt een regel nodig om het PostgreSQL JDBC-stuurprogramma te vinden dat is gedefinieerd in een Maven-pom.xml-bestand of een Gradle-bestand, zoals de afhankelijkheid die wordt weergegeven in het volgende voorbeeld:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
Voor het detecteren van het gebruik van deze afhankelijkheid gebruikt de regel de volgende XML-tags:
ruleset
: De unieke id van de regelset. Een regelset is een verzameling regels die zijn gerelateerd aan een specifieke technologie.targetTechnology
: De technologie waarop de regel is gericht. In dit geval is de regel gericht op Azure-app Services, Azure Kubernetes Service (AKS) en Azure Container Apps.rule
: Het hoofdelement van één regel.when
: De voorwaarde waaraan moet worden voldaan om de regel te activeren.perform
: De actie die moet worden uitgevoerd wanneer de regel wordt geactiveerd.hint
: Het bericht dat moet worden weergegeven in het rapport, de bijbehorende categorie (informatie, optioneel of verplicht) en de inspanning die nodig is om het probleem op te lossen, variërend van 1 (eenvoudig) tot 13 (moeilijk).
In de volgende XML ziet u de definitie van de aangepaste regel:
<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"/>
</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>
Nadat u deze regel hebt appcat
uitgevoerd, voert u de analyse opnieuw uit om het gegenereerde rapport te controleren. Net als bij andere incidenten vermeldt het evaluatierapport de geïdentificeerde problemen en betrokken bestanden met betrekking tot deze regel.
De volledige handleiding voor het ontwikkelen van regels is beschikbaar op azure.github.io/appcat-docs/rules-development-guide.
Opmerkingen bij de release
6.3.9.0
Deze release bevat de volgende oplossingen en bevat een set nieuwe regels. Zie hieronder voor meer informatie.
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 Message Queue: 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 & 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. Zie hieronder voor meer informatie.
- 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 appcat
uitgevoerd , 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.
Licentie
Azure Migrate-toepassings- en code-evaluatie voor Java is gratis een gratis opensource-hulpprogramma en een licentie onder dezelfde licentie als het upstream WindUp-project.
Veelgestelde vragen
V: Waar kan ik de nieuwste versie van de Azure Migrate-toepassing en code-evaluatie voor Java downloaden?
U kunt downloaden appcat
van aka.ms/appcat/azure-appcat-cli-latest.zip.
V: Waar vind ik meer informatie over Azure Migrate-toepassings- en code-evaluatie voor Java?
Wanneer u downloadt appcat
, krijgt u een docs-map met alle informatie die u nodig hebt om aan de slag te gaan.
V: Waar vind ik de specifieke Azure-regels?
Alle Azure-regels zijn beschikbaar in de GitHub-opslagplaats appcat Rulesets.
V: Waar vind ik meer informatie over het maken van aangepaste regels?
Zie de handleiding voor het ontwikkelen van regels voor Azure Migrate-toepassingen en code-evaluatie voor Java.
V: Waar kan ik hulp krijgen bij het maken van aangepaste regels?
De beste manier om hulp te krijgen is door een probleem te maken in de GitHub-opslagplaats appcat-rulesets.