8

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

1

Внимание: этот вопрос касается 2014 года. На данный момент OpenJDK и Oracle JDK становятся более схожими.

Существуют ли какие-либо принципиальные различия между Oracle JDK и OpenJDK? Например, идентичны ли параметры сборки мусора и другие параметры JVM? Работает ли сборка мусора (GC) по-разному в этих двух версиях?

4 ответ(ов)

0

Как показывает последняя информация по версиям JVM, Oracle и OpenJDK теперь имеют схожие функции сборки мусора (GC) начиная с версий 10 и выше. Ранее, до того как Oracle начала управлять OpenJDK, существовали конкретные различия, которые делали старую версию OpenJDK почти unusable во многих средах. Теперь же JVM идентичны.

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

При выполнении команды diff --brief -r openjdk oraclejdk, можно заметить, что следующие файлы отсутствуют в JDK для Linux (поэтому, если вы утверждали, что код не работал на OpenJDK, тогда как на OracleJDK работал, и использовали JavaFX, то вы были правы):

Только в jdk-10.0.1/bin: javapackager
Только в jdk-10.0.1/bin: javaws
Только в jdk-10.0.1/bin: jcontrol
Только в jdk-10.0.1/bin: jmc
Только в jdk-10.0.1/bin: jweblauncher
...
Только в openjdk-10.0.1: man

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

0

В блоге по следующей ссылке можно найти список небольших оставшихся косметических и упаковочных различий между Oracle JDK 11 и OpenJDK 11:

https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

Кратко о различиях:

  • Oracle JDK 11 выдает предупреждение при использовании опции -XX:+UnlockCommercialFeatures.
  • Его можно настроить на предоставление данных журнала использования инструменту "Advanced Management Console".
  • Он всегда требовал, чтобы сторонние криптографические провайдеры подписывались известным сертификатом.
  • Будет продолжать включать установщики, брендинг и упаковку JRE.
  • Команда javac --release ведет себя немного иначе для целей Java 9 и Java 10.
  • Вывод команд java --version и java -fullversion будет различать сборки Oracle JDK и OpenJDK.
0

OpenJDK

OpenJDK — это открытый исходный код, который поддерживается и разрабатывается компанией Oracle, но также позволяет участвовать в разработке сообществам и другим компаниям, таким как Red Hat, Azul Systems, IBM, Apple Inc. и другим. OpenJDK представляет собой как продукт JDK, так и спецификацию, любая компания или организация, которая хочет использовать OpenJDK для создания нового варианта, должна соблюдать эти спецификации. Разработка OpenJDK осуществляется как компанией Oracle, так и за счет вкладов сообществ. Иногда возникают проблемы с его стабильностью, однако, исходя из отзывов пользователей, будут проводиться обновления для улучшения производительности. OpenJDK регулярно обновляется примерно каждые 6 месяцев.

Oracle JDK

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

Источник: https://o7planning.org/12571/history-of-java-and-the-difference-between-oracle-jdk-and-openjdk

0

Процесс сборки для релизов Oracle JDK основан на OpenJDK 7 и включает всего несколько дополнительных компонентов, таких как код развертывания, который включает реализацию Oracle для Java Plugin и Java WebStart, а также несколько закрытых сторонних компонентов, например, растеризатор графики. Кроме того, мы используем некоторые открытые сторонние компоненты, такие как Rhino, и добавляем различные элементы, такие как дополнительная документация и шрифты от третьих сторон. В будущем мы планируем открыть исходный код всех компонентов Oracle JDK, за исключением тех, которые мы считаем коммерческими функциональными возможностями, таких как JRockit Mission Control (который еще недоступен в Oracle JDK), и заменить закрытые сторонние компоненты на альтернативы с открытым исходным кодом, чтобы достичь большей схожести между кодовыми базами.

Что касается параметров сборки:

  • Да, параметры сборки, такие как сборка мусора и другие параметры JVM, одинаковы.
  • Производительность сборки мусора также одинакова в обоих случаях.
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь