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

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

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

GC работает по-разному между этими двумя?

6 ответов


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

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

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

многие поставщики реализовали спецификацию Java и получили TCK. Например, IBM в J9, Азул Зулу, Азул вжик, и Oracle версии JDK.

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

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

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

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


ничего критичного. Проект OpenJDK в основном основан на HotSpot исходный код пожертвован Sun.

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

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

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

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


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

OpenJDK

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

Oracle JDK

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

enter image description here

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


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 включает в себя реализацию Java-плагина Oracle и Java WebStart. Он также включает сторонние компоненты с закрытым и открытым исходным кодом, такие как graphics rasterizer и носорог соответственно. OpenJDK font Renderer и Oracle JDK Flight Recorder являются заметными основными различиями между Oracle JDK и OpenJDK.

  • Rockit был JVM Oracle и из Java SE 7, HotSpot и JRockit объединились в единую СПМ. Итак, теперь у нас есть только объединенная точка доступа JVM.
  • есть случаи, когда люди утверждают, что у них были проблемы при запуске OpenJDK, и это было решено при переключении на Oracle JDK.
  • Twitter имеет свой собственный JDK.
  • программное обеспечение, такое как Android Studio, IntelliJ IDEA и Minecraft, ожидает использования Oracle JDK. На самом деле, предупреждает.

источник: Oracle JDK vs OpenJDK и разработка Java JDK Процесс


Oracle и OpenJDK JVMs одинаковы и имеют одинаковые функции GC (начиная с последних версий 10+). До Oracle управления OpenJDK JVM были конкретные различия, которые сделали этот старый Openjdk JVM почти непригодным для использования во многих средах. СПМ теперь те же самые.

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

diff --brief -r openjdk oraclejdk

принципиально следующие файлы отсутствуют в дополнение к куче других на Linux JDK (поэтому, если вы "утверждали", что код не работал на OpenJDK и делал это на OracleJDK, пока вы использовали javafx, то вы были правы):

Only in jdk-10.0.1/bin: javapackager
Only in jdk-10.0.1/bin: javaws
Only in jdk-10.0.1/bin: jcontrol
Only in jdk-10.0.1/bin: jmc
Only in jdk-10.0.1/bin: jweblauncher
Only in jdk-10.0.1/lib: ant-javafx.jar
Only in jdk-10.0.1/lib: deploy
Only in jdk-10.0.1/lib: deploy.jar
Only in jdk-10.0.1/lib: desktop
Only in jdk-10.0.1/lib: fontconfig.bfc
Only in jdk-10.0.1/lib: fontconfig.properties.src
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.bfc
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.properties.src
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.bfc
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.properties.src
Only in jdk-10.0.1/lib: fonts
Only in jdk-10.0.1/lib: javafx.properties
Only in jdk-10.0.1/lib: javafx-swt.jar
Only in jdk-10.0.1/lib: java.jnlp.jar
Only in jdk-10.0.1/lib: javaws.jar
Only in jdk-10.0.1/lib: jdk.deploy.jar
Only in jdk-10.0.1/lib: jdk.javaws.jar
Only in jdk-10.0.1/lib: jdk.plugin.jar
Only in jdk-10.0.1/lib: jfr
Only in jdk-10.0.1/lib: libavplugin-53.so
Only in jdk-10.0.1/lib: libavplugin-54.so
Only in jdk-10.0.1/lib: libavplugin-55.so
Only in jdk-10.0.1/lib: libavplugin-56.so
Only in jdk-10.0.1/lib: libavplugin-57.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-56.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-57.so
Only in jdk-10.0.1/lib: libbci.so
Only in jdk-10.0.1/lib: libcmm.so
Only in jdk-10.0.1/lib: libdecora_sse.so
Only in jdk-10.0.1/lib: libdeploy.so
Only in jdk-10.0.1/lib: libfxplugins.so
Only in jdk-10.0.1/lib: libglassgtk2.so
Only in jdk-10.0.1/lib: libglassgtk3.so
Only in jdk-10.0.1/lib: libglass.so
Only in jdk-10.0.1/lib: libgstreamer-lite.so
Only in jdk-10.0.1/lib: libjavafx_font_freetype.so
Only in jdk-10.0.1/lib: libjavafx_font_pango.so
Only in jdk-10.0.1/lib: libjavafx_font.so
Only in jdk-10.0.1/lib: libjavafx_iio.so
Only in jdk-10.0.1/lib: libjfxmedia.so
Only in jdk-10.0.1/lib: libjfxwebkit.so
Only in jdk-10.0.1/lib: libnpjp2.so
Only in jdk-10.0.1/lib: libprism_common.so
Only in jdk-10.0.1/lib: libprism_es2.so
Only in jdk-10.0.1/lib: libprism_sw.so
Only in jdk-10.0.1/lib: librm.so
Only in jdk-10.0.1/lib: libt2k.so
Only in jdk-10.0.1/lib: locale
Only in jdk-10.0.1/lib: missioncontrol
Only in jdk-10.0.1/lib: oblique-fonts
Only in jdk-10.0.1/lib: plugin.jar
Only in jdk-10.0.1/lib: plugin-legacy.jar
Only in jdk-10.0.1/lib/security: blacklist
Only in jdk-10.0.1/lib/security: public_suffix_list.dat
Only in jdk-10.0.1/lib/security: trusted.libraries
Only in openjdk-10.0.1: man`

список немногих оставшихся косметических и упаковочных различий между 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,
  • его можно установить для того чтобы снабдить данные по журнала использования " предварительная консоль управления" инструмент
  • он всегда требовал, чтобы сторонние криптографические провайдеры были подписаны известным сертификатом,
  • оно будет продолжаться включить установщиков, затаврить и упаковку JRE,
  • в то время как команда javac --release ведет себя немного иначе для целей Java 9 и Java 10 и
  • выходные данные команд java --version и java-fullversion будут отличать сборки Oracle JDK от сборок OpenJDK.