72

While looking to compile OpenJDK from source, the newest General Availability version (OpenJDK 10.0.1) insists on OpenJDK 9 or 10. JDK 11, however, is not due to be released until September 2018.

However, to my surprise, when I do apt search openjdk the result is:

...
openjdk-11-jdk - OpenJDK Development Kit (JDK)
...
openjdk-8-jdk - OpenJDK Development Kit (JDK)
...

No OpenJDK 9 or 10!

And wait, is that OpenJDK 11? Maybe a Beta release? Nooo....

So I looked at apt show openjdk-11-jdk:

Package: openjdk-11-jdk
Version: 10.0.1+10-3ubuntu1
...

Why has OpenJDK 10 been packaged as openjdk-11-*??

2 Answers2

63

This is because those packages will become OpenJDK 11 when that is released. See this mailing list post:

On behalf of the Ubuntu Foundations Team, I am requesting an SRU exception for OpenJDK. Our plan is to release OpenJDK 10 as the default JRE/JDK 1 for Bionic, and then move the default JRE/JDK in main to OpenJDK 11 in September/October 2018 as an SRU.

= Proposed Plan =

Bionic will be released with OpenJDK 10 as the default JRE/JDK and OpenJDK 11 will replace it once it reaches GA.

...

If we are going to switch to OpenJDK 11 in bionic once released, we want to avoid OpenJDK 8 as the default JRE/JDK in Bionic at release time because any additional interface delta that exists between 8 and 11 not only exposes the archive to breakage, it also exposes external consumers of the JDK to breakage. In comparison, the interface delta between OpenJDK 10 and OpenJDK 11 is expected to be fairly small, especially in comparison with the delta between OpenJDK 8 and OpenJDK 9 that we already know is large. We should therefore release with OpenJDK 10 as the default JDK in 18.04, transitioning to OpenJDK 11 when it is released.

That's also why the source package of openjdk-11-* is actually called openjdk-lts.


