Разница между OpenJDK и Adoptium / AdoptOpenJDK

В связи с недавним обновлением политики Oracle Java SE Support Roadmap (конец $ бесплатные обновления выпуска Oracle после марта 2019 г., в частности), я искал альтернативы Oracle Java. Я обнаружил, что OpenJDK - альтернатива с открытым исходным кодом. И я нашел AdoptOpenJDK, теперь известный как Adoptium, который представляет собой предварительно созданный двоичный файл. Это озадачивает.

В чем разница между OpenJDK и Adoptium / AdoptOpenJDK?


person Mikhail Kholodkov    schedule 20.09.2018    source источник
comment
Обновление: AdoptOpenJDK изменил свое название на Adoptium в рамках своего перейти в Eclipse Foundation.   -  person Basil Bourque    schedule 24.06.2020


Ответы (2)


Суммируя:

  • OpenJDK has multiple meanings and can refer to:
    • free and open source implementation of the Java Platform, Standard Edition (Java SE)
    • репозиторий с открытым исходным кодом - исходный код Java, также известный как проект OpenJDK
    • предварительно созданные двоичные файлы OpenJDK, поддерживаемые Oracle
    • предварительно созданные двоичные файлы OpenJDK, поддерживаемые сообществом OpenJDK
  • AdoptOpenJDK - предварительно созданные двоичные файлы OpenJDK, поддерживаемые сообществом (с открытым исходным кодом по лицензии)

Объяснение:

