The debate on the relevance of Java continues. Some people say that it is becoming obsolete and more advanced languages are replacing it. Others disagree, citing the number of specialists who choose Java for their core skills year after year. In any case, one cannot ignore the fact that most of the existing software is written in Java, and customers, both internal and external, continue to use it. In this situation, any new implementations and global news about Java should not be avoided.
Peter Verhas , a leading software developer and architect at the Swiss office of EPAM, shared his analysis of what changes Oracle is making and how it will affect us.
There have been a lot of changes in Java lately, and it seems that the way the language will evolve has changed dramatically. It is good that new features appear in the language. But these are not the only changes. Oracle has made significant changes to the support model and update cycle of the Java version that this company releases. All this led to a lot of confusion, which was caused by change, misinformation and misunderstanding. In this article, I summarize everything users need to know about innovations before they start believing in the apocalyptic end of the Java ecosystem.
However, you first need to clarify some points.
')
Oracle owns Java, but Java is not Oracle. Java source code released in the GPLv2.0 license with the classpath exception. In fact, this means that anyone can use and make changes to the source code of the language for free. There is only one thing that everyone is forbidden to do, including Oracle: make changes to the code and publish it with a closed source license. This means that commercial use of Java, only the paid version, is legally impossible, even if it is required by the marketing or business interests of Oracle. But I am still a technical specialist. In order to deal with this point is 100% the best way to download the text of the GPLv2-license and consult with a lawyer.
Oracle is not the only company that releases Java assemblies and is engaged in support, there are many other vendors. Of course, Oracle, as the main player investing most in the development of language and tools, is the most prestigious commercial company in its support.
In fact, Oracle does not have exclusive rights not only to Java source code. The development process, changes in the definition of Java, API - all this is in the hands of the Java Community Process, which anyone can enter. For individuals it is completely free. Members of this group are companies such as Intel, IBM, Credit Suisse, Software AG, RedHat. They determine the future of Java, not Oracle. And they have their own opinion, as we could see the last time, when the approval of the final version of JPMS was not entirely smooth.
After this introduction, in which we decided that Oracle “owns” Java, but is not Java, let's look at the changes in the development support procedure and the Java roadmap that Oracle presented.
Changes after Java 9, 10, 11
Oracle announced that, starting with JDK11, Oracle JDK will no longer be free. And at first this statement is scary. What we used to use for free will no longer be such. In practice, the fact that “we have to pay” is almost logical. But the small word “almost” stands there for good reason. If there is any service that we used, and it ceased to be free, we have two options: pay to use further, or no longer use. Should we continue to use Oracle JDK, or can we switch to something else? That is the question really.
To answer it, you need to understand what the Oracle JDK is and what alternatives there are. Another significant change concerns the release cycles of new versions and the notion of long-term support (English - Long Term Support or LTS). First, we will discuss the changes in the release cycle of new versions, then the confusion with the Open JDK and at the end the structure of the LTS.
The release cycle of new versions
Java appeared in 1996. The first few Java versions came out more or less regularly.

However, looking at the diagram, we see that the version of Java 5.0 came out with a delay. Java 6 was also not in a hurry for the previous version, and the biggest break was between Java 6 and Java 7. Even after that, new versions were not released very often. Java 8 has received many new features, but at the cost of two years of waiting. Similarly, the situation with Java 9, which, although it has undergone even greater changes, but forced itself to wait for three years.
The problem with such release cycles is that a language that, in itself, competes in the constantly evolving language market, cannot introduce new features quickly enough. If the development of a modular system takes three years, then nothing can speed up the process. However, some things that appeared in Java 9 could have been released before. But they simply could not get to the developers, as there were no earlier releases. Already available features should have been waiting for the most slowly developed feature in this release. This is one of the problems of the classic cascade design model.
Oracle decided to move in the spirit of agile and make versions every six months. Starting in September 2017, new Java releases can be expected in March and September. If any function is not ready for these dates, it will be transferred to the next release, but the rest as soon as they are ready will get into the freshest.
In general, this is normal. On the one hand, the Java community and developers should be excited about this. On the other hand, the question of support remains. Who can support so many Java versions? That is why long-term support (LTS) was presented, which we will talk about soon. But first you still need to clarify what is the Oracle JDK and OpenJDK.
What were the Oracle JDK and OpenJDK
Up until Java 9, there was a binary release of the Oracle Java assembly (Sun Microsystems), which was used in the production environment by most developers and companies. This binary was based on Java open source and included some enhancements — additional enterprise tools such as Java Flight Recorder, Java Mission Control, and some other features like Application Class-Data Sharing.
The OpenJDK build was created from open source Java code, in which there were no improvements. This Java build was used by those who wanted to experiment with Java properties, change the code, or simply for whatever reason, were committed to open source code. Although you had to download the source code and compile it for yourself.
Starting with Java 9, Oracle began to provide OpenJDK in parallel with the Oracle JDK. The company also announced that it wants to narrow the gap between the characteristics, performance and stability of the two versions, and as soon as this happens, make Oracle JDK a paid one. At that time, both the OpenJDK and Oracle JDK were available for free as binary builds from Oracle. These were Java 9 and Java 10.
After the release of Java 11, it stopped. OpenJDK is still available for free, but Oracle JDK for production systems has become paid. There is no significant difference between the two versions. The commercial version has an installer, while OpenJDK has only a ZIP file. There are other differences, but Java users should not pay attention to them. The technically detailed list of differences is described by Donald Smith, senior director of product management at Oracle in
this article .
Moreover, Oracle JDK is still free for others, even commercial users. Oracle JDK can be freely used for:
• development
• testing
• prototyping
• demonstrations
You can use OpenJDK for other purposes or pay Oracle and use Oracle JDK and get support. Support is good.
Long Term Support Releases
The transition to a new release cycle every six months raised the issue of support. No one can support such a number of versions for their benefit. If you installed Java 6 for your application in 2007, you can get support from Oracle after 11 years. The release of new versions every six months implies the support of 22 different versions at the same time. This would be a heavy burden for Oracle or any other vendor that would decide to support all releases.
Oracle’s strategy is to identify one release every three years that will receive long-term support. The first such release was Java 11, and it will be supported until 2026. During this time, Java 17 will also be released in September 2021, which will receive long-term seven-year support, in accordance with current plans. All other so-called functional releases will be supported only until the next version.

