Real Experience Migrating a Java 5 / Struts 1.3 Monolithic Application to Java 21 and Spring Boot
Yoshio Terada walks through a real migration of a legacy Java application, showing how GitHub Copilot’s app modernization tooling can accelerate upgrades when paired with a solid plan and verification.
Overview
What’s being migrated
- Source application: Java 5, Struts 1.3, monolithic architecture
- Target application: Java 21, Spring Boot
- Context: a migration that previously took ~14 weeks was completed in ~2 days with AI assistance
How GitHub Copilot modernization is used
- Uses GitHub Copilot’s app modernization tooling to:
- Generate an initial migration plan
- Apply changes to move from Struts-based patterns to Spring Boot
- Iterate on the plan and implementation with human guidance
Why planning matters for AI-assisted upgrades
- Creating a detailed migration plan is presented as a key step to:
- Break the work into verifiable stages
- Reduce the risk of large, unreviewable changes
- Make it easier to steer Copilot toward the intended end state
Custom instructions and domain knowledge
- The episode emphasizes refining AI output by adding:
- Custom instructions that reflect project constraints and conventions
- Domain knowledge that Copilot cannot infer from code alone
Verification strategies (because AI isn’t perfect)
- Verification is positioned as the control mechanism that keeps the migration on track:
- Create custom verification scripts
- Validate AI-generated changes continuously
- Use verification results to guide further iterations
Series and links
- Series: Modernize Java Apps with AI (Episode 3)
- Playlist: https://www.youtube.com/playlist?list=PLlrxD0HtieHhaBJWlcxGd-kTDikSD4xyD
- GitHub Copilot Modernization extension: https://aka.ms/GHCPMod-Java