“Java will cost money.” – you will find a lot of posts and articles on the internet about this topic. It’s fair to say that it did not come out of nowhere. However, there are some myths that have grown around this, which need to be dispelled, especially if your career or business is related somehow to the Java SE platform.
Before we explore this topic in more detail, I’ve prepared a quick summary for both developers and business owners so, whether you’re using Java 8 or Java 11 (and higher), you can get a quick summary on what to do next.
I am a developer
Are you a developer who has never paid for Java and want to use Java for free in the future?
Whether you’re using Java 8 (and have no opportunity to migrate to a higher version) or are planning to use Java 11 or higher, here’s what you need to know:
First of all, be aware that Oracle JDK is noticeably different than OpenJDK.
Pay attention to where you get the JDK binary distribution from. Today, the best choice for you is http://jdk.java.net/ whereas, in 3-6 months, it will be to https://adoptopenjdk.net/. If you work in Linux every day, you could also use OpenJDK, delivered in the package managed by a package-manager (apt, dnf etc) of your Linux distribution.
Most importantly, take care of the compatibility of your code with OpenJDK.
However, if you specifically choose Oracle JDK and you want to use it only to develop and test your software, this new license allows you to continue using it free of charge.
I am responsible for my business.
Are you using Java in a production environment, have never paid for it and want to be able to use Java for free? If so, be aware that, from now on, you can no longer rely on official guarantees. From here on out, you will need to rely on the support of the free community of the open-source project. The development of events in this community gives us great hope that this support will continue to exist.
If you are using Java 8 and have no opportunity to migrate to a higher version:
Oracle's free support for JDK 8 ends in January 2019. There is a very high probability that OpenJDK will be supported for a long time; not by Oracle, but another entity. Therefore, if you use Oracle JDK (and you do not use its paid functionalities), switch to OpenJDK (see the instructions for developers above).
If you are going to use Java 11 or higher:
If you use Oracle JDK 11 for commercial applications, you have to pay. So, switch to OpenJDK (see the developer's manual). Oracle currently guarantees free updates of OpenJDK 11 for (only) 6 months from the release date. However, there is a very high probability that another entity will take over the OpenJDK 11 updates and will continue to support OpenJDK for the next several years.
Will We Have to Pay for Java?
Let’s start from the beginning.
In September 2017, Java 9 was meant to be released. However, according to infamous tradition, this edition was delayed for almost a year. Everyone had good intentions, but the story turned out as usual: functionalities planned for implementation in the "ninth" edition, in particular the groundbreaking JPMS, consumed much more time and effort than was initially thought. There was, however, a glimpse of hope that things would change: a new release cadence for Java editions was announced . From this moment forward, subsequent Java releases are to be based on a rigid schedule. A new edition of Java will be released every 6 months and will include only those functionalities and improvements, which can actually be delivered at the time of its release. If some of them will not be ready, they will simply be moved to the next version.
The Java community welcomed this news with great enthusiasm. It meant that Java would be able to keep up with other languages and platforms in terms of their dynamic development. Furthermore, anyone interested in IT innovation will be able to test features and functionalities quicker, allowing them to provide value feedback to the programming community. This awareness slowly reached everyone.
In September 2018, the 11th edition of Java was supposed to be released - the first release in a new cycle with Long-Term Support (LTS). Everyone was excited for the new edition because the LTS edition was supposed to guarantee that we will receive patches of critical vulnerabilities (especially security) discovered in the platform for a long time to come. Hence, this edition was thought to be a good one, as it was expected to work for many years.
However, when it was announced what LTS actually means, in practice, it came as a big shock. The main Java vendor was indeed going to provide LTS, but with a slight difference – it was going to become a paid option.
It turned out that the new way of releasing Java will have consequences going much further than it initially seemed.
To understand this, we need to go a little deeper and explain what the process of creating (manufacturing) the Java SE platform looks like. What are the roles of the various entities and people involved in making it possible to easily and freely install another version of Java on your computer or server? There are three key roles to consider:
- Java Stewards and the OpenJDK team – such individuals as Mark Reinhold, John Rose, and Brian Goetz. People who have been creating the Java SE platform for years and are the world’s leading experts in this respect. They are responsible for the development of the platform in line with the challenges of the present and with community feedback. As of today, they are full-time employees of Java’s sponsor. Nevertheless, they do have some independence in creating the vision of Java’s development. They participate in constructive discussions with other community representatives; their work and decisions are mostly transparent. Hence, to consider them voiceless subordinates who merely carry out the sponsor’s plans, would be an unfair assumption. Here’s an interesting lecture by Java’s main steward .
- Sponsor – namely, Oracle. The company sponsors developers who implement OpenJDK. These OpenJDK sources, although licensed under GPLv2 + CE, are owned by Oracle and are located in the company’s servers .
- Vendors – other entities that use OpenJDK sources to build, make available (sometimes for money), and support binary JDK distributions. Oracle is the dominant vendor, of course. However, Red Hat can serve as another example of a vendor, who builds OpenJDK for distribution with RHEL systems. In a sense, the OpenJDK team also assumes the role of a vendor by building and providing binary distributions. Because OpenJDK has a GPLv2 + CE license, anyone who has the right skills can be a commercial vendor .
In short, each new version of Java is first developed as a specification created and agreed by the stewards and other community leaders within the Java Community Process. This specification is a collection of popular Java Specification Requests (JSRs). Each of these JSR documents has its own unique Expert Group, with people sourced for their knowledge of the respective area – and often coming from outside of Oracle. They are the ones who constitute the so-called Expert Group, consisting of experts from correlating JSR areas. This form of consultation with the community is of particular importance in this process. One of the most significant examples of such cooperation was the participation of Stephen Colebourne, the creator of the Joda Time library, with the expert group which created the Java Time API, published in Java 8 . When the JSRs are ready, the OpenJDK team creates a reference implementation of this specification. Once this is done, the vendors take sources of OpenJDK, implement improvements specific to their target hardware or OS platforms, and distribute.
However, because so far, Oracle (formerly Sun) was both the steward's employer, sponsor, and the main vendor, the common assumption was that "Java is an Oracle product" and that all decisions regarding the platform are arbitrarily imposed by the company, motivated only by its particular interests. This is not an entirely true and justified assumption – and it will certainly continue to lose merit once Java 11 is released.
Let's return to the LTS and how it is expected to work. As we already know, JCP will release a version of Java with the LTS every 3 years. However, the stewards' designation of a given version as LTS does not mean that they take on the pledge to support it. This is only a "guideline" for vendors so that, if they want to distribute Java in accordance with the "social contract" of the Java community, they should provide their end users with the long-term support of these versions. Hence, vendors are the ones who must oblige to bear support costs for a specific period. They can, however, do it either for free or for a fee. So, different vendors have different approaches to the Java 11 LTS:
- Oracle: will provide Oracle JDK with several years of LTS – but the LTS will be a paid service
- OpenJDK team (the "courtesy" vendor): at this moment, they plan on supporting OpenJDK 11 – but only for 6 months from its release, (which can’t really be considered long-term support).
However, the Java community came up with a new initiative, known as – AdoptOpenJDK . What is this? It is a CI infrastructure on which JDK binary distributions are built and made available to the public – free of charge. They are built from OpenJDK sources, but outside of Oracle's infrastructure. On the AdoptOpenJDK website, you can download and install JDK on your computer.
So, is AdoptOpenJDK the new vendor? It’s not. The mission of this initiative is to create an independent, public, open infrastructure for building JDK from sources – but not for patching these sources. In order for Java to be free and supplemented with long-term support, a volunteer is needed who’ll patch OpenJDK 11 sources over a long period of time. In addition to a volunteer, Oracle's consent is also required to transfer the care of OpenJDK 11 to another entity after 6 months. At the very least, there are two pieces of good news so far:
- It seems that Oracle will agree to transfer the support of OpenJDK 11 elsewhere, without any objections. At least this can be inferred from the recent e-mail exchange on OpenJDK lists. See .
- There is a volunteer who is willing to take on the long-term support of OpenJDK 11, as well as OpenJDK 8. The volunteer in question is Andrew Haley, a representative of Red Hat. As an experienced vendor, he has the necessary skills to take on this role. Another important fact is that Red Hat has been a strategic AWS partner for some time – and the latter has already declared its readiness to involve its human resources in order to support OpenJDK. See .
Consequently, it is quite likely (though not guaranteed) that Red Hat will, in fact, take on the LTS of OpenJDK, and that the AdoptOpenJDK volunteers will make binary builds available to us for free (even more for free than ever before).
How Did It Come to This? Where’s It All Going?
For years, Java SE has had a full spectrum of both supporters and contestants. However, one thing’s certain – Java has been the most popular programming language for years now. Its popularity is in most part a result of it always being available free of charge. Its sudden commercialisation creates a big risk for its market position. The news that Java will no longer be available for free hit both businesses and developers where it hurts. One can ask oneself whether this risk, taken by the platform’s owner, will be worth it. Instead of becoming a source of income, will it not contribute to its self-destruction? Personally, as someone who uses the language, can I live with the conviction that things are going in the right direction?
Oracle did not issue an official statement explaining its choice to make its Java platform and runtime environment a paid service. Hence, all we can do is speculate as to why this is happening. We can, however, look to the past for clues that could help shed some light on this matter:
- With the development of Cloud solutions, strongly based on Java, more than ever before, various entities, (primarily cloud-providers), benefit from using the Java SE platform. The sponsor's search for ways to involve other entities to participate in the costs is a natural and understandable tendency, especially if you take into account that these entities, (i.e. Amazon Web Services), are Oracle’s direct competitor on the Cloud solutions market.
- Another aspect related to the flourishing of Cloud solutions is the universalism of Java SE. Modern reality shows that its development as a monolith creates too many problems and loses meaning. In order to remain universal, it must give the possibility of greater customisation to its key users (i.e. Cloud providers). The adoption of such a course is reflected in the introduction of the Java Platform Module System in Java 9, which makes it possible to customize the JRE for very specific needs. Another example is the improved isolation of the Java Garbage Collector API, introduced in Java 10, which facilitates the replacement of this implementation. In Java 11, it goes a step further: the No-Op Garbage Collector is added - a tool to help you test your own GC.
- Stewards and the OpenJDK team are only people; they have a limited amount of time. Focusing on the development of the platform and creating its future will be a better investment of this time than the long-term support of the ageing OpenJDK releases.
Of course, everyone can draw their own conclusions. However, it is difficult to resist the impression that Java is changing in the right direction. That is, one that responds to the needs and challenges of the changing world.
We’re monitoring what’s happening and paying close attention to the decisions that Oracle, Red Hat, and other giants make with regards to OpenJDK. While, at the same time, we’re keeping our fingers crossed for the AdoptOpenJDK volunteers.
Despite Oracle’s changes, it’s still possible to use open sources for Java and, potentially, volunteers and other organisations will do their best to keep some variant free and open. There’s no need to panic right now when it comes to Java, but it something we are surely keeping an eye on.
- Mark Reinhold (2017/09/06) "Moving Java Forward Faster"
- Mark Reinhold (2018/08/01) "The Future of the Java Platform and the JDK: Who is in Charge?"
- OpenJDK Projects
- GNU General Public License, version 2, with the Classpath Exception
- Andrew Haley (2018/09/24) "The future of Java and OpenJDK updates without Oracle support"
- The OpenJDK Developer's Guide
- (OpenJDK) JDK 11 General-Availability Release
- Nicolai Parlog (2018/09/25) "All You Need To Know For Migrating To Java 11"
- More on GPLv2 with the Classpath Exception
- Stephen Colebourne (2018/08/28) "Java is still available at zero-cost"
- Stephen Colebourne (2018/09/26) "Oracle's Java 11 trap - Use OpenJDK instead!"
- JSR 310: Date and Time API