Keeping up with the modern world: Can Java leave its old ways behind?
Java 10 was the first release in Oracle’s new six-month cycle and now we’re just one month away from Java 11 so it’s not far-fetched to say that Java’s new chapter is exciting. In this 5-part interview series with this year’s Java influencers, we shed some light on the new six-month cadence, the dangers of release fatigue, what’s next for this old favorite and more.
The overall feature set for Java 11 is now frozen so we know what to expect from the next version [due next month]. However, we’re still getting used to the idea that there are two versions per year and we’re wondering if we are the only ones with this strange (yet good!) feeling.
But before we get down to business, we’d like to give a shout-out to this year’s Java influencers.
The power list: Top 20 Java influencers of 2018
Who has the most influence on Twitter? The JAX team has trawled thousands of tech accounts to find 20 Twitter profiles that belong in every Java developer’s Twitter stream. If you want to hear what they have to say about Java 11, what they want to see in Java 12 and what they think of the new release cadence, you’re in luck!
Check out the JAX London blog for the detailed scores.
In the first part of this interview series, we invited seven Java influencers to talk about the new six-month cadence and the dangers of release fatigue.
7 answers: How do you feel about the new six-month cycle and the new rhythm? After all, Java 10 was the fastest release in Java’s 23-year history and now we’re already one month away from Java 11.
Meet the Influencers
Markus Eisele: I think my opinion compared to the last Java interview series hasn’t changed much. We’ve seen a lot of traction for all the material that was published around modularity and developers are trying to learn as much as possible about all the new features that are available now. With just roughly 150 days until Java 8 gets end-of-lived, I believe that this isn’t enough time for most companies to switch over their production systems. That nicely fits into the new licensing model from Oracle and gives enterprises a lot more room to migrate. With a lot of articles and experiences being published about the necessary steps to get your project onto Java 11 it shouldn’t be a big headache for smaller ones. The bigger ones will, however, require a lot more than just the three-step process to compile, run, modularize.
I was thinking if the fast release cadence allows for enough feedback from experiences. And I believe that we will find out after the first LTS version comes out and how stable it really is.
Jessica Kerr: I’m all for small, frequent changes. The software industry has discovered that this makes feature delivery both faster and safer, and Java is no exception. “Fix the date, scope will vary.”
I think we can move forward much faster as a community. But we’re not there yet.
Guillaume Laforge: It goes so fast! As a Java developer, I’m really happy to get new features on a more regular basis, without having to wait 2-3 years to get the much talked about new features.
On the other hand, as an open source developer, it complicates things a bit more in terms of JDK version support for my projects.
The module system, in particular, imposes some challenges in this regard, and we need to accommodate different JDK versions for one single version or branch of our open source projects.
But outside of the impact of JPMS, I think it’s a welcome change, and anyway, we can also target only LTS (long-term support) versions as major versions to cope with.
Lukas Eder: I find this quite exciting. As a library developer, it’s great to have early access to new non-LTS releases and their included functionality early on, long before most of the community will jump on the new versions.
On the flip side, unfortunately, the “community” currently still also includes many Maven plugins, other libraries, and IDEs, meaning that even more than a year after the release of Java 9, IDEs are still very buggy with respect to Jigsaw. Depending on JAXB is still a major hassle across several JDK versions.
I’m hoping that everyone in the community will eventually pick up this new rhythm. I think we can move forward much faster as a community. But we’re not there yet.
Josh Long: I love it! Java is up there as one of the most sophisticated open source (or otherwise) software projects out there. It’s a virtual operating system in what it gives us. It powers one of the largest communities of applications and a dozen other satellite industries. It is up there with COBOL as being one of the languages that most empowered organizations to deliver value and profit.
Java is an amazing piece of kit, and I’d still be grateful even if it didn’t come out every six months. After all, Java is that it is the host for other languages, like Groovy, Scala, Clojure, JRuby, and Kotlin. So, if Java doesn’t have your favorite language feature, surely one of those (or many other) languages will. That said, releasing software early and often results in better software. It’s a good way to integrate feedback, to stay agile. (Thank you, Java!)
Eberhard Wolff: I think this is a great change. It allows for much faster innovation. At the same time, it provides a clear and reliable path for Java into the future. Also, it means that we won’t have to wait too long for new features. Once a feature is done, it can be put in the next release that is just a few months away.
Martin Thompson: I feel it is a very good move to have a regular release train. Many useful features got pushed back due to the delays introduced by Jigsaw/Modules which has set back Java compared where it could have been. The new schedule means smaller features can make the next release while more complex features can be developed in parallel to the release schedule until they are ready.
We are seeing this now with Values Types proving more complicated than expected yet they are not holding up others things as Value Types get developed under the Valhalla project.
Releasing software early and often results in better software. It’s a good way to integrate feedback, to stay agile.
Quentin Adam: This new release cycle is empowering the Java community. As a platform, it shows it’s alive, quickly responding to market needs, and proves that the project is still young, continues to progress and change. As a language, it allows Java to stay fresh and evolve within the entire language ecosystem, using all JVM languages as lab, integrating only proven things.
The new release cycle will also break large organisation integration window that usually last several years and slow down innovation, and force them to adopt a new iteration cycle on the Java platform. This is good news for their developers, publishers, consultants and eventually for the platform. It forces them to follow innovations and updates. This kind of release cycle proved valuable on Firefox a few years ago.
Do you think the new release cadence will lead to fatigue or is it just keeping developers on their toes?
Markus Eisele: It’s hard to say right now. For sure it requires a lot more learning for everybody involved. Somedays it might even feel that there isn’t a lot of difference anymore to other fast-moving languages that are living on the bleeding edge. I am not sure if Java and the ecosystem aren’t losing one of their biggest advantages by speeding things up like this.
Ultimately, we will see the judgment of developers: If they still believe it is worth the effort to stay on top or if they will more easily also consider other languages when it comes to quick solutions. My perception is that the language, tools and framework “diversity” developers can choose from today has become insanely broad with Java being the proverbial island in the middle. I’ve always believed in the slightly altered version of an African saying that if you want to go fast you have to go alone. But if you want to go far you need to do that with a strong community of many voices giving you the chance to incorporate their experiences. This naturally slows things down. In a good way.
Jessica Kerr: If it leads to fatigue, then I hope that fatigue will lead to automation. The world changes around our applications, and our applications and infrastructure need to keep up. The JVM team is keeping our runtime up to date, and all we have to do is install it and test – so automate installation and tests! Modern software infrastructure is quickly replaceable, and the pace of the JDK adds value and takes advantage of that.
The removal of long-deprecated features is a signal that the Java team is serious about the future.
The removal of CORBA and enhancement of HTTP and TLS are examples of how Java is keeping up with the modern world, and keeping up its own ability to change by reducing its own maintenance burdens. The removal of long-deprecated features is a signal that the Java team is serious about the future. Various enhancements targeted at compiler authors (like 181 and 309) enable even more improvements. Java is a solid foundation for serious applications, now and in the future.
Guillaume Laforge: At this point, this is too early to tell. At least, it shows that Java is alive and kicking, so we won’t hear about those rants along the lines of Java is dead! Furthermore, it’s easier to learn one new feature every six months, than having to get used to six new big features every three years. It’s easier to adopt novelties with a more regular agenda.
Lukas Eder: It will first act as a filter. Those libraries and products that do not manage to keep up might be left behind and be replaced by end users. Especially once the free Java 8 support has ended. People will want to upgrade to Java 11, but many libraries are not ready for Java 11 yet. We’ll see if people will remove those libraries or stick to Java 8.
Once the above filter has been applied, I’m positive that the community will not be fatigued but will embrace the new cadence. Oracle has been doing a great job to reach out to the community and get early adopter feedback, so I think Java will greatly improve with this new cadence.
I cannot comment on how end users will live with that as I haven’t worked on end-user systems for a while now.
Josh Long: The new release cycle is two-tiered. There are long-term releases, like Java 8 and Java 11, where organizations weary of instability can park their applications for a few years and enjoy stability and support. For the rest of us, we’re free to upgrade to the latest and greatest and enjoy the steady trickle of new features.
Eberhard Wolff: Developers are usually eager to try out new features. So I don’t think the new release cadence is going to be a huge problem for developers. However, not every organization will roll out a new Java version into production every six months. Even now there are often outdated Java versions in production that are no longer supported. This happens even though running an outdated Java version in production is risky. There are not even security fixes.
Probably the commercial agenda behind the more frequent Java releases is to increase the number of outdated JVMs in production. Those would need to be covered by support contracts. We’ll see how this works out for Oracle. It seems quite a few are already used to the risk of running outdated Java versions.
Martin Thompson: I do not expect the cadence to drive adoption. Features which enable delivery are what drives adoption based on what I’ve seen over the last three decades in software development. What goes into Java is more important than how often we get releases. Larger organisations I’ve been talking to see the LTS releases as similar to the old release cadence with the likelihood of it being more predictable.
The much larger question is if future releases are to be more difficult to upgrade to. Many in the enterprise space struggle to upgrade when things break. This is a complex issue that goes way beyond an organisation’s own code base. Enterprise code is often difficult to change due to a lack of CI and automated test suites plus the authors have often moved on. This gets more complex given how dependent Java is on the ecosystem of open source libraries.
Not every organization will roll out a new Java version into production every six months.
Many of these libraries are developed by enthusiasts with little or no commercial support. As an open source developer, it is difficult supporting many versions especially without natural support for multi-version builds and pre-processors. This is something which needs to be considered in the evolution of Java otherwise it could self-destruct. Modules have made this more difficult.
Quentin Adam: The developer world is built on a faster cycle than before, and more importantly, the production world is also accelerating; DevOps, software factories and continuous deployment lead to time to market acceleration for the code, and for all the tools we use as developers or DevOps.
The new release cycle will include Java and the JVM to this vibrant ecosystem, allowing it to not be seen as an old thing. So this frequency will keep developers alert and make them stay on Java instead of more quickly evolving language (like Go, Kotlin or any other trending stuff), this will provide more innovation to Java as a language and library ecosystem.
The second part of the interview series is all about Java 11: we dissect influencers’ favorite features and we talk about what’s left to ax.
If you’d like to meet the top Java movers and shakers, join us in London in October.