javaalpine-linuxdebian-buster

Why new Java 8 images published by OpenJDK are no longer Alpine based but Debian 10(Buster) based?


I am browsing newest images published by OpenJDK: https://hub.docker.com/layers/openjdk/library/openjdk/8u252-jre-slim-buster/images/sha256-01dfdeac537b9d9adcb2399028fba063733a77186c5264e6b059987002c0e48c?context=explore all of them switchedt

all of the new Java 8 images are using Debian based, is there any official statement that OpenJDK moved from Alpine towards Debian and why?

Why new Java 8 images published by OpenJDK are no longer Alpine based but Debian 10(Buster) based?


Solution

  • On May 2019, OpenJDK Dockerhub images have shifted to using official, certified OpenJDK binaries, rather than distro OpenJDK packages:
    https://github.com/docker-library/openjdk/pull/322

    These binaries are vanilla upstream OpenJDK builds provided by AdoptOpenJDK, tested and backed by RedHat. The binaries are glibc based, so while they are compatible with Debian, they are not Alpine Linux compatible.

    Background:

    Until May 2019, OpenJDK had both Debian and Alpine images, using the packaged OpenJDK versions and installed through the distribution package managers, apt for Debian, apk for Alpine. The Debian and Alpine packages are built and maintained by the community, and are such are not verified to the extent of commercial enterprise OpenJDK builds - for example, they are usually not JCK certified.

    Then, there has been an incident in which a Debian packaged OpenJDK 8 pre-release build has found its way into the official OpenJDK 8 docker image. The issue was initially reported in this thread:
    https://mail.openjdk.java.net/pipermail/jdk8u-dev/2019-May/009330.html

    After that, it was decided that OpenJDK images will only use official, JCK tested builds, to have one "source of truth". This decision affected both Debian and Alpine images.

    Alpine OpenJDK support:

    The OpenJDK project does not have official support for Alpine Linux, yet. Alpine Linux builds upon musl libc, which is a minimal and strict POSIX implementation, and is generally not compatible with the standard glibc. OpenJDK porting for musl libc is under development under OpenJDK's project Portola.

    Alpine Linux openjdk8 packages are provided by IcedTea. The IceaTea project provides builds for OpenJDK 6, 7 and 8, and was started back when OpenJDK was not fully open sourced yet. These builds are community made, and are not official OpenJDK builds. Moreover, the Alpine Linux OpenJDK 8 IcedTea builds are built from source by Alpine maintainers. Therefore, these builds cannot be considered as production ready, certified builds of OpenJDK.

    Moving away from Alpine images had a large impact on the Alpine Java ecosystem; many projects have moved their images away from Alpine since, which is unfortunate. You can find more details here.