Java Goes Open Source! (IBM i edition)
IBM has been investing heavily in sharing its cutting-edge Java technology to the open-source realm.
If you’ve read my blog, attended any of my conference presentations, or stood next to me on the elevator, you’ve probably heard me talk about open source! The open-source phenomenon continues to grow. After all, open-sourcing code is a way to spur innovation and extend the capabilities of software.
Today, I’d like to discuss some exciting developments in the Java space. Not only is this news good to know, it will directly impact your plans for Java on IBM i. More on that later.
IBM’s Contributions
IBM has been investing heavily in sharing its cutting-edge Java technology to the open-source realm, and two large open source projects serve as proof. To understand these projects, though, one must first understand that a full Java runtime environment (JRE) or Java Development Kit (JDK) comes in two major pieces:
- A Java Class Library (JCL), which provides implementations for the thousands of classes that your applications need in order to be functional.
- A Java Virtual Machine (JVM), which runs your compiled Java programs. It contains an interpreter, a Just-in-Time (JIT) compiler, a garbage collector, debug support, etc.
So, let’s talk about IBM’s donations. First off, IBM has been a contributor to the OpenJDK project since 2010. As you could guess by the name, this project aims to provide an open source JDK. It has received contributions from many entities, including Oracle. In a recent blog, Oracle stated intent to continue code contribution and also to make OpenJDK builds available. Like I mentioned, IBM has been a longtime donor, and we’re not backing down now. IBM aims to make significant contributions to this project into the future, including support for IBM i!
But that’s not all. IBM has also open-sourced its crazy-good JVM! You can check it out at the Eclipse OpenJ9 project. If you’ve been following Java on IBM i, “J9” might not be a new term for you. It’s the same line of Java technology we’ve been shipping on IBM i since V5R4M0. And now, it’s open source! We used to call it the “IBM Technology for Java Virtual Machine,” but apparently that had too many syllables.
A New Release Strategy?
With so much Java technology being open source now, it makes sense for Java to be on a different release model, similar to Node.js and other large projects. New releases of Java will be released more frequently, but not every release will have a long-term support roadmap. At the time of this writing, a glance at the Oracle Java SE Support Roadmap shows the next Long-Term Support (LTS) release scheduled for late 2018. There’s also a new versioning scheme, which you should take note of.
What Does This Mean for IBM i?
Java remains a vital language for IBM i applications and workloads, and IBM is committed to delivering top-notch Java technology for the platform. However, as I mentioned earlier, things are changing. Most notably, there will not be a Java 9 delivery for IBM i for a couple of reasons.
First, Project Jigsaw brings an assertive move towards modularity in Java packages. A new module system aims to replace the traditional sets of .jar files and classpath settings. A number of internal Java classes are also being privatized and no longer usable by application code. If you’re a Java developer, I suggest you start learning this new technology. Here are some useful resources:
- JDK 9 Migration Guide, the most comprehensive documentation to prepare for your version upgrade.
- Java Dependency Analysis Tool, to determine if your application is referencing possibly-problematic APIs
- Jigsaw Quick-Start Guide for anyone interested in trying out modularity.
- This “Prepare for JDK 9 video (50 minutes) made by Oracle Developers for the JavaOne conference.
The takeaway: Java 9 may “break” existing applications, requiring a significant refactor to conform to the new model. This is very different previous releases, where a version upgrade often “just worked.”
More significantly, though, if you look at the Java release roadmap, you might notice that Java 9 has a mere six-month support roadmap. That’s hardly a good fit for enterprise customers running enterprise applications.
Since Java 9 has a higher-than-usual barrier of entry and a very short lifespan, a new product option in 5770-JV1 would provide very limited value. Instead, expect to see IBM deliver new Java releases that have a long-term support roadmap, as mentioned earlier.
Even though you’ll be waiting a bit longer to have a new Java release, be aware that Java 8 will continue to be supported. The IBM Java lifecycle dates page shows support into April 2022.
Closing Thoughts
I’m really excited to see IBM’s continued investment in open-source technology! This is very true in the case of Java. Of course, any software gets bonus points for being open source, but this one has a personal touch for me: I wrote some of the code that has been contributed. Still, I look forward to seeing how our Java technology will evolve with the benefit of the Eclipse and OpenJDK communities. While there may be some churn in lifecycle dates, it will be a net benefit. The performance, serviceability and reliability of this already great technology will only get better—and that’s great news for IBM i!