Різниця між OpenJDK та Adoptium / AdoptOpenJDK


183

Завдяки нещодавньому оновленню політики дорожньої карти підтримки Oracle Java SE (зокрема, наприкінці оновлень безкоштовного випуску $ Oracle від Oracle після березня 2019 року) я шукав альтернативи Oracle Java. Я виявив, що OpenJDK - це альтернатива з відкритим кодом. І я знайшов AdoptOpenJDK , тепер відомий як Adoptium, який є попередньо вбудованим двійковим файлом . Це загадки.

Яка різниця між OpenJDK та Adoptium / AdoptOpenJDK?


Оновлення: AdoptOpenJDK змінила свою назву на Adoptium , в рамках переходу до фонду Eclipse .
Василь Бурк

Відповіді:


272

Коротко:

  • OpenJDK має декілька значень і може стосуватися:
    • безкоштовна та відкрита реалізація платформи Java, стандартне видання (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 (від VM та основних бібліотек до компілятора) заснована виключно на цьому джерельному сховищі. 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, дистрибутив дуже схожий на дистрибутив OpenJDK Oracle (тим, що він безкоштовний, і це збірка, що виробляється компілюванням джерел із сховища джерел OpenJDK). AdoptOpenJDK як сутність не буде підтримувати патчі, тобто не буде «fork / version» AdoptOpenJDK, який істотно відрізняється від висхідного потоку (за винятком деяких патчів сценаріїв побудови для таких речей, як підтримка Win32). Тобто, якщо члени спільноти (Oracle чи інші, але не AdoptOpenJDK як сукупність) підтримують виправлення безпеки оновлень версій OpenJDK LTS, то AdoptOpenJDK надасть збірки для них. Підтримується спільнотою OpenJDK.

OracleJDK - це ще одна дистрибуція. Починаючи з JDK12, не буде жодної безкоштовної версії OracleJDK. Пропозиція дистрибуції JDK Oracle призначена для комерційної підтримки. Ви платите за це, але потім ви можете покластися на підтримку Oracle. На відміну від OpenJDK, що пропонується Oracle, OracleJDK має більш тривалу підтримку версій LTS. Як розробник, ви можете отримати безкоштовну ліцензію на особисте / розвиткове використання лише цього конкретного JDK, але це здебільшого червона оселедець, оскільки "просто бінарний" в основному такий же, як і двійковий файл OpenJDK. Я думаю, це означає, що ви можете завантажувати захищені версії LTS JDK з веб-сайтів Oracle, якщо ви пообіцяєте не використовувати їх у комерційних цілях.

Примітка . Можливо, найкраще назвати збірки OpenJDK від Oracle "побудованими Oracle OpenJDK".

Дональд Сміт, менеджер продуктів Java в Oracle пише :

В ідеалі, ми б просто називали всі версії Oracle JDK як "Oracle JDK", відповідно до GPL або комерційної ліцензії, залежно від вашої ситуації. Однак з історичних причин, хоча невеликі залишилися відмінності існують, ми будемо називати їх окремо як OpenJDK Oracle будує і Oracle JDK.


Постачальники OpenJDK та порівняння

-------------------------------------------------- --------------------------------------
| Постачальник | Безкоштовні побудови | Безкоштовний Бінарний | Розширений | Комерційний | Вседозволений |
| | з Джерела | Поширення | Оновлення | Підтримка | Ліцензія |
| ------------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | Так | Так | Так | Ні | Так |
| Амазонка - Корретто | Так | Так | Так | Ні | Так |
| Azul Zulu | Ні | Так | Так | Так | Так |
| BellSoft Liberica | Ні | Так | Так | Так | Так |
| IBM | Ні | Ні | Так | Так | Так |
| jClarity | Ні | Ні | Так | Так | Так |
| OpenJDK | Так | Так | Так | Ні | Так |
| Oracle JDK | Ні | Так | Ні ** | Так | Ні |
| Oracle OpenJDK | Так | Так | Ні | Ні | Так |
| ojdkbuild | Так | Так | Ні | Ні | Так |
| RedHat | Так | Так | Так | Так | Так |
| SapMachine | Так | Так | Так | Так | Так |
-------------------------------------------------- --------------------------------------

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

Безкоштовні бінарні дистрибуції - бінарні файли розповсюдження доступні для завантаження та використання

Розширені оновлення - aka 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.


Додаткова інформація

Час шукати далі JDK від Oracle Стівена Коулборна

Java все ще безкоштовна спільнотою Java Champions (опубліковано 17 вересня 2018 року)

Java все ще безкоштовна 2.0.0 спільнотою чемпіонів Java (опубліковано 3 березня 2019 року)

Олексій Шипільов про оновлення інтерв'ю JDK від Opsian (опубліковано 27 червня 2019 року)


8
Ви можете додати згадку про те, що інші постачальники надають реалізацію Java на основі OpenJDK, такі як продукти Zulu та Zing від Azul Systems . Ще один проект Eclipse OpenJ9 .
Василь Бурк


1
@MikhailKholodkov Неправильно щодо ліцензування Apache. Посилання на AdoptOpenJDK з використанням ліцензії Apache 2.0 застосовується лише до сценаріїв збірки, якими вони написані, щоб допомогти виробляти свої бінарні файли. Бінарні файли будуються з вихідного коду, отриманого в рамках проекту OpenJDK, використовуючи GPL із посиланням на ліцензію на виключення.
Василь Бурк

2
@GarrettWilson AdoptOpenJDK робить лише 2 речі: (a) Створює бінарні файли та інсталятори за допомогою вихідного коду, що надається OpenJDK, та (b) Запускає тести на цих бінарних файлах. AdoptOpenJDK не підтримує сховище вихідного коду для реалізації платформи Java. Отже: OpenJDK - це лише вихідний код, AdoptOpenJDK - це лише бінарні файли + інсталятори. Автори AdoptOpenJDK кодують лише свої будівельні інструменти та тестові набори. Окрім AdoptOpenJDK, кілька інших компаній також надають збірки на основі вихідного коду, передбаченого проектом OpenJDK: Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP тощо.
Василь Бурк

1
@GarretWilson Я повинен додати, що AdoptOpenJDK робить третє: (c) Створює та підтримує інструментарій для підтримки побудови та тестування, згаданого в моєму попередньому коментарі.
Василь Бурк

63

Оновлення: AdoptOpenJDK змінила свою назву на Adoptium , в рамках переходу до фонду Eclipse .


OpenJDK ➙ вихідний код
Adoptium / AdoptOpenJDK ➙ будується

Різниця між OpenJDK та AdoptOpenJDK

Перший надає вихідний код , другий надає збірки цього вихідного коду.

Кілька постачальників Java & OpenJDK

Adoptium of Eclipse Foundation , раніше відомий як AdoptOpenJDK , є лише одним з кількох постачальників, що розповсюджують реалізацію платформи Java. До них належать:

  • Eclipse Foundation (Adoptium / AdoptOpenJDK)
  • Azul Systems
  • Oracle
  • Red Hat / IBM
  • BellSoft
  • SAP
  • Amazon AWS
  • … і більше

Дивіться цю шаблону моїх потоків, щоб допомогти вам вибрати постачальника для реалізації платформи Java. Клацніть / торкніться для збільшення.

Блок-схема, яка керує вами у виборі постачальника для реалізації Java 11

Інший ресурс: Ця матриця порівняння Azul Systems корисна і здається справжньою та справедливою для мого розуму.

Ось перелік міркувань та мотивацій, які слід враховувати при виборі постачальника та реалізації.

Мотивації у виборі постачальника для Java

Деякі виробники пропонують вам вибір технологій JIT .

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

Щоб дізнатися більше про цю екосистему Java, прочитайте Java все ще безкоштовно


1
Якщо "OpenJDK" посилається на джерело, то яка різниця між hub.docker.com/_/openjdk та hub.docker.com/_/adoptopenjdk ?
bcoughlan

1
@bcoughlan Вам потрібно буде попросити видавця цих двох продуктів: Docker, Inc. Ваші пов'язані веб-сторінки стверджують, що другий підтримується проектом AdoptOpenJDK, а перший підтримується "Докерською громадою". Перший - введення в оману використання логотипу та назви, оскільки це, можливо, створило враження, що проект OpenJDK створив його, але це не так. Перший може навіть порушувати пункт №2 повідомлення про торговельну марку, яке надає OpenJDK , але я не є адвокатом.
Василь Бурк

1
@SanderVerhagen Чи можете ви надати посилання на цю сторінку завантаження на сайті OpenJDK? Я не знаходжу такої пропозиції. Я знаходжу посилання на бінарні файли OpenDDK JDK Oracle для Windows, macOS та Linux на іншому веб-сайті: jdk.java.net . Цей сайт та його бінарні завантаження надаються Oracle як люб’язно, а не проектом OpenJDK. Як зазначено на домашній сторінці : Java Development Kit створює від Oracle . Я показую цей продукт як другий міхур у синій бочці моєї блок-схеми, у верхньому правому куті.
Василь Бурк

1
@SanderVerhagen Ваше посилання веде до іншого веб-сайту , як я підозрював, поза OpenJDK . Сайт jdk.java.net/14 не є частиною веб-сайту OpenJDK, а також не є частиною проекту OpenJDK. Іншими словами, openjdk.java.net не є jdk.java.net . Знову подивіться на два бульбашки у верхній частині синього стовбура на моїй блок-схемі. Продукт Oracle у верхньому лівому куті є їх комерційним продуктом. Продукт Oracle у верхньому правому куті - це їх ліцензія на отримання GPL без вартісних витрат - ваше посилання призводить до саме цього продукту.
Василь Бурк

1
@SanderVerhagen Я підозрюю, що вас бентежать найменування продукту. Слово "Java" є торговою маркою Oracle, і його можна використовувати лише з їх дозволу. Тому більшість продавців не використовують цю торгову марку. Натомість більшість постачальників використовують термін "OpenJDK" як частину свого іменування, а не "Java". Ці виробники виробляють свої побудови з вихідного коду, отриманого в рамках проекту OpenJDK . Проект OpenJDK надає лише вихідний код , не будує, не встановлює. Для збирання / інсталятора ви повинні зробити свій власний або отримати його від постачальника. Я пропоную прочитати Java все ще безкоштовно .
Василь Бурк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.