Skip to content
Pricient by IOanyT

Legacy modernization · guide

Java 8 to Java 17 or 21: what the migration involves and what drives the cost

Where Java 8, 17, 21 and 25 stand on Oracle's support roadmap, the three changes that make the jump from Java 8 real work, and how to choose a target version.

Published 13 October 2026 · Pricient by IOanyT

The short answer

Oracle's Premier Support for Java 8 ended in March 2022, and for Java 17 in September 2026; Java 21 has Premier Support until September 2028 and Java 25 until September 2030. Moving from Java 8 is real work mainly because of three changes: removed Java EE modules, locked-down JDK internals, and Spring Boot 3's move to Java 17 and Jakarta EE.

Where Java versions stand

VersionReleasedOracle Premier Support untilOracle Extended Support until
Java 8March 2014March 2022December 2030
Java 11September 2018September 2023January 2032
Java 17September 2021September 2026September 2029
Java 21September 2023September 2028September 2031
Java 25September 2025September 2030September 2033

Source: Oracle Java SE Support Roadmap, checked 5 October 2026. Oracle’s table carries footnotes on the extended dates, and other JDK vendors publish their own terms — check the distribution you actually run.

The practical point: Java 17, the obvious target a few years ago, has already left Oracle’s Premier Support. A migration started today is usually better aimed at Java 21 or 25.

Three changes that make the jump real work

ChangeWhere it came fromWhat it means for your code
Java EE and CORBA modules removedJEP 320, Java 11Code using XML web services, JAXB, CORBA or the old transaction APIs needs replacement libraries
JDK internals strongly encapsulatedJEP 403, Java 17Code and libraries reaching into JDK internals stop working until updated
Spring Boot 3 requires Java 17 and Jakarta EESpring Boot 3.0 release notesMoving to a supported Spring Boot means renaming the Java EE APIs throughout the code

Each of these is well documented. What makes the cost uncertain is how much of your code — and your dependencies — relies on them.

What drives the cost

DriverWhy it matters
Test coverageWithout tests, every change has to be checked by hand — or not at all
Old and abandoned librariesEach needs a newer version or a replacement
Framework versionsAn old Spring, Hibernate or application server may need its own upgrade
Number of servicesTen services can move one at a time; one large application cannot be split as easily
Build and deploymentBuild tools, containers and servers move with the code

Upgrade in place, or modernize?

If the code is sound and the framework still exists, an upgrade in place is usually right. If the upgrade means replacing most of the framework anyway, it may be the moment to move module by module to something new, while the old system keeps running the parts that have not moved.

What to have ready before you ask for a quote

  1. Which Java version and frameworks each application runs on now
  2. Roughly how many services or modules there are, and their test coverage
  3. Which libraries and outside systems they depend on
  4. Which parts can never go down

How Pricient quotes a modernization

Modernization starts with a Legacy System Specification Assessment. It produces a written specification, a risk register, a keep-vs-replace cost comparison and a staged replacement plan, and its fee is credited in full against the first build stage if it starts within 90 days of the report. You can start with a conversation about the system; we ask for read-only code access only when the assessment begins. Tell us what you are running and you get a fixed quote for the assessment.

More on legacy modernization →

Questions

Asked about this

Is Java 8 still supported?

Oracle's Premier Support for Java 8 ended in March 2022; Extended Support runs to December 2030 (Oracle Java SE Support Roadmap, checked 5 October 2026). Other vendors publish their own Java 8 builds and support terms, so check the one you actually run.

Should we migrate from Java 8 to Java 17 or Java 21?

On Oracle's roadmap, Java 17's Premier Support ended in September 2026, while Java 21's runs to September 2028 and Java 25's to September 2030. If you are doing the work now, a target with years of support left saves you doing part of it again soon.

Why is the jump from Java 8 harder than later upgrades?

Java 11 removed the Java EE and CORBA modules (JEP 320), Java 17 strongly encapsulated JDK internals (JEP 403), and Spring Boot 3 requires Java 17 and moved from Java EE to Jakarta EE APIs. Code relying on any of these needs changes, not just a recompile.

Can we migrate without stopping the business?

Usually, yes. Services can move one at a time, with tests that prove each behaves as before. The weaker the existing tests, the more of the work goes into establishing that baseline first.

Defined by both lists

Describe your project. See what comes back.

Start your spec

No signature, no call. A business email unlocks the full quote.