Please note that support only applies to the Oracle JDK and only for those who have paid for the JDK and support. But do not think that you were left to the mercy of fate, if you plan to use OpenJDK. For us, nothing has changed. If you did not pay for support before, you did not receive it anyway. If paid, you will continue to pay and get this support.
Here is a link to an Oracle article with life-cycle predictions for different versions.
Will there be a new version for OpenJDK? Of course. Previously, there were updates to the open source Java code that fixed bugs, although there was no guarantee that they would be released. This happened simply because all participants were interested in this. In the future, everything will remain as before, Java will receive new versions, new builds.
I see three main strategies for choosing which Java version to install:
- Pay Oracle for Oracle JDK and subscription, and use long-term support releases. This is something that should be done by large commercial companies using the Java infrastructure to meet the requirements of reliability.
- Switch to OpenJDK, use only long-term support releases, and install bug-fix versions available for OpenJDK. This is a viable solution for companies that are unable or unwilling to change the cost of Java infrastructure, could do without commercial support in the past and believe that they will also be able to in the long term.
- Switch to OpenJDK and install future releases every six months as soon as they appear. This is an option for companies that need the latest technological solutions.
Strategies can also be combined by installing different versions of Java on different machines. Regardless of what you choose, you can download binary versions of the pre-build from the following sites:
- Binary versions of pre-build OpenJDK adoptopenjdk.net
- Oracle JDK is available at java.oracle.com . Here you can click on Java SE 11 to go to the download page and get to the "download" button. There is a big yellow warning on the page, you will also have to click on the license terms before the download link becomes available. And this time it is better to really read the terms, and not just automatically agree.
Although this is not a binary download, it is closely related to downloading an Oracle JDK — you can also visit
www.oracle.com/java/java-se-subscription.html to get Oracle JDK and support in one package. Detailed pricing information is available at
www.oracle.com/us/corporate/pricing/price-lists/java-se-subscription-pricelist-5028356.pdf . For the impatient, I copied pricing information from the official Oracle FAQ here:
“The cost of the desktop version is $ 2.50 per user per month, or lower if there are multi-level volume discounts. For more information, see the Oracle Java SE subscription price list. ”Results
What do you do? Use OpenJDK or pay for Oracle JDK? This is a question of profitability and how important Oracle support is for you. If your business cannot afford to support Oracle JDK, because you are a startup, a rising star with a brilliant product idea, but a hole in your pocket, then your needs are consistent with OpenJDK. You do not need to pay for it. And besides, if you are a startup, it’s not so critical for you, if your servers will not work for several hours until the technical specialists solve the problem. If you cannot afford downtime, you are more likely to work in a mature company, and therefore must use Oracle JDK and sign up for support. You can also decide to combine different models and install on some product servers that should be available 24/7, Oracle JDK, and OpenJDK for internal applications that are not so critical for business.
In any case, you can continue to use Java and further.
About the author:Peter Verhas works at the Swiss office of EPAM. Peter develops software for clients, conducts trainings for programmers and is engaged in mentoring within the company.
You can subscribe to Peter on
Twitter ,
LinkedIn and
GitHub . The author also has a blog, “Java deep”:
javax0.wordpress.com