In the past, Java had a release cycle where a new version would come out about once every 2 or 3 years. This did not work well because releases often ended up running late due to delays with just one feature while everything else was ready. But this year a new 6 monthly release cycle has been introduced. Features are in development and whatever is ready to go ships in the next release. We still have the same rate of Java development, but spread across multiple, regular releases.
There are now 2 different types of releases:
- Feature releases (only supported by Oracle until the next release, i.e. for 6 months)
- Long term support releases
Below, the long term support releases are in bold:
8, 9, 10, 11, 12, 13, 14, 15, 16, 17
The most recent long term release is Java 11 which came out in September 2018 and will be supported until 2026. The next one (Java 17) is set to come out in September 2021.
Note that Java 9, although it had lots of new features (including big ones such as modularity with Project Jigsaw) is not a long term support release. It is a feature release and is no longer supported by Oracle.
What are the pros?
One of the main advantages of the new release system is that features can be released earlier. If a new feature is added in shortly after a release, we no longer have to wait three years to see it. This also makes it easier for Java to support new technologies and keep up with the software development ecosystem. For example Java 10 improved the ability to integrate Docker with Java. With the old release system, this would not have been added until 2021.
It also makes migration easier. If you want to always stay on the latest version of Java, there is less chance that upgrading will break your code. The changes are smaller and more incremental, so each upgrade is easier and less of a change.
Regular releases also mean that features can be trialled in new versions. Feedback can be gathered before they are finalised and regressions can be fixed quickly. Java development is much more agile!
What are the cons?
Having a faster release cycle can make it difficult to keep up with (however there is no need to upgrade if you do not want to). It also means that there will be more variety in the versions that people are using. A survey mentioned in talks at Oracle Code One this year showed that currently, 79% of people were using Java 8 (and shows of hands in the talks also suggested that the vast majority are on Java 8). Another survey mentioned at the conference showed that, in the future:
- only 8% say they will stay on newest
- 30% will decide on a release by release basis, depending on features
- 34% will stick with the most recent Long Term Support release
- 28% were undecided
This means in the future it looks like there will be more variety in the versions people use. This, and the faster pace of change, might make it harder for people writing code that supports Java, and could make it harder for the rest of the ecosystem to keep up.
What does Oracle think?
Having spoken to Oracle employees and heard several of them speak at Code One, their view is that the new release system is an improvement. There is no longer a rush to get in as many features as possible every three years. If a feature does not make a release, they can get it in the next one 6 months later. Use of Continuous Integration has also made it easier for developers working on new features.
What do Java users think?
Overall I think the new release system is an improvement. It allows us to access new features more quickly. And there is no need to upgrade to every new feature release if you do not want to. What do you think? Let us know in the comments.