3

I am getting confused by the new short release cycle paradigma of Oracle. Here is a table with support dates: enter image description here

Java 8 has a bigger support window than most of the following Jdk. Java 9 is supposed to be End of support now, same for java 10.

It becomes a non trivial task deciding on a jdk version.

Oracle introduces the therm of Long therm support release. What does this mean for the Non-LTS versions ? Are they similar to the minor releases ?

Alexander Petrov
  • 9,723
  • 24
  • 57
  • 2
    Related: See [my Answer](https://stackoverflow.com/a/54737381/642706) on another Question that includes a flow chart to help decide on a provider of a JDK implementation, as an overview of your choices. – Basil Bourque Jun 29 '19 at 02:59
  • 2
    FYI, every release of Java, whether [LTS](https://en.wikipedia.org/wiki/Long-term_support) or not, is production-ready, fully-tested. Every release (9, 10, 11, 12, 13, …) is a "major" release, there are no "minor" releases. As for the general reasoning: In the previous cadence, as many as *hundreds* of features would be completed and ready to be shipped yet were kept waiting for *years* until the next big release. Now if a feature is ready, it ships; if not ready, work continues so it can ship six months later. Read [Wikipedia](https://en.wikipedia.org/wiki/Long-term_support). – Basil Bourque Jun 29 '19 at 03:05
  • @BasilBourque yes very interesting reading. Thanks you. – Alexander Petrov Jun 29 '19 at 08:52
  • @BasilBourque I would have accepted it if the question was still open :) Its a bit strange most of the peole closing this answer dont even have points in java. – Alexander Petrov Jun 29 '19 at 08:53
  • 2
    This kind of question, and my comment above too, really is off-topic for Stack Exchange. The key to this site’s success is avoiding long-winded open-ended discussion. For discussion, visit a site such as http://www.JavaRanch.com/ – Basil Bourque Jun 29 '19 at 17:16
  • Related: [*How to get java 11 run-time environment working since there is no more jre 11 for download?*](https://stackoverflow.com/q/53111921/642706) – Basil Bourque Oct 06 '19 at 20:48

2 Answers2

5

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), functional constructs (Java 8), and modules (Java 9). Such releases took a long time, and often involved delays for various reasons.

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 fewer new features, each in a fixed release schedule every six months.

Java 10 was the first version under 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 (Source). 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.

I hope this will help.

Basil Bourque
  • 218,480
  • 72
  • 657
  • 915
Mayur Jain
  • 147
  • 5
  • 2
    "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" The new numbering scheme was dropped because the community was not happy about it, to put it mildly. – vlumi Jun 28 '19 at 13:34
  • The LTS description is misleading. It's just LTS-by-oracle, other OpenJDK builders may choose to offer LTS for other releases – the8472 Jul 28 '19 at 14:55
3

If you can upgrade to the latest JDK every six month, pick the latest version. Otherwise pick the LTS version; if the next LTS is going to be released soon (before your release date), then you might want to use the latest version and switch to the LTS before your release.

Also, Oracle JDK is now (since 11) fully based on the OpenJDK project, so any OpenJDK build from your favorite vendor might be just as good a choice for you as Oracle JDK -- or even better.

vlumi
  • 1,187
  • 1
  • 8
  • 18