Windup is a set of tools that support the migration and modernization of Java applications by producing detailed code analysis, effort estimation and migration steps. In this article, we will show how to produce a migration report for a JBoss EAP 7 application that we want to move to JBoss EAP 8.
Windup Overview
Windup is an opensource project that supports several migration plans, by producing detailed Reports that you can use as the main reference for your migration milestones. The core of Windup is an extensible rules engine that analyzes Java applications as input.
In this article, we will show how to run a sample migration scenario for a legacy JBoss EAP 7 application that we want to port on JBoss EAP 8. You can find more details about the top changes that happened in JBoss EAP 8 in this article: JBoss EAP 8 Top 10 New Features
The example application that we want to migrate is a full-stack legacy application available here: https://github.com/fmarchioni/mastertheboss/tree/master/javaee/javaee7example
For the purpose of this example, we will the the Windup CLI which is available for download here: https://windup.github.io/downloads/
Migrating to JBoss EAP 8
Firstly, you need to produce a WAR artifact for our legacy application. That will be the input
parameter for Windup:
mvn install
Then, you can run windup-cli
passing as argument the javaee7example.war
as –input. We want to produce the reports in the output
folder. Finally, choose as target eap:8
:
./windup-cli --input /path/to/javaee7example.war --output output/ --target eap:8
Within the output folder you will find an index.html
page which is the root of your Migration Root. Here’s the Application page:
As you can see from the initial report, there are several incidents which are the migration steps you need to complete. The Tags column lists the technologies that are involved in your migration. Finally, the Story points are a way to estimate the effort required to complete a task or user story during the application migration process.
By clicking on the application link, you will access the Windup Dashboard page which shows a break-down of all incidents and story points by technology:
The actual step-by-step migration is available in the Issues Menu. From there you can see the complete list of steps you need to complete including both the optional and the mandatory ones.
As mandatory steps, you obviously need to replace the older javax
packages with the new jakarta
namespace:
Besides, the EAP8 migration Rules also check the XML descriptors and the Maven project files, as you can see from the following picture:
Going beyond EAP 8 migration
The migration of a legacy application often requires additional steps such as a JDK upgrade or moving the application into a Container. Windup includes a large number of migration rules to continue the modernization of your applications.
For example, you can use the new eap8example.war application as source for a JDK 21 migration with the following CLI:
./windup-cli --input eap8example.war --output jdk21/ --target openjdk21
Finally, you can assess your cloud readiness by choosing as target cloud-readiness:
./windup-cli --input eap8example.war --output cloud/ --target cloud-readiness
Conclusion
Through this article, we have explored several features of Windup, including its ability to analyze application source code, detect deprecated APIs, and generate detailed migration reports. These reports serve as a roadmap for migrating applications to JBoss EAP 8, highlighting areas of concern and providing recommendations for remediation.