Upgrade Java, Spring, and Jakarta EE with GitHub Copilot
Sandra Ahlgrimm walks through upgrading a legacy Java application using GitHub Copilot's app modernization extension, showing how it can turn a large version jump into a supervised, incremental workflow.
Overview
The video demonstrates an end-to-end modernization flow where GitHub Copilot:
- Generates an upgrade plan for a legacy Java app
- Applies changes in incremental milestones to reduce risk
- Uses OpenRewrite under the hood to implement many of the code and configuration transformations
- Runs tests after each milestone and iterates when failures occur
- Validates known vulnerabilities (CVEs) and checks for behavior changes after updates
What the episode covers
Upgrading Java and frameworks from IntelliJ
- Uses the GitHub Copilot app modernization extension inside IntelliJ
- Upgrades both the Java runtime and major frameworks
Breaking big upgrades into milestones
The workflow is shown as a sequence of safer steps rather than a single jump, including examples like:
- Java 8 → 21 → 25
- Spring Boot 1.5 → 3.3 → 3.4 → 3.5
Handling failures and compatibility issues
- The agent iterates on test failures and applies fixes
- Examples called out include Mockito compatibility changes and dependency-related issues
Security and behavior validation during modernization
- Automatic CVE scanning after changes
- Behavior validation checks to catch regressions after each milestone
When the target version isn't fully supported
- Shows what happens if a target version is not yet fully supported
- The tool explains why it cannot complete that part of the upgrade as requested
Series context
- Episode 2 of the “Modernize Java Apps with AI” series
- Playlist: https://www.youtube.com/playlist?list=PLlrxD0HtieHhaBJWlcxGd-kTDikSD4xyD
- GitHub Copilot Modernization extension: https://aka.ms/GHCPMod-Java