Différences entre Oracle JDK et OpenJDK

y a-t-il des différences cruciales entre Oracle et OpenJDK?

par exemple, la collecte des ordures et les autres paramètres de la MVC sont-ils les mêmes?

N'GC travail de manière différente entre les deux?

484
demandé sur Peter Mortensen 2014-03-12 20:36:32

6 réponses

OpenJDK et Oracle JDK sont créés et maintenus par Oracle seulement.

OpenJDK et Oracle JDK sont des implémentations de la même spécification Java que le TCK (Java Technology Certification Kit).

la plupart des vendeurs de JDK sont écrits au-dessus de OpenJDK en faisant quelques retouches à [principalement pour remplacer les pièces propriétaires sous licence / remplacer par des éléments plus haute performance qui ne fonctionnent que sur des OS spécifiques] composants sans briser la compatibilité TCK.

de nombreux fournisseurs ont mis en œuvre la spécification Java et ont obtenu L'approbation de TCK. Par exemple, IBM J9, Azul Zulu, Azul Zing, et Oracle JDK.

presque tous les JDK existants sont dérivés de OpenJDK.

comme beaucoup l'ont suggéré, l'octroi de licences est un changement entre les JDK.

à partir de jdk 11 accéder à la prise en charge de longue durée Oracle JDK/Java SE nécessitera maintenant une licence commerciale. Vous devrait maintenant faire attention à qui JDK vous installez comme Oracle JDK sans abonnement pourrait arrêter de fonctionner. source

Réf: liste des machines virtuelles Java

164
répondu Venkateswara Rao 2018-10-11 06:06:10

rien de crucial. Le projet OpenJDK est principalement basé sur le code source HotSpot donné par Sun.

de plus, OpenJDK a été sélectionné pour être l'implémentation de référence pour Java 7 et est maintenu par les ingénieurs Oracle.

il y a une réponse plus détaillée de 2012 sur différence entre JVM, JDK , JRE & OpenJDK , qui renvoie à un billet du blog Oracle :

Q : Quelle est la différence entre le code source trouvé dans L'OpenJDK le dépôt, et le code que vous utilisez pour construire L'Oracle JDK?

A : c'est très proche - notre processus de construction pour les versions D'Oracle JDK construit sur OpenJDK 7 en ajoutant juste quelques pièces, comme le code de déploiement, ce qui inclut L'implémentation D'Oracle du Plugin Java et de Java WebStart, ainsi que certains composants tiers source fermé comme un graphics rasterizer, certains composants open source tiers, comme Rhino, et quelques morceaux ici et là, comme de nouveaux documentation ou polices tiers. Aller de l'avant, notre intention est de open source tous les morceaux de L'Oracle JDK sauf ceux que nous considérons caractéristiques commerciales telles que JRockit Mission Control (pas encore disponible) dans Oracle JDK), et remplacer les composants tiers grevés par ouvrir solutions de rechange à la source pour parvenir à une plus grande parité entre le code base.

293
répondu radai 2018-08-09 13:58:11

l'une des principales différences à l'avenir est le calendrier de publication et la Politique de soutien.

OpenJDK

OpenJDK aura une sortie de fonctionnalité tous les 6 mois qui n'est prise en charge que jusqu'à la prochaine sortie de fonctionnalité. Il s'agit essentiellement d'un flux continu de versions destinées aux développeurs.

Oracle JDK

L'Oracle JDK est plus ciblé vers un public d'entreprise qui valorise la stabilité. Il est basé sur L'une des versions D'OpenJDK mais il reçoit ensuite un soutien à long terme (LTS). L'Oracle JDK a prévu des versions tous les 3 ans.

enter image description here

Source: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events

51
répondu The Gilbert Arenas Dagger 2018-02-09 21:07:25

Oracle JDK vs. OpenJDK

  • OpenJDK est une implémentation open source de la plate-forme Java Standard Edition avec la contribution D'Oracle et de la communauté open Java.

  • OpenJDK est libéré sous licence GPL v2 où Oracle JDK est sous licence sous Oracle code binaire accord de licence.

  • en fait, le processus de construction D'Oracle JDK construit à partir Code source OpenJDK. Il n'y a donc pas de différence technique majeure entre Oracle JDK et OpenJDK. En plus du code de base, Oracle JDK inclut L'implémentation de Java Plugin et Java WebStart par Oracle. Il comprend également des composants tiers source fermé et open source comme graphics rasterizer et Rhino respectivement. OpenJDK Font Renderer et Oracle JDK Flight Recorder sont les différences majeures notables entre Oracle JDK et OpenJDK.

  • Rockit est la JVM de L'Oracle et de Java SE 7, HotSpot et JRockit fusionnent en une seule JVM. Ainsi, nous n'avons maintenant que le HotSpot fusionné JVM disponible.
  • il y a des cas où les gens prétendent qu'ils ont eu des problèmes pendant L'exécution D'OpenJDK et qui ont été résolus lorsque commuté à Oracle JDK.
  • Twitter a son propre JDK.
  • logiciels comme Android Studio, IntelliJ IDEA, et Minecraft attend D'Oracle JDK pour être utilisé. Effectivement, avertir.

Source: Oracle JDK vs OpenJDK and Java JDK Development Process

16
répondu 45hook 2018-04-10 15:18:48

les JVM Oracle et OpenJDK sont les mêmes et ont les mêmes caractéristiques GC (à partir des dernières versions 10+). Avant la gestion de la JVM OpenJDK par Oracle, il y avait des différences concrètes qui rendaient cette ancienne JVM Openjdk presque inutilisable dans de nombreux environnements. Les JVM sont maintenant les mêmes.

les JDKs qui comprennent la JVM en tant que partie du Kit, diffèrent par les licences, le calendrier de publication et de maintenance, et les bibliothèques logicielles incluses dans le JDK. Des différences cruciales pour moi aussi signifie des choses qui rendraient le code inopérant s'il n'était pas présent. Non seulement l'octroi de licences.

diff --brief -r openjdk oraclejdk

il est crucial que les fichiers suivants soient manquants en plus d'un tas d'autres fichiers sur le JDK linux (donc si vous "affirmiez" que le code N'a pas fonctionné sur OpenJDK et l'a fait sur OracleJDK pendant que vous utilisiez javafx alors vous aviez raison):

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`
7
répondu mars 2018-08-15 19:49:56

une liste des quelques différences de cosmétiques et d'emballages entre Oracle JDK 11 et OpenJDK 11 peut être trouvée dans ce billet de blog:

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

en bref:

  • Oracle JDK 11 émet un avertissement en utilisant l'option-XX:+UnlockCommercialFeatures,
  • il peut être configuré pour fournir les données du journal d'utilisation à l'outil" Advanced Management Console",
  • il a toujours exigé des tiers fournisseurs de services cryptographiques à être signé par un certificat,
  • il va continuer à inclure les installateurs, la marque et la JRE de l'emballage, de
  • alors que la commande javac --release se comporte légèrement différemment pour les cibles Java 9 et Java 10, et
  • la sortie de java -- version et java-fullversion les commandes distingueront les constructions JDK D'Oracle des constructions OpenJDK.
3
répondu Dalibor Topic 2018-09-14 11:26:47