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


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

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

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

6 484

6 ответов:

Как 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.

как предлагают многие, лицензирование-это изменение между 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, а также некоторые сторонние компоненты с закрытым исходным кодом, такие как графический растризатор, некоторые сторонние с открытым исходным кодом компоненты, как Носорог, и несколько кусочков здесь и там, как дополнительные документация или сторонние шрифты. Двигаясь вперед, наше намерение состоит в том, чтобы откройте исходный код всех частей 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 community.

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

  • на самом деле, процесс сборки Oracle JDK строится из исходного кода OpenJDK. Так что нет никакой серьезной технической разницы между Oracle JDK и OpenJDK. Помимо базового кода, Oracle JDK включает в себя реализацию Java-плагина Oracle и Java WebStart. Он также включает в себя сторонние компоненты с закрытым исходным кодом и открытым исходным кодом, такие как graphics rasterizer и носорог соответственно. Теперь рендерер шрифтов и Oracle бортового самописца комплект заметная основные отличия между 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 Процесс

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

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.