Предварительно собранный 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, которая существенно отличается от исходной (за исключением некоторых патчей сценария сборки для таких вещей, как поддержка 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 и сравнение

----------------------------------------------------------------------------------------
|     Provider      | Free Builds | Free Binary   | Extended | Commercial | Permissive |
|                   | from Source | Distributions | Updates  | Support    | License    |
|--------------------------------------------------------------------------------------|
| AdoptOpenJDK      |    Yes      |    Yes        |   Yes    |   No       |   Yes      |
| Amazon – Corretto |    Yes      |    Yes        |   Yes    |   No       |   Yes      |
| Azul Zulu         |    No       |    Yes        |   Yes    |   Yes      |   Yes      |
| BellSoft Liberica |    No       |    Yes        |   Yes    |   Yes      |   Yes      |
| IBM               |    No       |    No         |   Yes    |   Yes      |   Yes      |
| jClarity          |    No       |    No         |   Yes    |   Yes      |   Yes      |
| OpenJDK           |    Yes      |    Yes        |   Yes    |   No       |   Yes      |
| Oracle JDK        |    No       |    Yes        |   No**   |   Yes      |   No       |
| Oracle OpenJDK    |    Yes      |    Yes        |   No     |   No       |   Yes      |
| ojdkbuild         |    Yes      |    Yes        |   No     |   No       |   Yes      |
| RedHat            |    Yes      |    Yes        |   Yes    |   Yes      |   Yes      |
| SapMachine        |    Yes      |    Yes        |   Yes    |   Yes      |   Yes      |
----------------------------------------------------------------------------------------

Бесплатные сборки из исходного кода - исходный код дистрибутива общедоступен, и можно собрать собственную сборку

Бесплатные двоичные дистрибутивы - двоичные файлы дистрибутива общедоступны для загрузки и использования

Расширенные обновления - также известные как 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.


Дополнительная информация

Пора выйти за рамки JDK Oracle, Стивен Коулборн

Java все еще бесплатна сообществом Java Champions (опубликовано 17 сентября, 2018)

Java все еще бесплатна 2.0.0, автор: Сообщество Java Champions (опубликовано 3 марта 2019 г.)

Алексей Шипилев об обновлениях JDK, интервью Opsian (опубликовано в июне 27, 2019)

person Mikhail Kholodkov    schedule 20.09.2018
comment
Вы можете добавить упоминание о том, что другие поставщики предоставляют реализации Java на основе OpenJDK, такие как продукты Zulu и Zing с сайта Azul Systems. Другой - проект Eclipse OpenJ9. - person Basil Bourque; 20.09.2018
comment
В чем разница между бесплатными сборками из столбцов исходных и бесплатных двоичных файлов? - person Didier A.; 10.07.2019
comment
Что не ясно, так это то, что означает поддержка. Разве это не означает, что поставщик может применять патчи или исправления обратного порта, которые не применяются к исходному тексту OpenJDK? Таким образом, не все сборки OpenJDK сделаны из одного и того же точного источника, поскольку некоторые поставщики могут применять свои собственные исправления поверх и не вносить их обратно в исходный код? - person Didier A.; 10.07.2019
comment
На странице AdoptOpenJDK я до сих пор не совсем понимаю, какова лицензия на использование его JVM для запуска приложений Java. Это Apache 2.0 (хорошая, разрешающая лицензия) или GPLv2 + CE (строгая, доступна только для бесплатных программ)? - person Dmitriy Popov; 06.08.2019
comment
@DmitriyPopov Это разрешающий способ - github.com/AdoptOpenJDK/openjdk-build/blob. master / ЛИЦЕНЗИЯ - person Mikhail Kholodkov; 06.08.2019
comment
Еще больше сбивает с толку то, что страница загрузки OpenJDK 11 утверждает, что двоичные файлы предназначены для справки. использовать только и предоставить только оригинальную сборку 11 + 28. На странице обновлений OpenJDK 11 двоичные файлы сборки ссылаются на Выпуски AdoptOpenJDK на GitHub! Означает ли это, что OpenJDK не будет предоставлять обновления (обновления безопасности, исправления ошибок) для каждого выпуска, но что они доступны только через AdoptOpenJDK? - person Garret Wilson; 17.12.2019
comment
@MikhailKholodkov Неверно про лицензирование Apache. Ваша ссылка на AdoptOpenJDK с использованием лицензии Apache License 2.0 применима только к сценариям сборки, которые они создали для создания своих двоичных файлов. Бинарные файлы построены из исходного кода, полученного из проекта OpenJDK с использованием GPL с привязкой исключительной лицензии. - person Basil Bourque; 10.01.2020
comment
@GarrettWilson AdoptOpenJDK выполняет только 2 вещи: (а) создает двоичные файлы и установщики с использованием исходного кода, предоставляемого OpenJDK, и (б) запускает тесты для этих двоичных файлов. AdoptOpenJDK не поддерживает репозиторий исходного кода для реализации платформы Java. Итак: OpenJDK - это только исходный код, AdoptOpenJDK - это только двоичные файлы + установщики. Авторы AdoptOpenJDK кодируют только свои инструменты сборки и наборы тестов. Помимо AdoptOpenJDK, несколько других компаний также предоставляют сборки на основе исходного кода, предоставленного проектом OpenJDK: Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP и другие. - person Basil Bourque; 10.01.2020
comment
@GarretWilson Я должен добавить, что AdoptOpenJDK выполняет третье действие: (c) Создает и поддерживает инструменты для поддержки здания. & тестирование, упомянутое в моем предыдущем комментарии. - person Basil Bourque; 20.04.2020
comment
Вот и сравнительная матрица, можешь тоже добавить? azul.com/products/zulu-enterprise/jdk-comparison-matrix - person Evren Yurtesen; 22.05.2020
comment
Является ли причина столь многих сбивающих с толку и пересекающихся версий Java JDK слабостью и следствием того, что Oracle руководит языком Java? - person Andrew S; 22.06.2021
comment
Неправильно в отношении вашего комментария, что JVM доступна под лицензией Apache. Ваша ссылка ведет к temurin-build . Это программное обеспечение, написанное людьми из Adoptium для облегчения процесса сборки. Adoptium выпускает собственное программное обеспечение по лицензии Apache. Но исходный код OpenJDK находится под лицензией GPL. Следовательно, никакая JVM на основе OpenJDK не может быть лицензирована Apache. - - person Basil Bourque; 22.07.2021

Обновление: AdoptOpenJDK изменил свое название на Adoptium в рамках перейти в Eclipse Foundation.


OpenJDK ➙ исходный код
Adoptium / AdoptOpenJDK ➙ сборки

Разница между OpenJDK и AdoptOpenJDK

Первый предоставляет исходный код, другой - сборки этого исходного кода.

  • OpenJDK is an open-source project providing source-code (not builds) of an implementation of the Java platform as defined by:
  • AdoptOpenJDK - это организация, основанная некоторыми известными членами сообщества Java, целью которой является предоставление двоичных сборок и установщиков. бесплатно для пользователей технологии Java.

Несколько поставщиков Java и OpenJDK

Adoptium Eclipse Foundation, ранее известный как AdoptOpenJDK < / em>, это только один из нескольких поставщиков, распространяющих реализации платформы Java. Это включает:

  • Фонд Eclipse (Adoptium / AdoptOpenJDK)
  • Azul Systems
  • Oracle
  • Red Hat / IBM
  • BellSoft
  • SAP
  • Amazon AWS
  • … и более

Просмотрите эту мою блок-схему, которая поможет вам выбрать поставщика для реализации платформы Java. Щелкните / коснитесь для увеличения.

«Блок-схема,

Другой ресурс: Эта сравнительная матрица от Azul Systems полезна, и кажется мне верным и справедливым.

Вот список соображений и мотивов, которые следует учитывать при выборе поставщика и реализации.

«Мотивы

Некоторые поставщики предлагают вам на выбор технологии JIT.

Диаграмма, показывающая историю слияния HotSpot и JRockit, а также OpenJ9, доступных в AdoptOpenJDK

Чтобы узнать больше об этой экосистеме Java, прочтите Java по-прежнему бесплатна

person Basil Bourque    schedule 22.11.2019
comment
@iCurious Попробуй еще раз. Не сломано для меня. Изображения находятся на специальном сайте компании Stack Exchange Imgur.com. - person Basil Bourque; 24.12.2019
comment
Если «OpenJDK» относится к источнику, то в чем разница между hub.docker.com/_/openjdk и hub.docker.com/_/adoptopenjdk? - person bcoughlan; 15.01.2020
comment
@bcoughlan. Вам нужно будет спросить издателя этих двух продуктов: Docker, Inc. На ваших связанных веб-страницах указано, что второй поддерживается проектом AdoptOpenJDK, а первый поддерживается сообществом Docker. Первый вводит в заблуждение в использовании логотипа и наименования, поскольку может создать у вас впечатление, что проект OpenJDK создал его, что не так. Первый может даже нарушать пункт № 2 уведомления о товарном знаке, предоставленного OpenJDK, но я не поверенный. - person Basil Bourque; 16.01.2020
comment
Я очень ценю этот хорошо документированный ответ, но я могу перейти на веб-сайт OpenJDK и загрузить сборку OpenJDK. Их поддержка очень ограничена (ограниченные окна поддержки, ограниченные SLA поддержки), но достаточно хороша для многих пользователей. Я думаю, что AdoptOpenJDK - лучший выбор в любом случае, но этот ответ кажется неполным без подтверждения сборок OpenJDK. Для справки я рассматриваю этот документ поучительно и авторитетно по этому поводу. - person Sander Verhagen; 26.04.2020
comment
@SanderVerhagen Можете ли вы предоставить ссылку на эту страницу загрузки на сайте OpenJDK? Я не нахожу такого предложения. Я нашел ссылку на двоичные файлы Oracle OpenJDK JDK для Windows, macOS и Linux на другом веб-сайте: jdk.java.net. Этот сайт и его двоичные файлы для загрузки предоставляются сообществу Oracle, а не проектом OpenJDK. Как сказано на домашней странице: Java Development Kit строит от Oracle. Я показываю этот продукт в виде второго пузыря в синей бочке моей блок-схемы в правом верхнем углу. - person Basil Bourque; 26.04.2020
comment
Я не говорю, что двоичные файлы OpenJDK создаются не Oracle, я считаю, что они созданы (загрузите здесь). Я просто считаю, что это другой продукт, чем Oracle JDK (загрузите здесь ). (И другой продукт вполне может быть в основном одними и теми же байтами, заключенными в другую лицензию.) - person Sander Verhagen; 26.04.2020
comment
@SanderVerhagen Ваша ссылка ведет на другой веб-сайт, как я подозревал, за пределами OpenJDK. Сайт jdk.java.net/14 не является частью веб-сайта OpenJDK и не является частью проекта OpenJDK. Другими словами, openjdk.java.net не является jdk.java.net. Снова посмотрите на два пузыря в верхней части синей бочки на моей блок-схеме. Продукт Oracle в верхнем левом углу - это их коммерческий продукт. Продукт Oracle в правом верхнем углу представляет собой бесплатную сборку под лицензией GPL - ваша ссылка ведет к этому конкретному продукту. - person Basil Bourque; 26.04.2020
comment
Достаточно справедливо насчет пузырей, но вы начинаете с того, что говорите: исходный код OpenJDK ➙, я думаю, это вводит в заблуждение. - person Sander Verhagen; 26.04.2020
comment
@SanderVerhagen Я подозреваю, что вас смущает название продукта. Слово «Java» является товарным знаком Oracle и может использоваться только с их разрешения. Поэтому большинство поставщиков не используют этот товарный знак. Вместо этого большинство поставщиков используют термин «OpenJDK» как часть своего наименования, а не «Java». Эти поставщики создают свои сборки из исходного кода, полученного из проекта OpenJDK. Проект OpenJDK предоставляет только исходный код, но не сборки и не установщики. Для сборки / установщика вы должны либо сделать свою собственную, либо получить ее у поставщика. Предлагаю прочитать Java все еще бесплатна. - person Basil Bourque; 26.04.2020
comment
Вопрос касался OpenJDK, а не проекта OpenJDK. Когда вы устанавливаете OpenJDK, скажем, используя apt-get install openjdk-11-jdk, вы получаете двоичные файлы по бесплатной разрешающей лицензии. Это библиотеки OpenJDK для всех целей и задач, даже если они созданы Oracle. Java все еще бесплатна, я не только прочитал эту статью, но и дал ссылку на нее в своем первом ответе. - person Sander Verhagen; 27.04.2020
comment
@SanderVerhagen Раздел 1 (а) Уведомление о товарном знаке OpenJDK разрешает третье -частей, таких как apt-get, для использования «имени в именах пакетов и строках версий» двоичных файлов, построенных в основном из исходного кода, предоставленного проектом OpenJDK, при определенных условиях. Если под «бесплатным» вы имели в виду бесплатный, это не обязательно тот случай, когда вы видите слово openjdk в названии. Я считаю, что для любого, кто приобретает программное обеспечение, такое как реализация Java, очень важно четко понимать его происхождение, лицензирование и условия. - person Basil Bourque; 16.05.2020