Почему alpine
больше не используется в качестве базового образа для изображений Java 11 slim?
Это потому, что, к сожалению, в настоящее время нет официальной стабильной сборки OpenJDK 11 для Alpine.
Alpine использует musl libc, в отличие от стандартного glibc, используемого большинством Linux-систем, что означает, что JVM должна быть совместима с musl libc для поддержки vanilla Alpine. Порт musJ OpenJDK разрабатывается в рамках проекта OpenJDK Portola .
Текущий статус суммирован на странице OpenJDK 11 :
Сборка Alpine Linux, ранее доступная на этой странице, была удалена с JDK 11 GA. Он не готов к производству, потому что он не был достаточно тщательно протестирован, чтобы считаться сборкой GA. Пожалуйста, используйте раннюю сборку JDK 12 Alpine Linux вместо нее.
На данный момент единственными стабильными версиями OpenJDK для Alpine являются 7 и 8, предоставленные проектом IcedTea .
Тем не менее - если вы готовы рассмотреть иное, нежели официальный OpenJDK, Zulu Azul OpenJDK предлагает убедительную альтернативу:
- Поддерживается Java 11 на Alpine musl (версия 11.0.2 на момент написания);
- Это сертифицированная сборка OpenJDK, проверенная с использованием пакета соответствия OpenJDK TCK;
- Он бесплатен, с открытым исходным кодом и готов к докеру ( Dockerhub ).
Информация о доступности и планах поддержки приведена в Схема поддержки Azul .
Обновление, 3/6/19: Со вчерашнего дня, openjdk11
доступно в репозиториях Alpine! Это может быть захвачено на Alpine используя:
apk --no-cache add openjdk11
Пакет основан на ветке jdk11u
OpenJDK и портированных исправлениях из проекта Portola, представленных со следующим PR . Слава и огромное спасибо альпийской команде.
Почему нестабильная версия sid используется для образов LTS Java?
Это честный вопрос / запрос. На самом деле есть открытый билет для предоставления Java 11 в стабильной версии Debian:
https://github.com/docker-library/openjdk/issues/237
Обновление, 26/12/18: Проблема была решена, и теперь образ OpenJDK 11 slim основан на stretch-backports
OpenJDK 11, который недавно был доступен ( PR link ).
Почему пакет slim / headless / JRE для OpenJDK 11 такой большой по сравнению с аналогичным пакетом OpenJDK 8? Что это за файл modules , который приносит 135 МБ в OpenJDK 11?
Java 9 представила систему модулей, которая представляет собой новый и улучшенный подход для группировки пакетов и ресурсов по сравнению с файлами JAR. Эта статья от Oracle дает очень подробное введение в эту функцию:
https://www.oracle.com/corporate/features/understanding-java-9-modules.html
Файл modules
объединяет все модули, поставляемые с JRE. Полный список модулей может быть напечатан с java --list-modules
. modules
действительно очень большой файл, и, как прокомментировано, он содержит все стандартные модули, и поэтому он довольно раздутый.
Однако следует отметить, что он заменяет rt.jar
и tools.jar
, которые, помимо прочего, устарели, поэтому при учете размера modules
при сравнении с сборками до 9 OpenJDK размеры rt.jar
и tools.jar
должны быть вычтены (они должны занимать около 80 МБ вместе взятых).