Рубрики
Без рубрики

Различия между Oracle JDK и OpenJDK

Изучите различия между Oracle Java Development Kit и OpenJDK.

Автор оригинала: baeldung.

1. введение

В этой статье мы рассмотрим различия между Oracle Java Development Kit и OpenJDK . Сначала мы быстро рассмотрим каждый из них, а затем проведем сравнение. После этого мы увидим список других реализаций JDK.

Дальнейшее чтение:

Установка Java в Ubuntu

Разница между JVM, JRE и JDK

2. История Oracle JDK и Java SE

JDK (Java Development Kit) – это среда разработки программного обеспечения, используемая в программировании на платформе Java. Он содержит полную среду выполнения Java, так называемую частную среду выполнения. Название произошло из-за того, что он содержит больше инструментов, чем автономный JRE, а также другие компоненты, необходимые для разработки приложений Java.

Oracle настоятельно рекомендует использовать термин JDK для обозначения комплекта разработки Java SE (Standard Edition) (существуют также платформы Enterprise Edition и Micro Edition).

Давайте взглянем на историю Java SE:

  • Бета – версия JDK-1995
  • JDK 1.0 – январь 1996
  • JDK 1.1 – февраль 1997
  • J2SE 1.2 – декабрь 1998 года
  • J2SE 1.3 – май 2000 года
  • J2SE 1.4 – февраль 2002
  • J2SE 5.0 – сентябрь 2004
  • Java SE 6 – декабрь 2006
  • Java SE 7 – Июль 2011
  • Java SE 8 (LTS) – Март 2014
  • Java SE 9 – Сентябрь 2017
  • Java SE 10 (18.3) – Март 2018
  • Java SE 11 (18,9 LTS) – Сентябрь 2018
  • Java SE 12 (19.3) – Март 2019

Примечание: версии, выделенные курсивом, больше не поддерживаются.

Мы видим, что основные выпуски Java SE выходили примерно каждые два года до Java SE 7. Потребовалось пять лет, чтобы перейти с Java SE 6, и еще три, чтобы достичь Java SE 8 позже.

Начиная с Java SE 10, мы можем ожидать новых релизов каждые шесть месяцев. Однако не все выпуски будут выпусками с долгосрочной поддержкой (LTS). В соответствии с планом выпуска Oracle выпуск продукта LTS будет происходить только каждые три года.

Java SE 11 является последней версией LTS, а Java SE 8 будет получать бесплатные общедоступные обновления до декабря 2020 года для некоммерческого использования.

Этот набор для разработки получил свое нынешнее название после того, как Oracle купила Sun Microsystems в 2010 году. До этого его называли SUN JDK, и это была официальная реализация языка программирования Java.

3. OpenJDK

OpenJDK-это бесплатная реализация платформы Java SE с открытым исходным кодом. Первоначально он был выпущен в 2007 году в результате разработки, которую Sun Microsystems начала в 2006 году.

Конечно, мы должны подчеркнуть, что OpenJDK является официальной эталонной реализацией стандартной версии Java начиная с версии SE 7 .

Изначально он был основан только на JDK 7. Но, начиная с Java 10, за справочную реализацию платформы Java SE с открытым исходным кодом отвечает проект JDK . И, как и в случае с Oracle, проект JDK также будет выпускать новые версии функций каждые шесть месяцев.

Мы должны отметить, что до этого продолжительного проекта были проекты выпуска JDK, которые выпустили одну функцию, а затем были прекращены.

Давайте теперь проверим версии OpenJDK:

  • Проект OpenJDK 6 основан на JDK 7, но изменен для обеспечения версии Java 6 с открытым исходным кодом
  • Проект OpenJDK 7 – 28 Июля 2011 года
  • Проект OpenJDK 7u – этот проект разрабатывает обновления для Java Development Kit 7
  • Проект OpenJDK 8 – 18 марта 2014 года
  • Проект OpenJDK 8u – этот проект разрабатывает обновления для Java Development Kit 8
  • Проект OpenJDK 9 – 21 Сентября 2017
  • Выпуск проекта JDK 10-20 марта 2018 г.
  • Выпуск проекта JDK 11-25 сентября 2018 г.
  • Выпуск проекта JDK 12 – Фаза стабилизации

4. Oracle JDK против OpenJDK

В этом разделе мы сосредоточимся на ключевых различиях между Oracle JDK и OpenJDK.

4.1. График выпуска

Как мы уже упоминали, Oracle будет выпускать релизы каждые три года, в то время как OpenJDK будет выпускаться каждые шесть месяцев .

Oracle обеспечивает долгосрочную поддержку своих выпусков. С другой стороны, OpenJDK поддерживает изменения в выпуске только до тех пор, пока не будет выпущена следующая версия.

4.2. Лицензии

Oracle JDK был лицензирован в соответствии с Лицензионным соглашением Oracle с двоичным кодом , в то время как OpenJDK имеет Общую публичную лицензию GNU (GNU GPL) версии 2 с исключением ссылок .

При использовании платформы Oracle существуют некоторые последствия для лицензирования. Общедоступные обновления для Oracle Java SE 8, выпущенные после января 2019 года, не будут доступны для делового, коммерческого или производственного использования без коммерческой лицензии, как объявила Oracle |. Однако OpenJDK является полностью открытым исходным кодом и может использоваться свободно.

