REMARQUE: cette question date de 2014. Depuis Java 11, OpenJDK et Oracle JDK convergent.
Existe-t-il des différences cruciales entre Oracle et OpenJDK?
Par exemple, le garbage collection et les autres paramètres JVM sont-ils les mêmes?
GC fonctionne-t-il différemment entre les deux?
java
difference
user1340582
la source
la source
Réponses:
OpenJDK et Oracle JDK sont créés et gérés actuellement par Oracle uniquement.
OpenJDK et Oracle JDK sont des implémentations de la même spécification Java passée le TCK (Java Technology Certification Kit).
La plupart des fournisseurs de JDK sont écrits au-dessus d'OpenJDK en faisant quelques ajustements pour [principalement remplacer les pièces propriétaires sous licence / remplacer par des éléments plus performants qui ne fonctionnent que sur des systèmes d'exploitation spécifiques] sans casser la compatibilité TCK.
De nombreux fournisseurs ont implémenté la spécification Java et obtenu le TCK. Par exemple, IBM J9, Azul Zulu, Azul Zing et Oracle JDK.
Presque tous les JDK existants sont dérivés d'OpenJDK.
Comme beaucoup le suggèrent, l'octroi de licences est un changement entre les JDK.
À partir de JDK 11, l'accès à la prise en charge de longue date d'Oracle JDK / Java SE nécessite désormais une licence commerciale. Vous devez maintenant faire attention au JDK que vous installez car Oracle JDK sans abonnement pourrait cesser de fonctionner. la source
Réf: Liste des machines virtuelles Java
la source
Pour Java 7 , 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 la différence entre JVM, JDK, JRE et OpenJDK , qui renvoie à un article de blog Oracle :
la source
Une différence clé à l'avenir est le calendrier de sortie et la politique de support.
OpenJDK
OpenJDK aura une version de fonctionnalité tous les 6 mois qui n'est prise en charge que jusqu'à la prochaine version de fonctionnalité. Il s'agit essentiellement d'un flux continu de versions destinées aux développeurs.
Oracle JDK
L'Oracle JDK est davantage destiné à un public d'entreprise qui valorise la stabilité. Il est basé sur l'une des versions d'OpenJDK mais bénéficie d'un support à long terme (LTS). L'Oracle JDK a des versions prévues tous les 3 ans.
Source: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events
la source
Pour Java 8 , Oracle JDK vs OpenJDK ma prise de différences clés:
OpenJDK est une implémentation open source de la plate-forme Java Standard Edition avec la contribution d'Oracle et de la communauté Java ouverte.
OpenJDK est publié sous licence GPL v2 dans laquelle Oracle JDK est autorisé sous le contrat de licence de code binaire Oracle.
En fait, le processus de construction d'Oracle JDK est construit à partir du code source d'OpenJDK. Il n'y a donc pas de différence technique majeure entre Oracle JDK et OpenJDK. Outre le code de base, Oracle JDK comprend, la mise en œuvre d'Oracle de Java Plugin et Java WebStart. Il comprend également des composants open source et open source tiers tels que rasterizer graphique et Rhino respectivement. OpenJDK Font Renderer et Oracle JDK Flight Recorder sont les principales différences notables entre Oracle JDK et OpenJDK.
Pour une liste complète des différences, veuillez consulter l'article source: Oracle JDK vs OpenJDK et Java JDK Development Process
la source
Les JVM Oracle et OpenJDK sont les mêmes et ont les mêmes fonctionnalités GC (à partir des dernières versions 10+). Avant la gestion d'Oracle de la JVM OpenJDK, il existait des différences concrètes qui rendaient cette ancienne JVM Openjdk presque inutilisable dans de nombreux environnements. Les JVM sont désormais les mêmes.
Les JDK qui incluent la JVM en tant que partie du Kit, diffèrent par les licences, le calendrier de publication et de maintenance et les bibliothèques de logiciels incluses dans le JDK. Pour moi, des différences cruciales signifient également des choses qui empêcheraient le code de s'exécuter s'il n'était pas présent. Pas seulement des licences.
Crucialement, les fichiers suivants sont manquants en plus d'un tas d'autres sur le JDK linux (Donc, si vous avez `` prétendu '' que ce code ne fonctionnait pas sur OpenJDK et le faisait sur OracleJDK pendant que vous utilisiez javafx, vous aviez raison):
la source
diff
?Selon le blog Oracle , les versions d'Oracle JDK pour Java 11 et versions ultérieures
À partir de Java 11, Oracle fournira des versions JDK sous la licence open source GNU General Public License v2, avec l'exception Classpath (GPLv2 + CPE) , et sous une licence commerciale pour ceux qui utilisent Oracle JDK dans le cadre d'un produit ou service Oracle, ou qui ne souhaitent pas utiliser de logiciel open source. Cette combinaison de l'utilisation d'une licence open source et d'une licence commerciale remplace la licence historique « BCL », qui comportait une combinaison de conditions commerciales gratuites et payantes.
Différentes versions seront fournies pour chaque licence, mais ces versions sont fonctionnellement identiques à part quelques différences cosmétiques et de conditionnement, décrites en détail ci-dessous.
De la BCL à la GPL
La licence de code binaire pour les technologies Oracle Java SE («BCL») est la licence principale des technologies Oracle Java SE depuis plus d'une décennie. La BCL permet une utilisation sans frais de licence sous certaines conditions. Pour simplifier les choses, Oracle a commencé à fournir des versions OpenJDK sous licence open source à partir de Java 9, en utilisant le même modèle de licence que la plate-forme Linux. Si vous avez l'habitude d'obtenir gratuitement des binaires Oracle Java SE, vous pouvez simplement continuer à le faire avec les versions OpenJDK d'Oracle disponibles sur jdk.java.net . Si vous avez l'habitude d'obtenir des binaires Oracle Java SE dans le cadre d'un produit ou service commercial d'Oracle, vous pouvez continuer à obtenir les versions d'Oracle JDK via My Oracle Support (MOS) et d'autres emplacements.
Fonctionnellement identiques et interchangeables ...
Le JDK sous licence BCL d'Oracle contenait historiquement des «fonctionnalités commerciales» qui n'étaient pas disponibles dans les versions OpenJDK. Comme promis , cependant, au cours de la dernière année, Oracle a apporté ces fonctionnalités à la communauté OpenJDK, notamment:
Par conséquent, à partir de Java 11, les versions Oracle JDK et OpenJDK seront essentiellement identiques.
... mais avec quelques différences cosmétiques et d'emballage
Il reste un petit nombre de différences, certaines intentionnelles et esthétiques, d'autres simplement parce que plus de temps pour discuter avec les contributeurs d'OpenJDK est justifié.
Cette différence demeure afin de fournir une expérience cohérente pour des types spécifiques d'utilisation héritée. Ces modules sont désormais disponibles séparément dans le cadre d' OpenJFX , sont maintenant à la fois dans OpenJDK et Oracle JDK car ce sont des fonctionnalités commerciales qu'Oracle a contribué à OpenJDK (par exemple, Flight Recorder), ou ont été supprimés d'Oracle JDK 11 (par exemple, JNLP) .
java 11 2018-09-25
Environnement d'exécution Java (TM) SE 18.9 (build 11 + 28)
Java HotSpot (TM) 64-Bit Server VM 18.9 (build 11 + 28, mode mixte)
Et pour une version OpenJDK 11:
version openjdk "11" 2018-09-25
Environnement d'exécution OpenJDK 18.9 (build 11 + 28)
Serveur OpenJDK 64 bits VM 18.9 (build 11 + 28, mode mixte)
la source
Une liste des quelques différences cosmétiques et de conditionnement restantes entre Oracle JDK 11 et OpenJDK 11 se trouve dans ce billet de blog:
https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
En bref:
la source
De Java 11, passez à un grand changement
Oracle changera sa licence «BCL» historique avec une combinaison d'une licence open source et commerciale
Mise à jour: 25 août 2019
pour plus de détails oracle-vs-openjdk
la source
Outre la différence de licence évidente, la principale différence entre OpenJDK et OracleJDK 11 réside dans les mises à jour de stabilité et de performances.
Source: https://www.youtube.com/watch?v=Adv9--6IcQI&t=385
Tous les 6 mois, les deux bases de code seront synchronisées. Mais pendant la fenêtre de 6 mois, OpenJDK ne recevra que des mises à jour de sécurité tandis qu'OracleJDK recevra des mises à jour supplémentaires de stabilité et de performances.
Étant donné que les versions de mise à jour ne se produisent que tous les 3 mois pour OpenJDK et OracleJDK, cela signifie que vous manquez (au plus) 3 mois de correctifs jusqu'à la sortie de la prochaine version majeure et la mise à niveau. Cependant, si vous choisissez de vous en tenir aux versions LTS, une licence commerciale commence à avoir plus de sens.
la source
Également pour Java 8, une référence de performances intéressante pour l'application REST Spring Boot réactive (non bloquante) hébergée sur diverses machines virtuelles Java par AMIS Technology Blog a été publiée en novembre 2018, montrant que, entre autres différences:
Pour plus de détails, veuillez consulter l'article source.
Bien sûr, YMMV, ce n'est là qu'une des références.
la source
Ma compréhension est qu'Oracle JDK ne peut pas être utilisé en production, donc je ne peux pas l'utiliser légalement (sans payer), pour l'application web que je crée pour mon entreprise. Je dois utiliser OpenJDK. S'il vous plait corrigez moi si je me trompe! De cet article .
MISE À JOUR: je me trompe. Je peux utiliser Oracle JDK gratuitement mais je n'aurai pas de mises à jour de sécurité après 6 mois et nous devrons assumer le risque. Regardez la section d'article liée ci-dessus "Que signifie le nouveau train de versions pour mon entreprise?".
la source