17

I wanted to install JDK 9 on my machine, visited JDK official download page, and was surprised to see,

Java SE 9 has reached end of support. Users of Java SE 9 should switch to Java SE 10. Please visit our Java SE Downloads page to get the current version of Java SE. You will be redirected to the Java SE Downloads page in ... seconds. Please update your bookmarks to the Java SE Downloads page.

I did some googling and Java release history etc. But couldn't find any concrete reason.

I have couple of questions-

  1. Oracle is still supporting the JDK 1.8, but stopped releasing updates to JDK 9, why?
  2. Should I continue using JDK 1.8 for some time and then directly switch to JDK 10?
Red Boy
  • 5,429
  • 3
  • 28
  • 41
  • 2
    well that is what we did, we skipped 9 at all, and went for 10. btw 11 is like months away... – Eugene May 14 '18 at 14:21
  • 8
    Oracle changed the release model for Java some months ago. Check [here](http://www.oracle.com/technetwork/java/eol-135779.html) for detail. – Federico klez Culloca May 14 '18 at 14:21
  • 2
    how is this not closed and how is this a programming question is beyond me, SO can be an interesting place sometimes :) – Eugene May 14 '18 at 19:23
  • By the way, there is no such thing as "JDK 1.9" or "1.10". It's "JDK 9" and "JDK 10". Even the `java.version` system property says "9" or "10" (well, now it says "10.0.1". – DodgyCodeException May 22 '18 at 16:53
  • Why not ask Oracle about why they do not release updates? – Nico Haase Feb 22 '21 at 15:28

2 Answers2

25

In the past, Java major releases often tended to be loaded with far-reaching features that had a massive impact on the code that you could and should write, like generics (Java 5) and functional constructs (Java 8).

With Java 9 Oracle introduced a new modularization system (project Jigsaw), that also has a massive impact on the JVM architecture (although, not so much on the language syntax). They had to postpone the release of Java 9 two times because of disagreements on the implementation of that feature with other influential members of the Java community.

Presumably drawing a lesson from this, Oracle decided to overhaul the development style for Java to be more incremental or "agile", if you like. Instead of having feature loaded major releases that can sometimes take many years to finish, they want to publish major releases with less new features each in a fixed release schedule every six months.

Java 9 and Java 10 are the first two versions scheduled with this new release model and Java 9 already got deprecated with the release of Java 10. Java 11, which was released in September 2018 is a Long Term Support (LTS) release with support until 2026. This is very similar to what many are used to from the Ubuntu release model (On a side note, they even planned to replace the version numbers with something involving the year and month of release or so, similar to what Canonical is doing with Ubuntu, but dropped that idea for some reason).

Using a non-LTS version of Java now implies a commitment to update your software that uses the JDK every 6 month. It shouldn't be as involved as migrating code from one major Java version to another in the past because, as described, the language changes are supposed to happen in a more incremental way, but it's definitely something to consider. If you don't want to make this commitment, you should stick to the LTS versions, which means to stick with Java 8 or Java 11.

For a new "greenfield" project, Java 11 is most probably the best choice by now. But it might be necessary to stick with Java 8 if the toolchain to be used does not fully support Java 11 yet.

Apparently in the future Oracle wants to release a LTS version every three years or every 6th release, so the next LTS release to be expected after Java 11 is Java 17 in September 2021.

anothernode
  • 5,100
  • 13
  • 43
  • 62
  • 5
    Except that not every IDE and other tool will support latest JDK features ... so be careful. It may be fun to be the first but it also means the first to discover all the bugs :) – Christophe Roussy May 14 '18 at 15:06
  • 1
    Java 10 will only be [supported until September](http://www.oracle.com/technetwork/java/eol-135779.html). – Jonathan May 14 '18 at 16:05
  • 2
    Okay, but switching to Java 11 should be easy then? But yeah, might be better to only use LTS releases for production. @Jonathan – anothernode May 14 '18 at 16:10
  • 1
    Hopefully! I agree though, using Java 10 is the best option, but the limited support may catch some people by surprise. – Jonathan May 14 '18 at 16:12
  • 2
    Your answer should describe what a LTS is and why Java 9 and 10 only have short term support. Recommending Java 10 is probably a bad idea if you cannot upgrade to Java 11 immediately when it is out. Java 8 should remain the recommended version for people who cannot afford to upgrade every 6 months. – Didier L May 24 '18 at 08:49
3

Oracle transitioned to timeboxed releases. This means you will get a new Java release every 3 months, and a long term release every few years.

The Long Term Releases are expected to be supported for 3 years after the next release, so I wouldn't expect a new LTS release until some time late 2019 or early 2020, as December 2020 is the end of support for JDK 8.

Edwin Buck
  • 69,361
  • 7
  • 100
  • 138
  • 3
    The next [LTS release is Java 11/18.9](http://www.oracle.com/technetwork/java/eol-135779.html), due in September. – Jonathan May 14 '18 at 16:03