Diferencias entre Oracle JDK y OpenJDK
NOTA: Esta pregunta es de 2014. A partir de Java 11, OpenJDK y Oracle JDK están convergiendo.
¿Existen diferencias cruciales entre Oracle y OpenJDK?
Por ejemplo, ¿son iguales la recolección de basura y otros parámetros de JVM?
¿GC funciona de manera diferente entre los dos?
Actualmente, tanto OpenJDK como Oracle JDK son creados y mantenidos únicamente por Oracle.
OpenJDK y Oracle JDK son implementaciones de la misma especificación de Java que pasó el TCK (Java Technology Certification Kit).
La mayoría de los proveedores de JDK están escritos sobre OpenJDK haciendo algunos ajustes [principalmente para reemplazar piezas patentadas con licencia / reemplazar con más elementos de alto rendimiento que solo funcionan en sistemas operativos específicos] componentes sin romper la compatibilidad con TCK.
Muchos proveedores implementaron la especificación Java y aprobaron TCK. Por ejemplo, IBM J9, Azul Zulu, Azul Zing y Oracle JDK.
Casi todos los JDK existentes se derivan de OpenJDK.
Como muchos sugieren, la concesión de licencias es un cambio entre JDK.
A partir de JDK 11, el acceso al soporte de larga data de Oracle JDK/Java SE ahora requerirá una licencia comercial. Ahora debes prestar atención a qué JDK estás instalando, ya que Oracle JDK sin suscripción podría dejar de funcionar. fuente
Ref: Lista de máquinas virtuales Java
Para Java 7 , nada crucial. El proyecto OpenJDK se basa principalmente en el código fuente de HotSpot donado por Sun.
Además, OpenJDK fue seleccionado como la implementación de referencia para Java 7 y lo mantienen ingenieros de Oracle.
Hay una respuesta más detallada de 2012 sobre la diferencia entre JVM, JDK, JRE y OpenJDK , que enlaza con una publicación de blog de Oracle :
P : ¿Cuál es la diferencia entre el código fuente que se encuentra en el repositorio de OpenJDK y el código que utiliza para crear Oracle JDK?
R : Está muy cerca: nuestro proceso de compilación para las versiones de Oracle JDK se basa en OpenJDK 7 agregando solo un par de piezas, como el código de implementación, que incluye la implementación de Oracle del complemento Java y Java WebStart, así como algunos terceros de código cerrado. componentes de terceros como un rasterizador de gráficos, algunos componentes de terceros de código abierto, como Rhino, y algunos fragmentos aquí y allá, como documentación adicional o fuentes de terceros. En el futuro, nuestra intención es abrir el código fuente de todas las piezas de Oracle JDK, excepto aquellas que consideramos características comerciales como JRockit Mission Control (aún no disponible en Oracle JDK), y reemplazar los componentes de terceros sobrecargados con alternativas de código abierto para lograr una paridad más cercana. entre las bases del código.
Una diferencia clave de cara al futuro es el calendario de lanzamiento y la política de soporte.
AbiertoJDK
OpenJDK tendrá una versión de función cada 6 meses que solo será compatible hasta la próxima versión de función. Es esencialmente un flujo continuo de lanzamientos dirigidos a desarrolladores.
JDK de Oracle
Oracle JDK está dirigido más a un público empresarial que valora la estabilidad. Se basa en una de las versiones de OpenJDK, pero luego recibe soporte a largo plazo (LTS). Oracle JDK tiene lanzamientos planificados cada 3 años.
Fuente: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events