Коротко:
- OpenJDK имеет несколько значений и может относиться к:
- бесплатная и открытая реализация платформы Java, Standard Edition (Java SE)
- репозиторий с открытым исходным кодом - исходный код Java или проект OpenJDK
- готовые двоичные файлы OpenJDK, поддерживаемые Oracle
- готовые двоичные файлы OpenJDK, поддерживаемые сообществом OpenJDK
- AdoptOpenJDK - готовые двоичные файлы OpenJDK, поддерживаемые сообществом (с открытым исходным кодом, лицензируются )
Объяснение:
Prebuilt OpenJDK (или дистрибутив) - двоичные файлы, созданные из http://hg.openjdk.java.net/ , предоставляемые в виде архива или установщика, предлагаемые для различных платформ, с возможным контрактом на поддержку.
OpenJDK, репозиторий исходного кода (также называемый проектом OpenJDK ) - это репозиторий с открытым исходным кодом на основе Mercurial , размещенный по адресу
http://hg.openjdk.java.net . Исходный код Java. Подавляющее большинство функций Java (от ВМ и основных библиотек до компилятора) основаны исключительно на этом исходном репозитории. У Oracle есть альтернативная ветвь этого.
OpenJDK, дистрибутив (см. Список провайдеров ниже) - бесплатный, как в пиве, так и бесплатный, как в речи , но вы не можете позвонить в Oracle, если у вас есть проблемы с ним. Контракта на поддержку нет. Кроме того, Oracle будет выпускать обновления для любой версии OpenJDK (дистрибутива), только если этот выпуск является самым последним выпуском Java, включая выпуски LTS (долгосрочная поддержка). В тот день, когда Oracle выпустит OpenJDK (дистрибутив) версии 12.0, даже если существует проблема безопасности с OpenJDK (дистрибутив) версии 11.0, Oracle не выпустит обновление для 11.0. Поддерживается исключительно Oracle.
Некоторые проекты OpenJDK, такие как OpenJDK 8 и OpenJDK 11 , поддерживаются сообществом OpenJDK и предоставляют версии для некоторых версий OpenJDK для некоторых платформ. Члены сообщества взяли на себя ответственность за выпуск исправлений для уязвимостей в этих версиях OpenJDK.
AdoptOpenJDK, дистрибутив очень похож на дистрибутив Oracle OpenJDK (в том смысле, что он бесплатный, и это сборка, созданная путем компиляции исходных кодов из репозитория OpenJDK). AdoptOpenJDK как сущность не будет бэкпортировать патчи, то есть не будет AdoptOpenJDK 'fork / version', который существенно отличается от апстрима (за исключением некоторых патчей сценария сборки для таких вещей, как поддержка Win32). Это означает, что если члены сообщества (Oracle или другие, но не AdoptOpenJDK как сущность) исправляют ошибки безопасности, связанные с бэкпортом, для обновлений версий OpenJDK LTS, то AdoptOpenJDK предоставит сборки для них. Поддерживается сообществом OpenJDK.
OracleJDK - это еще один дистрибутив. Начиная с JDK12 не будет бесплатной версии OracleJDK. Предложение Oracle по распространению JDK предназначено для коммерческой поддержки. Вы платите за это, но затем вы получаете поддержку Oracle. В отличие от предложения Oracle OpenJDK, OracleJDK поставляется с более длинной поддержкой версий LTS. Как разработчик вы можете получить бесплатную лицензию для личного использования / разработки только для этого конкретного JDK, но это в основном красная сельдь, поскольку «просто двоичный файл» в основном совпадает с двоичным файлом OpenJDK. Я предполагаю, что это означает, что вы можете загружать исправленные для безопасности версии LTS JDK с веб-сайтов Oracle, если вы пообещаете не использовать их в коммерческих целях.
Примечание . Лучше всего называть сборки OpenJDK от Oracle «сборками Oracle OpenJDK».
Дональд Смит, менеджер по продуктам Java в Oracle, пишет :
В идеале, мы бы просто называли все сборки Oracle JDK «Oracle JDK», либо по лицензии GPL, либо по коммерческой лицензии, в зависимости от вашей ситуации. Однако по историческим причинам, несмотря на то, что существуют небольшие оставшиеся различия, мы будем ссылаться на них отдельно как сборки Oracle OpenJDK и Oracle JDK.
Поставщики OpenJDK и сравнение
-------------------------------------------------- --------------------------------------
| Провайдер | Бесплатные сборки | Бесплатный бинарный | Расширенный | Коммерческий | Разрешительный |
| | из источника | Распределения | Обновления | Поддержка | Лицензия |
| ------------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | Да | Да | Да | Нет | Да |
| Амазонка - Корретто | Да | Да | Да | Нет | Да |
| Азул Зулу | Нет | Да | Да | Да | Да |
| BellSoft Liberica | Нет | Да | Да | Да | Да |
| IBM | Нет | Нет | Да | Да | Да |
| jClarity | Нет | Нет | Да | Да | Да |
| OpenJDK | Да | Да | Да | Нет | Да |
| Oracle JDK | Нет | Да | Нет ** | Да | Нет |
| Oracle OpenJDK | Да | Да | Нет | Нет | Да |
| ojdkbuild | Да | Да | Нет | Нет | Да |
| RedHat | Да | Да | Да | Да | Да |
| SapMachine | Да | Да | Да | Да | Да |
-------------------------------------------------- --------------------------------------
Бесплатные сборки из исходного кода - исходный код дистрибутива общедоступен, и можно собрать собственную сборку
Бесплатные бинарные дистрибутивы - бинарные дистрибутивы общедоступны для скачивания и использования
Расширенные обновления - LTS (долгосрочная поддержка) - публичные обновления после 6-месячного жизненного цикла выпуска
Коммерческая поддержка - некоторые провайдеры предлагают расширенные обновления и поддержку для платящих клиентов, например Oracle JDK ( подробности поддержки )
Permissive License - лицензия на распространение не является защитной, например, Apache 2.0
Какой дистрибутив Java я должен использовать?
В дни Sun / Oracle, как правило, Sun / Oracle производила проприетарные нисходящие дистрибутивы JDK на основе источников OpenJDK. Недавно Oracle решила делать собственные проприетарные сборки только с коммерческой поддержкой. Они любезно публикуют сборки OpenJDK также на своем сайте https://jdk.java.net/ .
Начиная с JDK 11 происходит переход от мышления одного поставщика (Oracle) к мышлению, при котором вы выбираете провайдера, который дает вам дистрибутив для продукта в соответствии с вашими условиями: платформы, для которых они создаются, частота и скорость выпусков как устроена поддержка и т. д. Если вы не доверяете ни одному из существующих поставщиков, вы можете даже создать OpenJDK самостоятельно.
Каждая сборка OpenJDK обычно делается из одного исходного исходного репозитория («проект» OpenJDK). Однако каждая сборка является совершенно уникальной - бесплатной или коммерческой, фирменной или не брендированной, чистой или в комплекте (например, BellSoft Liberica JDK предлагает пакетную версию JavaFX, которая была удалена из сборок Oracle, начиная с JDK 11).
Если ни одна среда (например, Linux) и / или лицензионное требование не определяют конкретный дистрибутив и если вам нужна самая стандартная сборка JDK, то, вероятно, лучшим вариантом будет использование OpenJDK от Oracle или AdoptOpenJDK.
Дополнительная информация
Время заглянуть за пределы Oracle JDK Стивен Коулборн
Java все еще бесплатна сообществом Java Champions (опубликовано 17 сентября 2018 г.)
Java всё ещё бесплатна 2.0.0 от сообщества Java Champions (опубликовано 3 марта 2019 г.)
Алексей Шипилев о интервью JDK с Опсианом (опубликовано 27 июня 2019 г.)