Le 10/11/2022 à 22:39, Thorsten Glaser a écrit :

That’s not the point. That much is true, but the point here is
that the user *CAN* use Java 11, *if* they have installed it
beforehand, i.e. that they are not _forced_ to upgrade.

If they don’t have it installed, the default-jre will be installed
anyway.

This is about not forcing, possibly multiple, unnecessary JREs.

Sorry but I'm still not sure to understand. Let's take tomcat9 as an example. Currently in bullseye/testing/sid it depends on:

    default-jre-headless | java11-runtime-headless

Let's assume this is changed in bookworm to:

    default-jre-headless | java-runtime-headless (>= 11)

Considering a tomcat9 user upgrading from bullseye to bookworm, there are two cases:

1. the default JRE was used on bullseye, default-jre-headless and openjdk-11-jre were already installed. During the upgrade, openjdk-17-jre is pulled (required by default-jre), openjdk-11-jre remains (but could be removed manually), and tomcat9 expects java-runtime-headless (>= 11) which is satisfied by both default-jre-headless and openjdk-17-jre-headless. Tomcat will run with OpenJDK 17 and all is fine.

2. an external JRE 11 was used (Oracle JDK, Azul Zulu, Amazon Corretto or a java-package generated JRE), default-jre may or may not be installed, let's say it isn't. When upgrading to Bookworm, if the external JRE doesn't provide java-runtime-headless (>= 11), then default-jre and openjdk-17-jre will be pulled. If JAVA_HOME was defined in /etc/default/tomcat9, the old JRE 11 is still used to run Tomcat, otherwise openjdk-17-jre is picked. Is this the problem you are underlining?


A side note on the external JREs:
- Oracle JDK doesn't provide any of the java<n>-runtime and java<n>-runtime-headless dependencies, it only provides jdk-<n> which is used nowhere AFAIK - Azul Zulu provides a JRE package which satisfies java<5..n>-runtime but no the -headless variant. It also provides a JDK package with java<5..n>-runtime and java<5..n>-sdk - Amazon Corretto provides only a JDK package for Debian. It satisfies java<5..n>-runtime, java<5..n>-runtime-headless and java<5..n>-sdk, but only for the LTS versions (so no java12-* for example, only 5-8, 11 and 17). - java-package generated JDKs provide java<5..n>-runtime, java<5..n>-runtime-headless and java<5..n>-sdk. java-package was last updated 6 years ago and doesn't support Java >= 9 (#876426). Since most JDK vendors now provide .deb packages (the notable exception being Eclipse Temurin) we can probably declare it obsolete and drop it from bookworm.

We can reasonably expect Azul and Amazon to adopt the new java-runtime (= n) by the time Bookworm is released. This will prevent the installation of the default JDK when the system is upgraded (but this isn't that problematic anyway).


Regarding the backports, the java-runtime (>= n) dependency will have to be changed back to java<n>-runtime, that's not a huge constraint. And I expect the openjdk security updates to introduce the java-runtime (= n) provides in stable/oldstable, so that may no be even necessary.

Emmanuel Bourg

Reply via email to