A bug report has been filed - please subscribe to it (but don't comment unless you have new information to add, which is unlikely). An Ubuntu dev, Jeremy Bicha, has responded:

The intent is to upgrade openjdk-11 to 11 in Ubuntu 18.04 LTS. That's why it was named that way. It is a major change and will take some time to prepare. There is no need to ask for it to be done since it will be done.

Ubuntu 18.04 LTS was released several months before OpenJDK 11 was released so it wasn't possible to provide OpenJDK 11 before Ubuntu 18.04 LTS was released.

https://lists.ubuntu.com/archives/ubuntu-release/2018-March/004364.html

Sorry for the inconvenience.

2018-11-24: Please don't ask for an ETA. That sends out an email to everyone subscribed to this bug and does not help fix the bug.

This bug is being worked on. openjdk 11.0.1 was updated in 18.10 and there was a security update that needed to be handled quickly in 18.04 LTS. 11.0.1 will come to 18.04 LTS when it's ready but it is a major change that needs careful coordination.

2019-02-26: This bug is already being handled in bug 1814133 so I'm marking it a duplicate. Further discussion should happen on that bug instead of here.


A new bug report has been opened for tracking all changes that need to be made, and there are a lot of them - a rough count of 140. Excerpts from the bug report:

This transition is a security update of openjdk-lts from openjdk-10 to openjdk-11. This introduces runtime and FTBFS issues which requires backports of multiple packages into the security pocket as well.

The packages are being build on PPAs under the https://launchpad.net/~openjdk-11-transition team. The PPAs depend solely on the security pocket and are separated in stages.

The agreed process among foundations and the security team is that packages in the PPAs will be binary copied into bionic-proposed, checked for migration issues, and - no issues pending - copied into bionic-security.

[...]

A few packages might also need to be updated in Cosmic, but as an exception that will be done after the Bionic transition is worked out.

And another Ubuntu dev, Tiago Stürmer Daitx noted:

[We] are planning to update java apps that are affected by this transition.

To be more specific, any package that fails to run correctly with openjdk-11 will be investigated and is a candidate for a update. The update does not necessarily imply we will use the latest version: we might simply apply or backport changes that allow them to work under openjdk-11.

Still no ETA at present. Quite a few packages have been updated and added to the various PPAs maintained by the transition team, so if you wish to help out with testing, do check them out.


Update 17 April 2019:

It seems that fix has been released. Now apt show openjdk-11-jdk shows:

Package: openjdk-11-jdk
Version: 11.0.2+9-3ubuntu1~18.04.3

And the output of java -version is:

openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment (build 11.0.2+9-Ubuntu-3ubuntu118.04.3)
OpenJDK 64-Bit Server VM (build 11.0.2+9-Ubuntu-3ubuntu118.04.3, mixed mode, sharing)
Kulfy
  • 17,696
muru
  • 197,895
  • 55
  • 485
  • 740
  • 3
    It's been 2 days since Java 11 released and those packages are still providing Java 10.0.2. I wonder why there is such a huge delay? – Sina Madani Sep 27 '18 at 21:11
  • 6
    Only two days? That's a huge delay? O.o This is a package that Canonical is committing to support for years. I'm sure you can use your Canonical subscription to demand faster releases. – muru Sep 27 '18 at 21:15
  • 1
    It's just surprising given the release date was known months in advance. – Sina Madani Sep 27 '18 at 21:23
  • 5
    Knowing the release date doesn't shorten the time required for QA, though. If you're in a hurry, the PPA's been updated: https://launchpad.net/~openjdk-r/+archive/ubuntu/ppa I expect the packages to make their way to proposed shortly, and from there to updates. – muru Sep 27 '18 at 21:45
  • 10
    I believe the comment, but I can't see how them effectively misclassifying a jdk version is a right thing to do. It's confusing and I'll say it, a little dishonest. Just have the versions for us to choose from, and we can do our own update-alternatives. Thanks @muru for your answer – Daniel Hinojosa Sep 28 '18 at 01:39
  • 3
    @DanielHinojosa I agree. They should have just used the "default-jdk" package and updated that over time rather than misleading people about versions. – Sina Madani Sep 28 '18 at 11:24
  • 4
    @SinaMadani problem is, the way the repositories work right now, that leads to two options: an openjdk-10 package that has to be maintained by Canonical for 5 years, or an openjdk-10 package that becomes a transitional package for openjdk-11. The first is impractical and the second is effectively what is going on now with less hassle. – muru Sep 28 '18 at 11:38
  • 10
    @muru now it's almost a month, still not a big delay? – 9ilsdx 9rvj 0lo Oct 23 '18 at 11:51
  • 14
    @9ilsdx9rvj0lo someone has filed a bug report, keep an eye on it: https://bugs.launchpad.net/ubuntu/+source/openjdk-lts/+bug/1796027 – muru Oct 23 '18 at 18:58
  • 3
    This was a really dumb decision - here we are in February 2019, and the packages still provide Java 10. Java 11 does make significant changes, probably breaks a number of things, and they don't dare update. Please let this be a lesson: Never lie about major version numbers. – Brad Richards Feb 15 '19 at 12:28
  • 1
    The bug you reference is marked as duplicate (ok, to be specific, as invalid, because someone has problem marking it a duplicate - but still the comment clears it). Could you maybe change the link to https://bugs.launchpad.net/ubuntu/+source/openjdk-lts/+bug/1814133? – Line Feb 28 '19 at 09:32
5

See muru's answer above,

but for a work around you can install openjdk 11 manually and add it to the update-alternatives so you can switch versions, and when the official package gets updated you can switch to that. see below to see how:

$ wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz -O /tmp/openjdk-11.0.2_linux-x64_bin.tar.gz

$ sudo tar xfvz /tmp/openjdk-11.0.2_linux-x64_bin.tar.gz --directory /usr/lib/jvm

that unpacks the jdk under /usr/lib/jvm/jdk-11.0.2

then add it to the alternatives system

sudo sh -c 'for bin in /usr/lib/jvm/jdk-11.0.2/bin/*; do update-alternatives --install /usr/bin/$(basename $bin) $(basename $bin) $bin 100; done'

sudo sh -c 'for bin in /usr/lib/jvm/jdk-11.0.2/bin/*; do update-alternatives --set $(basename $bin) $bin; done'

see it in the alternatives

$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      auto mode
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1101      manual mode
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
* 3            /usr/lib/jvm/jdk-11.0.2/bin/java                 100       manual mode

Press <enter> to keep the current choice[*], or type selection number: 3

check it works

$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
Karl
  • 151
  • Answers a different question, but since you so nicely referred to muru's answer and it's useful, I'll take it. +1 ;-) Welcome to AskUbuntu! :-) – tudor -Reinstate Monica- Feb 06 '19 at 11:22
  • thanks, so should I have asked the new "how do I work around this? question then answered it? – Karl Feb 06 '19 at 20:48
  • Technically, yes. Your answer is an answer to the question "How do I install the latest (non-repository) version of Java?" whereas my question is more about distribution politics and the confusion that has ensued. In addition, you would have scored question points as well as answer points for that question and it would have been easier to search. Then linked that question to this question as "related". :-) – tudor -Reinstate Monica- Feb 06 '19 at 23:07
  • next time :-) cheers – Karl Feb 07 '19 at 03:15
  • An answer so popular, it became a devzone article: https://dzone.com/articles/installing-openjdk-11-on-ubuntu-1804-for-real No wait. The other way around – Kieveli Apr 04 '19 at 17:06
  • cool! the knowledge universe converges. – Karl Apr 05 '19 at 00:21