web-dev-qa-db-fra.com

Techniquement, quelle est la principale différence entre Oracle JDK et OpenJDK?

J'utilise OpenJDK depuis des années, d'abord pour de petits projets où il n'y a pas de problèmes. Mais depuis que j'ai commencé à jouer avec de gros jouets, j'ai commencé à remarquer une erreur fatale aléatoire/inconnue et des plantages (avec codecs H.264, etc.), et c’était jusque-là un cauchemar que de subir un crash système + des erreurs fatales causé par OpenJDK.

Après avoir été complètement frustré et fatigué par OpenJDK, j'ai finalement décidé de passer à Oracle JDK 7. Depuis lors, mes erreurs/crash fatals ont disparu. Je suis toujours en train de suivre pour voir si cela se produit, mais je n'ai jamais eu ces pannes système encore.

Maintenant, je me demande si OpenJDK n’est qu’un problème de licence, pourquoi la stabilité est-elle impossible?

Pourquoi OpenJDK maintient-il les bogues en vie, dans ses versions stables, mais prétend-il que son clone Oracle JDK (qu’il n’est pas vraiment), alors qu'est-ce qui sépare techniquement OpenJDK d'Oracle JDK? (uniquement la disponibilité des fonctionnalités rapides? Ou centré sur la stabilité/la fiabilité?)

115
YumYumYum

Les différences techniques sont une conséquence de l'objectif de chacun (OpenJDK est censé être l'implémentation de référence ouverte à la communauté, tandis qu'Oracle est censé être commercial)

Ils ont tous deux "presque" le même code que les classes de l'API Java; mais le code de la machine virtuelle elle-même est en réalité différent, et lorsqu'il s'agit de bibliothèques, OpenJDK a tendance à utiliser des bibliothèques ouvertes, tandis qu'Oracle a tendance à utiliser des bibliothèques fermées. par exemple, la bibliothèque de polices .

73
morgano

OpenJDK est un modèle de référence et une source ouverte, tandis que Oracle JDK est une implémentation d'OpenJDK et n'est pas une source ouverte. Oracle JDK est plus stable qu'OpenJDK.

OpenJDK est distribué sous licence GPL v2 alors qu'Oracle JDK est concédé sous licence selon les termes du contrat de licence de code binaire Oracle.

OpenJDK et Oracle JDK ont presque le même code, mais Oracle JDK a plus de classes et certains bugs sont corrigés.

Donc, si vous voulez développer un logiciel d’entreprise/commercial, je vous conseillerais d’utiliser Oracle JDK, car il est parfaitement testé et stable.

J'ai rencontré beaucoup de problèmes avec des plantages d'applications avec OpenJDK, qui sont résolus simplement en basculant vers Oracle JDK

64
User007