café, java, logo

Choosing the right Java engine and version for your application

As per the 2020 state of Octoverse report from Github, Java is the 3rd most popular programming language. Python has taken over the 2nd spot from Java in 2019. However, Java is still the language of choice by large organizations to build enterprise applications.

Today, a large number of enterprise applications run on the Java platform. In 2019 Oracle announced that it would stop issuing Java public updates for commercial use. Also, Oracle started releasing newer versions of Java twice a year. This resulted in financial impact and pressure on IT to run their applications on the latest version of Java. 

IT leaders across the industries were looking for answers for the following 3 key questions. 

  1. Which Java engine should I use?
  2. Which Java version should I use?
  3. How frequently should I upgrade my Java version?

Here is my recommendation based on implementation experience for one of the large enterprise in the USA.

Which Java engine should I use?

Apart from Oracle, IBM and Redhat are the other 2 major commercial vendors who produce Java that is fully compatible with Oracle platform Java Standard Edition. They also provide commercial support.

If you are running your applications on Mainframe or IBM Cloud or IBM Servers (WebSphere), IBM Java is shipped along with it. Continue using it, you don’t have any licensing impact due to a change in Oracle’s policy.

If you are running your applications on Red Hat Enterprise Linux (RHEL), you have it covered. You can continue using the Red Hat build of OpenJDK without worrying about the recent change in Oracle’s Java license policy. 

If you are using Oracle Java, you have the option to continue using Oracle or switch to IBM or Red Hat. 

Alternatively, you can use AdoptOpenJDK (optional commercial support by IBM) and Amazon Correto (supported by Amazon) based on your needs. They both are compatible with Java SE standards. 

I don’t recommend enterprises going with Oracle Open JDK or any other Java implementations since they don’t have commercial support or they are not widely used in the industry.

Which Java version should I use?

Choose the stable Long-Term-Support (LTS) release. Choose Java 8 if you are running on an older version of Java and it meets your requirements since It has the longest extended support (until Dec 2030). If you are running on newer versions of Java then choose Java 11.

The report from Juergen Hoeller at SpringOne 2020 shows (as given below) Java 8 (released in March 2014) dominates the market followed by Java 11 (released in September 2018) and both are long term support (LTS) releases. Enterprises tend to choose stable LTS releases irrespective of new releases twice a year.  

Source – Spring One 2020

Another survey report from Synk.io during the second-half of 2019 also reveals similar data.

Here are Oracle’s Java release dates for your reference.

ReleaseGA DatePremier Support UntilExtended Support Until
7July 2011July 2019July 2022*****
8 (LTS)March 2014March 2022December 2030
9 (non‑LTS)September 2017March 2018Not Available
10 (non‑LTS)March 2018September 2018Not Available
11 (LTS)September 2018September 2023September 2026
12 (non‑LTS)March 2019September 2019Not Available
13 (non‑LTS)September 2019March 2020Not Available
14 (non‑LTS)March 2020***September 2020Not Available
15 (non‑LTS)September 2020***March 2021Not Available
Source – https://www.oracle.com/java/technologies/java-se-support-roadmap.html 

How frequently should I upgrade my Java version?

Upgrade to a newer version of Java only when a stable LTS version is available, which means once in 3-4 years. The latest stable LTS version is Java 11 which was released in 2018. You may still have to continue applying product updates (security and bug fixes) coming from Oracle for your version of Java.

Conclusion:

Choose the Java platform that best suits your current, future, and performance requirements without getting caught into vendor lock. Avoid upgrading to the latest Java version frequently (unless there is an ROI) since it costs time and money. 

About the author

Madhusudan Gowdra

Software Engineer with 18 years of experience in designing and building internet-scale applications for large enterprises.

View all posts

Leave a Reply

Your email address will not be published. Required fields are marked *