Ответ 1
Короче говоря:
- OpenJDK имеет несколько значений и может называться:
- бесплатная и открытая реализация платформы Java, Standard Edition (Java SE)
- репозиторий с открытым исходным кодом - исходный код Java, также известный как проект OpenJDK
- готовые двоичные файлы OpenJDK, поддерживаемые Oracle
- предварительно собранные двоичные файлы OpenJDK, поддерживаемые сообществом OpenJDK
- AdoptOpenJDK - готовые двоичные файлы OpenJDK, поддерживаемые сообществом (лицензия с открытым исходным кодом)
Объяснение:
Предварительно собранный OpenJDK (или дистрибутив) - двоичные файлы, созданные из http://hg.openjdk.java.net/, предоставляемые в качестве архива или установщика, предлагаемые для различных платформ, с возможным контрактом на поддержку.
OpenJDK, исходный репозиторий (также называемый OpenJDK project) - это Mercurial -based репозиторий с открытым исходным кодом, размещенный на http://hg.openjdk.java.net. Исходный код Java. Подавляющее большинство функций Java (от ВМ и базовых библиотек до компилятора) основаны исключительно на этом исходном хранилище. У Oracle есть альтернативная ветвь этого.
OpenJDK, дистрибутив (см. список провайдеров ниже) - бесплатный, как в пиве, и бесплатный, как в речи, но вы не можете позвонить в Oracle если у вас есть проблемы с этим. Контракта на поддержку нет. Кроме того, Oracle будет выпускать обновления для любой версии OpenJDK (дистрибутива), только если этот выпуск является самым последним выпуском Java, включая выпуски LTS (долгосрочная поддержка). Дневной оракул выпускает версию 12.0 OpenJDK (дистрибутив), даже если существует проблема безопасности с версией 11.0 OpenJDK (дистрибутив), 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, не будет бесплатной версии этого. Распределение Oracle JDK, предназначенное для коммерческой поддержки. Вы платите за это, но потом получаете поддержку от Oracle. В отличие от предложения Oracle OpenJDK, предложение OracleJDK поставляется с более длинной поддержкой версий LTS. Как разработчик вы можете получить бесплатную лицензию для личного использования/разработки только для этого конкретного JDK, но это в основном красная сельдь, поскольку "просто двоичный файл" в основном такой же, как двоичный файл OpenJDK. Я предполагаю, что это означает, что вы можете загружать исправленные для безопасности версии LTS JDK с веб-сайтов Oracle, если вы пообещаете не использовать их в коммерческих целях.
Запись. Возможно, лучше называть сборки OpenJDK от Oracle "сборками Oracle OpenJDK".
Дональд Смит, менеджер по продуктам Java в Oracle , пишет:
В идеале мы бы просто называли все сборки Oracle JDK "Oracle JDK, "под лицензией GPL или коммерческой лицензией в зависимости от вашего ситуация. Однако по историческим причинам различия существуют, мы будем называть их отдельно как оракулы OpenJDK строит и Oracle JDK.
Поставщики OpenJDK и их сравнение
- AdoptOpenJDK - https://adoptopenjdk.net
- Амазонка - Корретто - https://aws.amazon.com/corretto
- Азул Зулу - https://www.azul.com/downloads/zulu/
- BellSoft Liberica - https://bell-sw.com/java.html
- IBM - https://www.ibm.com/developerworks/java/jdk
- jClarity - https://www.jclarity.com/adoptopenjdk-support/
- OpenJDK Upstream - https://adoptopenjdk.net/upstream.html
- Oracle JDK - https://www.oracle.com/technetwork/java/javase/downloads
- Oracle OpenJDK - http://jdk.java.net
- ojdkbuild - https://github.com/ojdkbuild/ojdkbuild
- RedHat - https://developers.redhat.com/products/openjdk/overview
- SapMachine - https://sap.github.io/SapMachine
---------------------------------------------------------------------------------------- | 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 (сведения о поддержке)
Разрешительная лицензия - лицензия на распространение не является защитной, например, 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 г.)