Subject: [alpine-devel] Metapackages for Java JDK and JRE

From: Jakub Jirutka <[email-masked]>
Date: Mon, 2 May 2016 01:37:18 +0200

Hi,

I’ve opened a pull request [1] with patch [2] that introduces metapackages for Java JDK and JRE: java-jdk, java-jre, and java-jre-base (headless).

This patch will allow packages to depend on _any_ JDK or JRE, without specifying exact version (7, or 8) or implementation/vendor (OpenJDK). In this case, the latest OpenJDK is installed. If any JRE/JDK is already installed on the system, then it will satisfy the JDK/JRE requirement (thanks to the directive `provides`).

OpenJDK 7 is not publicly supported by upstream anymore (but we need it to build OpenJDK 8), so it may seem that this change is unnecessary since we have just one truly supported version. Well, for *now*; OpenJDK 9 comes in a year and nightly builds are already available.

Moreover, the sad reality is, that some ~~sh*tty~~ enterprise software still doesn’t work on JRE/JDK 8, so openjdk7 is not used just for building openjdk8 among Alpine users. Also some people want to install Oracle JDK on Alpine, for whatever absurd reason (like some “security certificates”). I’m not for adding Oracle JDK to Alpine (for many reasons), but why not to allow people using their own JDK abuild with any Alpine packages depending on any JDK/JRE? Lastly, there are also many other Java VM implementations [3]; that’s why I named it java-* and not openjdk-*.

I had already briefly discussed it with ncopa few months ago, he guided me to the direction of metapackages (already used for lua, gtk+, …) and `provides`. I hope that I understood it correctly. :)

Do you have some comments, suggestions, … on this?

Jakub J.

[1]: https://github.com/alpinelinux/aports/pull/66
[2]: https://github.com/alpinelinux/aports/pull/66.patch
[3]: https://en.wikipedia.org/wiki/List_of_Java_virtual_machines