Blog Post

Apps on Azure Blog
3 MIN READ

Modernizing Java EE Applications to Jakarta EE with GitHub Copilot App Modernization

ayangupta's avatar
ayangupta
Icon for Microsoft rankMicrosoft
Jan 17, 2026

Migrating a Java EE application to Jakarta EE is now a required step as the ecosystem has fully transitioned to the new jakarta.* namespace. This migration affects servlet APIs, persistence, security, messaging, and frameworks built on top of the Jakarta specifications. The changes are mechanical but widespread, and manual migration is slow, error‑prone, and difficult to validate at scale.

GitHub Copilot app modernization accelerates this process by analyzing the project, identifying required namespace and dependency updates, and guiding developers through targeted upgrade steps.

Supported Upgrade Path

GitHub Copilot app modernization supports:

  • Migrating Java EE applications to Jakarta EE (up to Jakarta EE 10)
  • Updating javax.* imports to jakarta.*
  • Aligning dependencies and application servers with Jakarta EE 10 requirements
  • Updating build plugins, BOMs, and libraries impacted by namespace migration
  • Fixing compilation issues and surfacing API incompatibilities
  • Detecting dependency CVEs after migration

These capabilities complement the Microsoft Learn guide for upgrading Java projects with GitHub Copilot app modernization.

Getting Started

Open your Java EE project in Visual Studio Code or IntelliJ IDEA with GitHub Copilot app modernization enabled. Copilot evaluates the project structure, build files, frameworks in use, and introduces a migration workflow tailored to Jakarta EE.

Project Analysis

The migration begins with a full project scan:

  • Identifies Java EE libraries (javax.*)
  • Detects frameworks depending on older EE APIs (Servlet, JPA, JMS, Security)
  • Flags incompatible versions of application servers and dependencies
  • Determines JDK constraints for Jakarta EE 10 compatibility
  • Analyzes build configuration (Maven/Gradle) and transitive dependencies

This analysis forms the basis for the generated migration plan.

Migration Plan Generation

GitHub Copilot app modernization generates a clear, actionable plan outlining:

  • Required namespace transitions from javax.* to jakarta.*
  • Updated dependency coordinates aligned with Jakarta EE 10
  • Plugin version updates
  • Adjustments to JDK settings if needed
  • Additional changes for frameworks relying on legacy EE APIs

You can review and adjust versions or library targets before applying changes.

Automated Transformations

After approving the plan, Copilot performs transformation steps:

  • Rewrites imports from javax. to jakarta.
  • Updates dependencies to Jakarta EE 10–compatible coordinates
  • Applies required framework-level changes (JPA, Servlet, Bean Validation, JAX‑RS, CDI)
  • Updates plugin versions aligned with Jakarta EE–based libraries
  • Converts removed or relocated APIs with recommended replacements

These transformations rely on OpenRewrite‑based rules surfaced through Copilot app modernization.

Build Fix Iteration

Copilot iterates through a build‑and‑fix cycle:

  • Runs the build
  • Captures compilation errors introduced by the migration
  • Suggests targeted fixes
  • Applies changes
  • Rebuilds until the project compiles successfully

This loop eliminates hours or days of manual mechanical migration work.

Security & Behavior Checks

After a successful build, Copilot performs additional validation:

  • Flags CVEs introduced by updated or newly resolved dependencies
  • Surfaces potential behavior changes from updated APIs
  • Offers optional fixes for dependency vulnerabilities

These checks ensure the migrated application is secure and stable before runtime verification.

Expected Output

A Jakarta EE migration with GitHub Copilot app modernization results in:

  • Updated imports from javax.* to jakarta.*
  • Dependencies aligned with Jakarta EE 10
  • Updated Maven or Gradle plugin and library versions
  • Rewritten API usage where needed
  • Updated tests and validation logic if required
  • A summary file containing:
    • Versions updated
    • Code edits applied
    • Dependency changes
    • CVE results
    • Items requiring manual developer review

Developer Responsibilities

While GitHub Copilot app modernization accelerates the mechanical upgrade, developers remain responsible for:

  • Running the full application test suite
  • Reviewing security, validation, and persistence behavior changes
  • Updating application server configuration (if applicable)
  • Re‑verifying integrations with messaging, REST endpoints, and persistence providers
  • Confirming semantic correctness post‑migration

Copilot focuses on the mechanical modernization tasks so developers can concentrate on validating runtime behavior and business logic.

Learn More

For setup prerequisites and full upgrade workflow details, refer to the Microsoft Learn guide for upgrading Java projects with GitHub Copilot app modernization.

Quickstart: Upgrade a Java Project with GitHub Copilot App Modernization | Microsoft Learn

Published Jan 17, 2026
Version 1.0
No CommentsBe the first to comment