Another reason that I would really like this handled rather sooner than later: recently, I was trying to make sure artifact-manager-s3 and overall the EC2 Evergreen flavor would work correctly on JDK 11.
So my initial idea was to simply spawn an Evergreen instance the usual way, then hack into it, wget a JDK11, tweak PATH and restart the instance to force it to use JDK11. I was expected it to take a handful of minutes.
But then I remembered given the instance was based on Alpine this was going to be actually very hard. So I stopped trying because that was out of scope for the time/effort I had planned.
I think Alpine is a nice effort, but the μlibC starting from scratch is starting to show its shortcomings. The effort is not shared, and as soon as, as right now, it got an issue to support something (the JDK in our case), things simply stalled.
Now, there are many possibly flavors to choose from. Debian, Ubuntu, Centos...
TL;DR: I'm going to go for Centos for the following reason: Centos is downstream to RHEL and Fedora, who are handled by a group of people that have the Java Platform working correctly at the core of their concerns. (I could probably go for Fedora, for a similar reason as explained above, I don't feel that strongly for Centos or Fedora, BTW).
Ubuntu
Ubuntu has recently made a choice to provide a package for Java 11, but actually have Java 10 in it: https://askubuntu.com/questions/1037646/why-is-openjdk-10-packaged-as-openjdk-11
The rationale being: people would automatically this way automatically bump to Java 11 (because the package was actually name ...-lts) once it got published...
I feel like these people, though basing this choice to help others, may not understand deeply enough the requirements and differences between two different major versions of the JDK.
I think unfortunately this kind of action illustrates why we should move away from Debian based distributions. And this comes from someone who's been a Debian fanboy for years, and still very much likes it for a development machine, etc. Just that the overall platform does not look like (anymore?) the best possible default choice for running Java based software in production.
Debian
Recently, another issue arised where showing Debian would backport fixes in a potentially different way than openjdk (which can make it pretty different from other platforms): https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911925
This one surfaced in https://twitter.com/jroper/status/1062869489073573888?lang=en :
Don't use Debian's or Ubuntu's OpenJDK builds - they insist on backporting individual commits, rather than taking the latest patch versions, but have neither the expertise, nor the necessary empathy with the Java ecosystem, to do so.
This one is also known/surfaced as SUREFIRE-1588, which has been discussed extensively in many locations and took a lot of effort to get rid of in the Jenkins ecosystem and elsewhere: https://github.com/jenkinsci/pom/pull/34 https://github.com/jenkinsci/plugin-pom/pull/131 https://github.com/jenkinsci/plugin-compat-tester/pull/93 https://github.com/jenkinsci/plugin-pom/pull/135 https://issues.apache.org/jira/browse/SUREFIRE-1588?focusedCommentId=16704836&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16704836
Given Jenkins is fully written in Java, I believe platform produced by teams that have deep roots in the Java ecosystem are better choices for Jenkins.
Another reason that I would really like this handled rather sooner than later: recently, I was trying to make sure artifact-manager-s3 and overall the EC2 Evergreen flavor would work correctly on JDK 11.
So my initial idea was to simply spawn an Evergreen instance the usual way, then hack into it, wget a JDK11, tweak PATH and restart the instance to force it to use JDK11. I was expected it to take a handful of minutes.
But then I remembered given the instance was based on Alpine this was going to be actually very hard. So I stopped trying because that was out of scope for the time/effort I had planned.
I think Alpine is a nice effort, but the μlibC starting from scratch is starting to show its shortcomings. The effort is not shared, and as soon as, as right now, it got an issue to support something (the JDK in our case), things simply stalled.
Now, there are many possibly flavors to choose from. Debian, Ubuntu, Centos...
TL;DR: I'm going to go for Centos for the following reason: Centos is downstream to RHEL and Fedora, who are handled by a group of people that have the Java Platform working correctly at the core of their concerns. (I could probably go for Fedora, for a similar reason as explained above, I don't feel that strongly for Centos or Fedora, BTW).
Ubuntu
Ubuntu has recently made a choice to provide a package for Java 11, but actually have Java 10 in it: https://askubuntu.com/questions/1037646/why-is-openjdk-10-packaged-as-openjdk-11
The rationale being: people would automatically this way automatically bump to Java 11 (because the package was actually name ...-lts) once it got published...
I feel like these people, though basing this choice to help others, may not understand deeply enough the requirements and differences between two different major versions of the JDK.
I think unfortunately this kind of action illustrates why we should move away from Debian based distributions. And this comes from someone who's been a Debian fanboy for years, and still very much likes it for a development machine, etc. Just that the overall platform does not look like (anymore?) the best possible default choice for running Java based software in production.
Debian
Recently, another issue arised where showing Debian would backport fixes in a potentially different way than openjdk (which can make it pretty different from other platforms): https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911925
This one surfaced in https://twitter.com/jroper/status/1062869489073573888?lang=en :
This one is also known/surfaced as SUREFIRE-1588, which has been discussed extensively in many locations and took a lot of effort to get rid of in the Jenkins ecosystem and elsewhere: https://github.com/jenkinsci/pom/pull/34 https://github.com/jenkinsci/plugin-pom/pull/131 https://github.com/jenkinsci/plugin-compat-tester/pull/93 https://github.com/jenkinsci/plugin-pom/pull/135 https://issues.apache.org/jira/browse/SUREFIRE-1588?focusedCommentId=16704836&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16704836
Given Jenkins is fully written in Java, I believe platform produced by teams that have deep roots in the Java ecosystem are better choices for Jenkins.