Вопрос-ответ

Differences between Oracle JDK and OpenJDK

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

ПРИМЕЧАНИЕ: Этот вопрос от 2014 года. Начиная с Java 11, OpenJDK и Oracle JDK сближаются.


Существуют ли какие-либо существенные различия между Oracle и OpenJDK?

Например, одинаковы ли сборка мусора и другие параметры JVM?

Работает ли GC по-разному между ними?

Переведено автоматически
Ответ 1

И OpenJDK, и Oracle JDK в настоящее время создаются и поддерживаются только Oracle.

OpenJDK и Oracle JDK являются реализациями одной и той же спецификации Java, прошедшей сертификацию TCK (Java Technology Certification Kit).

Большинство поставщиков JDK написаны поверх OpenJDK путем внесения нескольких изменений в компоненты (в основном для замены лицензионных проприетарных частей / замены более высокопроизводительными элементами, которые работают только в определенной ОС) без нарушения совместимости TCK.

Многие поставщики внедрили спецификацию Java и получили разрешение TCK. Например, IBM J9, Azul Zulu, Azul Zing и Oracle JDK.

Почти все существующие JDK являются производными от OpenJDK.

Как предполагают многие, лицензирование - это изменение между JDK.

Начиная с JDK 11, для доступа к Oracle JDK / Java SE с долгосрочной поддержкой теперь потребуется коммерческая лицензия. Теперь вам следует обратить внимание на то, какой JDK вы устанавливаете, поскольку Oracle JDK без подписки может перестать работать. Источник

Ссылка: Список виртуальных машин Java

Ответ 2

Для Java 7 ничего критичного. Проект OpenJDK в основном основан на исходном коде HotSpot, предоставленном Sun.

Более того, OpenJDK был выбран в качестве эталонной реализации для Java 7 и поддерживается инженерами Oracle.

Есть более подробный ответ от 2012 года на вопрос о различиях между JVM, JDK, JRE и OpenJDK, который ссылается на сообщение в блоге Oracle:


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


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


Ответ 3

Ключевым отличием в будущем является график выпуска и политика поддержки.

OpenJDK

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

Oracle JDK

Oracle JDK больше ориентирован на корпоративную аудиторию, которая ценит стабильность. Он основан на одном из выпусков OpenJDK, но затем получает долгосрочную поддержку (LTS). Выпуски Oracle JDK планируются каждые 3 года.

введите описание образа здесь

Источник: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events

Ответ 4

Для Java 8 Oracle JDK и OpenJDK мой взгляд на ключевые различия:


  • OpenJDK - это реализация платформы Java Standard Edition с открытым исходным кодом, созданная Oracle и сообществом Open Java.


  • OpenJDK выпущен под лицензией GPL v2, в которой Oracle JDK лицензируется в соответствии с лицензионным соглашением Oracle Binary Code.


  • На самом деле процесс сборки Oracle JDK выполняется на основе исходного кода OpenJDK. Таким образом, между Oracle JDK и OpenJDK нет существенной технической разницы. Помимо базового кода, Oracle JDK включает в себя реализацию Oracle Java Plugin и Java WebStart. Он также включает сторонние компоненты с закрытым и открытым исходным кодом, такие как graphics rasterizer и Rhino соответственно. Средство визуализации шрифтов OpenJDK и Oracle JDK Flight Recorder являются заметными основными различиями между Oracle JDK и OpenJDK.


  • Rockit была JVM Oracle, а с Java SE 7 HotSpot и JRockit объединились в единую JVM. Итак, теперь у нас доступна только объединенная JVM HotSpot.

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

  • У Twitter есть свой собственный JDK.

  • Программное обеспечение, подобное Minecraft, ожидает использования Oracle JDK. Фактически, предупреждает.

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

java