ПРИМЕЧАНИЕ. Этот вопрос относится к 2014 году. Начиная с Java 11 OpenJDK и Oracle JDK сходятся.
Есть ли принципиальные различия между Oracle и OpenJDK?
Например, одинаковы ли параметры сборки мусора и других параметров JVM?
GC работает по-разному между двумя?
java
difference
user1340582
источник
источник
Ответы:
И 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
источник
Для Java 7 ничего принципиального. Проект OpenJDK в основном основан на HotSpot исходном коде пожертвованном Sun.
Кроме того, OpenJDK был выбран в качестве эталонной реализации для Java 7 и поддерживается инженерами Oracle.
Более подробный ответ от 2012 года о разнице между JVM, JDK, JRE и OpenJDK , который ссылается на сообщение в блоге Oracle :
источник
Главное отличие в будущем - это график выпуска и политика поддержки.
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
источник
Для Java 8 , Oracle JDK против OpenJDK, я бы взял ключевые различия:
OpenJDK - это реализация платформы Java Standard Edition с открытым исходным кодом при участии Oracle и сообщества Java.
OpenJDK выпущен по лицензии GPL v2, в которой Oracle JDK лицензируется в соответствии с лицензионным соглашением Oracle для двоичного кода.
На самом деле процесс сборки Oracle JDK строится из исходного кода OpenJDK. Таким образом, между Oracle JDK и OpenJDK нет существенных технических различий. Помимо базового кода, Oracle JDK включает в себя реализацию Oracle Java Plugin и Java WebStart. Он также включает сторонние компоненты с закрытым и открытым исходным кодом, такие как графический растеризатор и Rhino. соответственно. OpenJDK Font Renderer и Oracle JDK Flight Recorder - заметные основные различия между Oracle JDK и OpenJDK.
Полный список различий см. В исходной статье: Процесс разработки Oracle JDK против OpenJDK и Java JDK.
источник
JVM Oracle и OpenJDK одинаковы и имеют одинаковые функции GC (в последних версиях 10+). До того, как Oracle управлял JVM OpenJDK, были конкретные различия, которые делали эту старую JVM OpenJDK практически непригодной для использования во многих средах. JVM теперь такие же.
JDK, которые включают JVM как часть комплекта, отличаются лицензированием, расписанием выпуска и обслуживания, а также библиотеками программного обеспечения, включенными в JDK. Решающие различия для меня также означают вещи, которые сделали бы код не запущенным, если бы не присутствовали. Не только лицензирование.
Важно отметить, что следующие файлы отсутствуют в дополнение к множеству других в linux JDK (поэтому, если вы «заявили», что код не работает на OpenJDK, и сделали это на OracleJDK, когда вы использовали javafx, то вы были правы):
источник
diff
?Согласно сообщению оракула, Oracle JDK Releases для Java 11 и новее
Начиная с Java 11, Oracle будет предоставлять выпуски JDK под общедоступной лицензией GNU v2 с открытым исходным кодом , с исключением Classpath (GPLv2 + CPE) и под коммерческой лицензией для тех, кто использует Oracle JDK в качестве части продукта или услуги Oracle, или кто не хочет использовать программное обеспечение с открытым исходным кодом. Эта комбинация использования лицензии с открытым исходным кодом и коммерческой лицензии заменяет исторический « BCL». лицензию », которая имела комбинацию бесплатных и платных коммерческих условий.
Для каждой лицензии будут предоставляться разные сборки, но эти сборки функционально идентичны, за исключением некоторых косметических и упаковочных отличий, подробно описанных ниже.
От BCL до GPL
Лицензия двоичного кода для Oracle Java SE технологого ( «BCL») является основной лицензия на технологию Oracle Java SE на протяжении более десяти лет. BCL разрешает использование без лицензионных сборов при определенных условиях. Чтобы упростить дальнейшую работу, Oracle начала предоставлять лицензионные сборки OpenJDK с открытым исходным кодом начиная с Java 9, используя ту же модель лицензирования, что и платформа Linux. Если вы привыкли получать двоичные файлы Oracle Java SE бесплатно, вы можете просто продолжить делать это с помощью сборок Oracle OpenJDK, доступных на jdk.java.net . Если вы привыкли получать двоичные файлы Oracle Java SE как часть коммерческого продукта или услуги от Oracle, вы можете продолжать получать версии Oracle JDK через службу поддержки Oracle. (MOS) и другие места.
Функционально идентичны и взаимозаменяемы ...
JDK, лицензированный Oracle BCL, исторически содержал «коммерческие функции», которые не были доступны в сборках OpenJDK. Однако, как и было обещано , за прошедший год Oracle предоставила эти возможности сообществу OpenJDK, в том числе:
Следовательно, начиная с Java 11, сборки Oracle JDK и сборки OpenJDK будут практически идентичны.
... но с некоторыми косметическими и упаковочными различиями
По-прежнему остается небольшое количество различий, некоторые умышленные и косметические, а некоторые просто потому, что гарантировано больше времени для обсуждения с участниками OpenJDK.
Это различие сохраняется для того, чтобы обеспечить постоянный опыт для определенных видов использования в наследство. Эти модули либо теперь доступны отдельно как часть OpenJFX , теперь и в OpenJDK, и в Oracle JDK, потому что они были коммерческими функциями, которые Oracle внесла в OpenJDK (например, Flight Recorder), или были удалены из Oracle JDK 11 (например, JNLP) ,
Ява 11 2018-09-25
Java (TM) SE Runtime Environment 18.9 (сборка 11 + 28)
Java HotSpot (TM) 64-битный сервер ВМ 18.9 (сборка 11 + 28, смешанный режим)
И для сборки OpenJDK 11:
openjdk версия "11" 2018-09-25
Среда выполнения OpenJDK 18.9 (сборка 11 + 28)
OpenJDK 64-битный сервер VM 18.9 (сборка 11 + 28, смешанный режим)
источник
Список немногих оставшихся косметических и упаковочных различий между Oracle JDK 11 и OpenJDK 11 можно найти в этом блоге:
https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
Короче говоря:
источник
От Java 11 поворот к большому изменению
Oracle изменит свою историческую лицензию «BCL» на сочетание лицензии с открытым исходным кодом и коммерческой лицензии.
Обновление: 25 августа 2019 г.
для более подробной информации oracle-vs-openjdk
источник
Помимо очевидной разницы в лицензировании, основным отличием OpenJDK от OracleJDK 11 являются обновления стабильности и производительности.
Источник: https://www.youtube.com/watch?v=Adv9--6IcQI&t=385.
Каждые 6 месяцев две кодовые базы будут синхронизированы. Но в течение 6-месячного окна OpenJDK будет получать только обновления безопасности, в то время как OracleJDK будет получать дополнительные обновления стабильности и производительности.
Учитывая, что выпуски обновлений появляются только каждые 3 месяца как для OpenJDK, так и для OracleJDK, это означает, что вы упускаете (максимум) исправления на 3 месяца, пока не выйдет следующий основной выпуск и вы не обновитесь. Однако, если вы решите придерживаться LTS-релизов, тогда коммерческая лицензия приобретает больше смысла.
источник
Кроме того, для Java 8 интересно производительность бенчмарка для реактивной (без блокировки) Spring загрузки приложений REST быть размещены на различных виртуальных машинах МАСС Technology Блог был опубликован в ноябре 2018 года , показывающие , что, среди других отличий:
Подробности смотрите в исходной статье.
Конечно, YMMV, это только один из ориентиров.
источник
Насколько я понимаю, Oracle JDK нельзя использовать в производственной среде, поэтому я не могу легально использовать его (без оплаты) для веб-приложения, которое я создаю для своей компании. Я должен использовать OpenJDK. Пожалуйста, поправьте меня, если я ошибаюсь! Из этой статьи .
ОБНОВЛЕНИЕ: я не прав. Я могу использовать Oracle JDK бесплатно, но не получу обновления безопасности после 6 месяцев, и мы должны принять на себя риск. Посмотрите на приведенный выше раздел статьи «Что означает новый выпуск релизов для моей компании?».
источник