patpitchaya - Fotolia
SAN FRANCISCO -- Given a five-year wait for the release of Java 11, and three-year spans between the releases of Java 8 and Java 9, it's easy to understand why the Java community raised a collective brow when Oracle announced a switch to a six-month Java release cycle.
"We were very skeptical," said Azul CTO Gil Tene, a participant in the Oracle Code One 2019 keynote. "We'd … started settling at about two years. A jump to a six-month release seemed huge."
The case for a shorter cadence
Historically, language designers would put together a laundry list of features to be included in a future Java release. Whenever all of those features were complete, a new version of the JDK would arrive.
A bundle of all these new features in one big release wasn't without drawbacks. Some features might be ready in two months, while others could require two years. But, none of those features became publicly available until everything was done. That means that one problematic element could delay all of the elements, a scenario that played out many times before in Java's history.
In contrast, with a six-month release cadence, any approved feature that's tested and ready to go gets released. Any feature that runs behind schedule simply gets pushed to the next release.
Given the general apprehensive feelings about the more ambitious Java release cycle, it's understandable why the stewards of the language might choose to boast a little at this year's Oracle Code One conference.
"A couple of years ago we announced our intention," said Georges Saab, VP of development for the Java Platform Group at Oracle. "Three of these releases have been delivered since then, and the fourth is imminent."
Ongoing Java enhancements
Overall, the new Java release cycle approach has been successful. While some had worried that the shorter Java release cycles would result in a focus on minor language enhancements with big-picture items pushed into the background, that hasn't been the case. Each release has delivered dozens of interesting changes, additions and improvements. Some of the more notable ones include:
- the introduction of the var keyword;
- local variable type inference;
- unmodifiable view collections;
- container awareness;
- a new garbage collector interface;
- a new JVM Constants API; and
- enhanced switch expressions.
One could argue that the big Java releases of the past tended to overemphasize large language changes.
Brian GoetzJava language architect, Oracle
"Under the old release model, there was a lot less motivation to do smaller features like code blocks, because it would take so long to deliver them, and they would tend to get lost behind the bigger features," said Oracle Java language architect Brian Goetz. "Frankly, when we were focused on big features like Lambda, it tended to crowd out the smaller ones. So the rapid cadence has had a hidden benefit of allowing us to have a more sensible mix of large and small features."
There were plenty of reservations about the move to the six-month cadence, but with Java 13 as the fourth feature-pack release to debut on time, the naysayers have been proven wrong.