Two Paths, One Goal: Modernising Legacy Java Applications with GitHub Copilot

Over the past few months, I’ve had several conversations with customers exploring how to bring their legacy Java applications into the modern cloud world—safely, quickly, and with as little manual rework as possible.

One of the most exciting developments in this space is GitHub Copilot app modernisation for Java developers —a powerful extension from Microsoft that automates large parts of the upgrade and migration journey.


Start Here: Microsoft’s GitHub Copilot App Modernization Extension

Built on GitHub Copilot Agent Mode, this extension delivers an end-to-end modernisation experience directly inside Visual Studio Code.

It can:

  • Analyse your application’s codebase and dependencies
  • Recommend upgrades across Java 8, 11, 17, and 21
  • Apply code transformations for frameworks such as Spring Boot, Jakarta EE, and JUnit
  • Run build and CVE checks
  • Even containerise your app for Azure App Service, AKS, or Container Apps

In short, it brings together assessment, remediation, testing, and deployment under a single Copilot-driven workflow.

If your project fits within its supported scope – Maven or Gradle-based Java backends – this is where you should begin.
It is the officially supported path, continuously updated, and tightly integrated with Azure’s migration ecosystem.


When You Need to Go Beyond the Extension

That said, modernisation is rarely one-size-fits-all. Many enterprise Java systems include:

  • Custom build pipelines or hybrid repositories
  • Mixed technology stacks (for example, legacy JSF/EJB applications)
  • Codebases that require human-guided interpretation before automation can help

In such cases, Copilot’s extension may not yet cover all patterns or environments.
To help teams navigate those broader situations, I’ve created a companion resource, not a replacement.


A Companion Guidebook: Modernising Legacy Java Applications with GitHub Copilot

🔗 https://github.com/yelamanchili-murali/java-appmod-ghcp

This open reference demonstrates a structured, AI-assisted approach to modernisation using GitHub Copilot Agent Mode.
It’s designed as a learning guide, a way to understand the process of modernising safely, rather than a production tool.

The guidebook walks through:

  • Analysis-first principles to understand legacy systems before refactoring
  • The “Reverse then Forward” method for iterative modernisation
  • Use of meta-prompts and structured conversations to drive consistent Copilot outcomes
  • Examples drawn from two well-known applications:
    • Spring Framework PetClinic → modernised to Spring Boot 3 + Next.js
    • Java EE Petstore → modernised from JSF/EJB/JPA to Spring Boot 3

It focuses on process over perfection—illustrating how to use Copilot as a partner in reasoning, validating, and documenting change rather than just writing code.


How Both Fit Together

Think of the official Copilot App Modernization extension as the accelerator,
and this guidebook as the navigation manual that helps you understand why each step matters.

ScenarioRecommended Approach
Your app is a standard Maven/Gradle Java 8–21 backendUse the official GitHub Copilot App Modernization extension
You want to modernise frameworks beyond the current extension scope (e.g., JSF, EJB) or explore a controlled manual processUse the Guidebook to structure Copilot-assisted modernisation conversations
You’re planning a training, PoC, or knowledge-sharing exerciseCombine both—run the extension where possible, and use the guidebook to explain what happens under the hood

Key Takeaways

  • Start with the official Microsoft extension – it’s purpose-built, integrated, and continuously enhanced.
  • Use the guidebook as a complementary reference – to understand the “why and how” behind Copilot’s modernisation capabilities.
  • Don’t treat one as an alternative to the other – together, they create a more complete picture of AI-assisted modernisation for Java.

Modernising legacy applications is as much about understanding intent and preserving behaviour as it is about changing syntax.
With GitHub Copilot and these structured approaches, teams can move confidently, from assessment to modernisation, knowing both the automation and the reasoning are on their side.


Explore the guidebook here → https://github.com/yelamanchili-murali/java-appmod-ghcp
Learn about Microsoft’s official extension → GitHub Copilot App Modernization for Java Developers


Leave a comment