What is going on with Java?
Java for more than 25 years, which is an impressive remark for any programing language. We can estimate nowadays that at least 50 programming languages competing for every day to be at the top of the market.
What makes Java more impressive is the fact to be always in the top 5 most adopted languages in the market in the past 5 years. You can check: or
To keep Java still a competitive language and at the top, changes are needed, and this new model can be confusing even for more experienced engineers, so my goal with this article is to simplify and show what is going on.
Before Java 8
Before Java 8 we only had 8 JDK releases, in a period of 15 years:
- JDK 1.0 (January 23, 1996)
- JDK 1.1 (February 19, 1997)
- J2SE 1.2 (December 8, 1998)
- J2SE 1.3 (May 8, 2000)
- J2SE 1.4 (February 6, 2002)
- J2SE 5.0 (September 30, 2004)
- Java SE 6 (December 11, 2006)
- Java SE 7 (July 28, 2011)
JDK 8 is considered one of the biggest and most important releases from Java, history. The number of features added on this release is insane, but let's focus on the most important:
- .
Jetbrains released research in 2018, “The State of Developer Ecosystem Survey in 2018”, . Java 8 is the most adopted version, in their IDE.
But is important to highlight the increasing on , and it is about this what we gonna discuss in this article.
After Java 9 — The New Release Model
Things are moving fast now, for Java to keep as one of the most popular languages 8 releases in per year is definitely not enough. Based on that Oracle decide to define a new Release Model, with a forecast until 2025.
Oracle will release a new version of JAVA every 6 months, this releases they can be LTS or not LTS. That means JDK will have consistency new releases with features implemented, but only the one released on LTS (Long time support JDK), will be the one that you can expect in the future versions.
Open JDK vs Oracle JDK
OpenJDK is a free and open-source implementation of the Java Platform, Standard Edition. Open JDK is supported by Oracle and from now they will have the same codebase, the difference is that Oracle can add features for commercial purpose on Oracle JDK. Let’s see what are the differences:
- Both OpenJDK and Oracle JDK are created and maintained currently by Oracle only.
- OpenJDK and Oracle JDK are implementations of the same Java specification passed the Java Technology Certification Kit.
- From , forward OpenJDK builds will be essentially identical
- Most of the vendors of JDK are written on top of OpenJDK
- Starting with JDK 11 accessing the long-time support Oracle JDK/Java SE will now require a commercial license, for production environments
- Performance of both JDKs should be similar.
The biggest change is that Oracle JDK, (July 2018), will be free the last free version of Oracle JDK, after that to run Oracle JDK on a production environment you will be required to purchase a commercial license.
According to “”, let’s see what this represent on the market:
Oracle JDK represents in some market 70% of the production environment, which is interesting to see, is a growing demand for OpenJDK in the near future.
With this new Model developers are learning how to react with these changes:
Conclusion
The Future of Java is quite promising and this new way of working will make our lives more interesting, with new challenges and new features every 6 months. We have so many internal and external variables to take in consideration that I would personally choose “Decide on a release-by-release- basis”. The “non-LTS” release still gives the power to Oracle to remove and add features as they wish or can.
My recommendation for the new JDKS, just try to upgrade and check what breaks, if you don’t have time to solve all the issues compile the code in your current version but use the new JDK and enjoy all the improvements on the VM.
I hope you like all the resources presented in this article!, If you want to learn more you can also explore these my favorite free courses to learn Java in depth
Suggested Reading
Other Useful Resources for learning Java you may like