Differences Amazon Corretto and OpenJDK

JavaCorretto

Java Problem Overview


What are the differences between Amazon Corretto and OpenJDK (and Oracle's OpenJDK - but there is already a ticket about this)? Corretto is a OpenJDK version 8 implementation. Both are free and seem to run on most systems (Linux, Mac OS and Windows). So far Corretto is only in preview, but this will change soon. Corretto's documentation doesn't say much about differences. Are there differences in e.g. performance, garbage collection? Why would I prefer one over the other? Would you use Corretto outside of AWS?

Java Solutions


Solution 1 - Java

From Amazon's description:

"Patches and improvements in Corretto enable Amazon to address high-scale, real-world service concerns, meeting heavy performance and scalability demands. We’re making these available to customers with no-cost, long-term support, with quarterly updates including bug fixes and security patches. AWS will also provide urgent fixes to customers outside of the quarterly schedule"

So Corretto has tweaks that are specific to performance (e.g. for server or cloud applications), and also additional bug fixes that users can take advantage of that aren't necessarily in OpenJDK proper yet. Also with this Amazon is offering proper LTS support of their build, as other commercial companies are starting to do for the JDK (Oracle and Azul come to mind, as well as others).

Solution 2 - Java

I can tell you we have found a few subtle differences. We have not identified the root cause of the differences but we do know that Jasper reports generated with Corretto have minor differences in some of the offset numbers, such as leadingOffset="-2.9667969" in corretto vs "-2.737793" in the Oracle JVM. There is no visual difference but it led to failure in golden master tests. Additionally some very old deprecated tools such as text to tiff rendering are not included. Other than that we have converted many projects over to Corretto without issue.

Solution 3 - Java

Other than any performance benefits, an important reason to use Corretto is for its Long Term Support of its releases, including security vulnerabilities.

One of the important differences between OpenJDK and several other vendors (like Amazon Corretto) is their release and support cycle.

OpenJDK is on a 6-month release cycle and only support each release for this time. After the next release, the previous release will stop receiving patches. This means to stay up to-to-date, you must upgrade every 6 months.

Corretto on the other hand offers LTS (Long Term Support) of their JDK builds.

> Amazon Corretto is a no-cost, multiplatform, production-ready > distribution of the Open Java Development Kit (OpenJDK) that comes > with long-term support (LTS). LTS includes Amazon’s commitment to > provide performance enhancements and security updates at no cost until > at least the specified date for the relevant release version (e.g. May > 2026 for Corretto 8). Updates are planned to be released quarterly. > Amazon also plans to apply urgent fixes (including security) outside > of the regular quarterly cycle when they are available and ready to > use.

To summarize, you have 3 options:

  1. Use OpenJDK for free, but upgrade every 6 months to get updates
  2. Use a paid JDK from Oracle or another vendor
  3. Use Corretto for free, and get free updates for several years

As you can see, Corretto is a great choice if you want to stay secure and up-to-date, don't want to pay money, and don't want to be constantly upgrading to a new version.

Here are the current end of life dates for Corretto:

  • version 8 LTS June 2026
  • version 11 LTS September 2027
  • version 17 LTS October 2029

Non-LTS versions are available as well, but are supported for a shorter period of time.

The is a variety of JDK vendors out there, so there may be other alternatives for a free and updated JDK, but be sure to read the vendors website carefully to understand their support and patching policy. Personally I think Corretto is a great choice, and something you can be confident will be patched in a timely manner.

Solution 4 - Java

The patches applied are listed in the following pages:

I am not copying over as the list is going to grow over time, but the focus seems to be bug fixes and performance fixes patches and backports.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKrisView Question on Stackoverflow
Solution 1 - JavaJasonView Answer on Stackoverflow
Solution 2 - JavaDavesPlanetView Answer on Stackoverflow
Solution 3 - JavaDespertarView Answer on Stackoverflow
Solution 4 - JavaNitsan WakartView Answer on Stackoverflow