4.3. Производительность

Между ними нет реальной технической разницы, поскольку процесс сборки Oracle JDK основан на процессе OpenJDK .

Когда дело доходит до производительности, Oracle намного лучше с точки зрения быстродействия и производительности JVM . Она уделяет больше внимания стабильности из-за важности, которую она придает своим корпоративным клиентам.

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

4.4. Особенности

Если мы сравним функции и опции, мы увидим, что в продукте Oracle есть регистратор полетов, управление полетами Java и функции совместного использования данных класса приложений , в то время как OpenJDK имеет функцию отображения шрифтов .

Кроме того, Oracle имеет больше возможностей для сбора мусора и лучшие средства визуализации.

4.5. Развитие и популярность

Oracle JDK полностью разработан корпорацией Oracle , в то время как OpenJDK разработан Oracle, OpenJDK и сообществом Java . Однако в его разработке также принимают активное участие такие первоклассные компании, как Red Hat, Azul Systems, IBM, Apple Inc., SAP AG.

Как мы видим по ссылке из предыдущего подраздела, когда речь заходит о популярности у ведущих компаний, которые используют наборы для разработки Java в своих инструментах, таких как Android Studio или IntelliJ IDEA, раньше более предпочтительным был Oracle JDK, но оба они перешли на JetBrains на основе OpenJDK сборки .

С другой стороны, основные дистрибутивы Linux (Fedora, Ubuntu, Red Hat Enterprise Linux) предоставляют OpenJDK в качестве реализации Java SE по умолчанию.

5. Изменения, Произошедшие С Java 11

Как мы можем видеть в блоге Oracle , есть некоторые важные изменения, начиная с Java 11.

Прежде всего, Oracle изменит свою историческую лицензию “ BCL ” на комбинацию лицензии с открытым исходным кодом GNU General Public License v2, за исключением пути к классам (GPLv2+CPE) и коммерческой лицензии при использовании Oracle JDK как части продукта или услуги Oracle или когда программное обеспечение с открытым исходным кодом не приветствуется.

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

Кроме того, в OpenJDK теперь доступны традиционные “коммерческие функции”, такие как бортовой самописец, управление полетами Java и совместное использование данных классов приложений, а также сборщик мусора Z. Таким образом, Сборки Oracle JDK и OpenJDK по существу идентичны начиная с Java 11 и далее .

Давайте рассмотрим основные отличия:

  • Набор Oracle для Java 11 выдает предупреждение при использовании параметра -XX:+UnlockCommercialFeatures , в то время как в сборках OpenJDK этот параметр приводит к ошибке
  • Oracle JDK предлагает конфигурацию для предоставления данных журнала использования инструменту “Расширенная консоль управления” .
  • Oracle всегда требовала, чтобы сторонние поставщики криптографии были подписаны известным сертификатом, в то время как платформа криптографии в OpenJDK имеет открытый криптографический интерфейс, что означает, что нет никаких ограничений относительно того, какие поставщики могут быть использованы
  • Oracle JDK 11 по-прежнему будет включать установщиков, фирменный стиль и упаковку JAR, в то время как сборки OpenJDK в настоящее время доступны в виде zip и tar.gz файлы
  • Команда javac –release ведет себя по-разному для целевых объектов Java 9 и Java 10 из-за наличия некоторых дополнительных модулей в выпуске Oracle
  • Выходные данные команд java –версия и java-полная версия будут отличать сборки Oracle от сборок OpenJDK

6. Другие реализации JDK

Давайте теперь быстро взглянем на другие активные реализации Java Development Kit.

6.1. Бесплатный и открытый исходный код

Следующие реализации, перечисленные в алфавитном порядке, являются открытыми и бесплатными для использования:

  • AdoptOpenJDK
  • Amazon Правильно
  • Azul Zulu
  • Bck2Brwsr
  • CACAO
  • Кодовое имя Один
  • ДоппиоЙВМ
  • Eclipse OpenJ9
  • Graal VM CE
  • ХайкуВМ
  • горячая точка
  • Амига
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Виртуальная машина для исследований Jikes)
  • Jikes RVM (Виртуальная машина для исследований Jikes)
  • леЖОС
  • Максин
  • Движок с несколькими ОС
  • RopeVM
  • спм

6.2. Собственные Реализации

Существуют также реализации, защищенные авторским правом:

  • Azul Zing JVM
  • CEE-J
  • Эксельсиор ДЖЕТ
  • Грааль ВМ ЭЭ
  • Imsys AB
  • JamaicaVM (aicas)
  • JBlend (Приложение)
  • MicroJvm (IS2T – Промышленная интеллектуальная программная технология)
  • СПМ
  • PTC Чрескожно
  • SAP JVM
  • Waratek CloudVM для Java

Наряду с активными реализациями , перечисленными выше, мы можем увидеть список неактивных реализаций и краткое описание каждой реализации.

7. Заключение

В этой статье мы сосредоточились на двух самых популярных на сегодняшний день наборах для разработки Java.

Сначала мы описали каждый из них, а затем подчеркнули наиболее заметные различия между ними. Затем мы обратили особое внимание на изменения и различия, произошедшие с Java 11. Наконец, мы перечислили другие активные реализации, доступные сегодня.