Diferencia entre OpenJDK y Adoptium / AdoptOpenJDK

183

Debido a la reciente actualización de la política de hoja de ruta de soporte de Oracle Java SE (en particular, finales de $ actualizaciones gratuitas de Oracle después de marzo de 2019 en particular), he estado buscando alternativas a Oracle Java. Descubrí que OpenJDK es una alternativa de código abierto. Y he encontrado AdoptOpenJDK , ahora conocido como Adoptium, que es un binario preconstruido . Se desconcierta.

¿Cuál es la diferencia entre OpenJDK y Adoptium / AdoptOpenJDK?

Mikhail Kholodkov
fuente
Actualización: AdoptOpenJDK ha cambiado su nombre a Adoptium , como parte de su traslado a la Fundación Eclipse .
Basil Bourque

Respuestas:

272

En breve:

  • OpenJDK tiene múltiples significados y puede referirse a:
    • Implementación gratuita y de código abierto de la Plataforma Java, Edición Estándar (Java SE)
    • repositorio de código abierto : el código fuente de Java, también conocido como proyecto OpenJDK
    • binarios de OpenJDK preconstruidos mantenidos por Oracle
    • binarios de OpenJDK preconstruidos mantenidos por la comunidad de OpenJDK
  • AdoptOpenJDK : binarios de OpenJDK preconstruidos mantenidos por la comunidad ( código abierto con licencia )

Explicación:

OpenJDK precompilado (o distribución): binarios, creados a partir de http://hg.openjdk.java.net/ , proporcionados como un archivo o instalador, ofrecidos para varias plataformas, con un posible contrato de soporte.

OpenJDK, el repositorio de origen (también llamado proyecto OpenJDK ) - es un repositorio de código abierto basado en Mercurial , alojado en http://hg.openjdk.java.net . El código fuente de Java. La gran mayoría de las características de Java (desde la VM y las bibliotecas principales hasta el compilador) se basan únicamente en este repositorio de origen. Oracle tiene una bifurcación alternativa de esto.

OpenJDK, la distribución (ver la lista de proveedores a continuación), es gratis como en cerveza y un poco gratis como en voz , pero no puede llamar a Oracle si tiene problemas con ella. No hay contrato de soporte. Además, Oracle solo lanzará actualizaciones a cualquier versión de OpenJDK (la distribución) si esa versión es la versión más reciente de Java, incluidas las versiones LTS (soporte a largo plazo). El día que Oracle publique OpenJDK (la distribución) versión 12.0, incluso si hay un problema de seguridad con OpenJDK (la distribución) versión 11.0, Oracle no lanzará una actualización para 11.0. Mantenido únicamente por Oracle.

Algunos proyectos de OpenJDK, como OpenJDK 8 y OpenJDK 11 , son mantenidos por la comunidad de OpenJDK y proporcionan versiones para algunas versiones de OpenJDK para algunas plataformas. Los miembros de la comunidad han asumido la responsabilidad de publicar soluciones para las vulnerabilidades de seguridad en estas versiones de OpenJDK.

AdoptOpenJDK, la distribución es muy similar a la distribución OpenJDK de Oracle (en el sentido de que es gratuita, y es una compilación producida compilando las fuentes del repositorio de fuentes OpenJDK). AdoptOpenJDK como entidad no será parches de backport, es decir, no habrá una 'bifurcación / versión' de AdoptOpenJDK que sea materialmente diferente del flujo ascendente (a excepción de algunos parches de script de compilación para cosas como el soporte Win32). Es decir, si los miembros de la comunidad (Oracle u otros, pero no AdoptOpenJDK como entidad) respaldan las correcciones de seguridad para las actualizaciones de las versiones OpenJDK LTS, entonces AdoptOpenJDK proporcionará compilaciones para ellos. Mantenido por la comunidad OpenJDK.

OracleJDK - es otra distribución más. A partir de JDK12, no habrá una versión gratuita de OracleJDK. La oferta de distribución JDK de Oracle está destinada a soporte comercial. Paga por esto, pero luego puede confiar en Oracle para obtener soporte. A diferencia de la oferta OpenJDK de Oracle, OracleJDK viene con soporte más largo para las versiones LTS. Como desarrollador, puede obtener una licencia gratuita para uso personal / de desarrollo solo de este JDK en particular, pero eso es principalmente una pista falsa, ya que 'solo el binario' es básicamente el mismo que el binario OpenJDK. Supongo que significa que puede descargar versiones con parches de seguridad de LTS JDK de los sitios web de Oracle, siempre y cuando prometa no usarlos comercialmente.

Nota . Puede ser mejor llamar a las compilaciones OpenJDK de Oracle las "compilaciones Oracle OpenJDK".

Donald Smith, gerente de producto Java de Oracle escribe :

Idealmente, simplemente nos referiríamos a todas las compilaciones de Oracle JDK como el "Oracle JDK", ya sea bajo la licencia GPL o comercial, según su situación. Sin embargo, por razones históricas, si bien existen las pequeñas diferencias restantes, nos referiremos a ellas por separado como compilaciones OpenJDK de Oracle y Oracle JDK.


Proveedores de OpenJDK y comparación

-------------------------------------------------- --------------------------------------
El | Proveedor | Construcciones Gratis | Binario Gratis | Extendido | Comercial | Permisivo |
El | El | de la fuente | Distribuciones | Actualizaciones | Apoyo | Licencia |
| ------------------------------------------------- ------------------------------------- |
El | AdoptOpenJDK | Sí | Sí | Sí | No | Sí |
El | Amazon - Corretto | Sí | Sí | Sí | No | Sí |
El | Azul Zulu | No | Sí | Sí | Sí | Sí |
El | BellSoft Liberica | No | Sí | Sí | Sí | Sí |
El | IBM | No | No | Sí | Sí | Sí |
El | jClarity | No | No | Sí | Sí | Sí |
El | OpenJDK | Sí | Sí | Sí | No | Sí |
El | Oracle JDK | No | Sí | No ** | Sí | No |
El | Oracle OpenJDK | Sí | Sí | No | No | Sí |
El | ojdkbuild | Sí | Sí | No | No | Sí |
El | RedHat | Sí | Sí | Sí | Sí | Sí |
El | SapMachine | Sí | Sí | Sí | Sí | Sí |
-------------------------------------------------- --------------------------------------

Compilaciones gratuitas desde la fuente : el código fuente de distribución está disponible públicamente y se puede armar su propia compilación

Distribuciones binarias gratuitas : los binarios de distribución están disponibles públicamente para su descarga y uso

Actualizaciones extendidas - también conocido como LTS (soporte a largo plazo) - Actualizaciones públicas más allá del ciclo de vida de lanzamiento de 6 meses

Soporte comercial : algunos proveedores ofrecen actualizaciones ampliadas y soporte al cliente para clientes que pagan, por ejemplo, Oracle JDK ( detalles del soporte )

Licencia permisiva : la licencia de distribución no es protectora, por ejemplo, Apache 2.0


¿Qué distribución de Java debo usar?

En los días de Sun / Oracle, generalmente Sun / Oracle producía las distribuciones propietarias JDK posteriores basadas en fuentes OpenJDK. Recientemente, Oracle había decidido hacer sus propias compilaciones patentadas solo con el soporte comercial adjunto. Publican gentilmente las compilaciones de OpenJDK también en su sitio https://jdk.java.net/ .

Lo que está sucediendo a partir de JDK 11 es el cambio de la mentalidad de un solo proveedor (Oracle) a la mentalidad en la que selecciona un proveedor que le brinda una distribución para el producto, en las condiciones que desee: plataformas para las que construyen, frecuencia y rapidez de los lanzamientos , cómo se estructura el soporte, etc. Si no confía en ninguno de los proveedores existentes, incluso puede crear OpenJDK usted mismo.

Cada compilación de OpenJDK se hace generalmente desde el mismo repositorio original original (OpenJDK "el proyecto"). Sin embargo, cada compilación es bastante única: $ gratis o comercial, de marca o sin marca, puro o incluido (por ejemplo, BellSoft Liberica JDK ofrece JavaFX incluido, que se eliminó de las compilaciones de Oracle a partir de JDK 11).

Si ningún entorno (p. Ej., Linux) y / o requisitos de licencia definen una distribución específica y si desea la compilación JDK más estándar , entonces probablemente la mejor opción es usar OpenJDK de Oracle o AdoptOpenJDK.


Información Adicional

Es hora de mirar más allá del JDK de Oracle por Stephen Colebourne

Java Is Still Free por la comunidad de Java Champions (publicado el 17 de septiembre de 2018)

Java sigue siendo gratuito 2.0.0 por la comunidad de Java Champions (publicado el 3 de marzo de 2019)

Aleksey Shipilev sobre JDK actualiza la entrevista de Opsian (publicada el 27 de junio de 2019)

Mikhail Kholodkov
fuente
8
Puede agregar una mención de que otros proveedores proporcionan implementaciones Java basadas en OpenJDK, como los productos Zulu y Zing de Azul Systems . Otro es el proyecto Eclipse OpenJ9 .
Basil Bourque
2
@DmitriyPopov Es permisivo - github.com/AdoptOpenJDK/openjdk-build/blob/master/LICENSE
Mikhail Kholodkov
1
@MikhailKholodkov Incorrecto sobre las licencias de Apache. Su enlace a AdoptOpenJDK usando Apache License 2.0 se aplica solo a los scripts de compilación que crearon para ayudar a producir sus binarios. Los binarios se crean a partir del código fuente obtenido del proyecto OpenJDK utilizando la licencia GPL con licencia de excepción de enlace.
Basil Bourque
2
@GarrettWilson AdoptOpenJDK solo hace 2 cosas: (a) Construye binarios e instaladores usando el código fuente provisto por OpenJDK, y (b) Ejecuta pruebas en esos binarios. AdoptOpenJDK hace no mantiene un repositorio de código fuente para implementar la plataforma Java. Entonces: OpenJDK es solo código fuente, AdoptOpenJDK es solo binarios + instaladores. Los autores de AdoptOpenJDK codifican solo para sus herramientas de construcción y conjuntos de pruebas. Además de AdoptOpenJDK, varias otras compañías también proporcionan compilaciones basadas en el código fuente proporcionado por el proyecto OpenJDK: Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP y más.
Basil Bourque
1
@GarretWilson Debo agregar que AdoptOpenJDK hace una tercera cosa: (c) Crea y mantiene herramientas para apoyar la construcción y las pruebas mencionadas en mi comentario anterior.
Basil Bourque
64

Actualización: AdoptOpenJDK ha cambiado su nombre a Adoptium , como parte de su traslado a la Fundación Eclipse .


OpenJDK ➙ código fuente
Adoptium / AdoptOpenJDK ➙ compilaciones

Diferencia entre OpenJDK y AdoptOpenJDK

El primero proporciona código fuente , el otro proporciona compilaciones de ese código fuente.

Varios proveedores de Java y OpenJDK

Adoptium de la Fundación Eclipse , anteriormente conocida como AdoptOpenJDK , es solo uno de los varios proveedores que distribuyen implementaciones de la plataforma Java. Éstos incluyen:

  • Fundación Eclipse (Adoptium / AdoptOpenJDK)
  • Azul Systems
  • Oráculo
  • Red Hat / IBM
  • BellSoft
  • SAVIA
  • Amazon AWS
  • … y más

Consulte este diagrama de flujo mío para ayudarlo a elegir un proveedor para una implementación de la plataforma Java. Haga clic / toque para ampliar.

Diagrama de flujo que lo guía para elegir un proveedor para una implementación de Java 11

Otro recurso: esta matriz de comparación de Azul Systems es útil y me parece verdadera y justa.

Aquí hay una lista de consideraciones y motivaciones a considerar al elegir un proveedor y su implementación.

Motivaciones para elegir un proveedor para Java

Algunos proveedores le ofrecen una variedad de tecnologías JIT .

Diagrama que muestra el historial de fusión de HotSpot y JRockit, y OpenJ9, ambos disponibles en AdoptOpenJDK

Para entender más sobre este ecosistema de Java, lea Java Is Still Free

Albahaca Bourque
fuente
1
Si 'OpenJDK' se refiere a la fuente, ¿cuál es la diferencia entre hub.docker.com/_/openjdk y hub.docker.com/_/adoptopenjdk ?
bcoughlan
1
@bcoughlan Debería preguntarle al editor de esos dos productos: Docker, Inc. Sus páginas web vinculadas afirman que el proyecto AdoptOpenJDK mantiene el segundo, mientras que "el Docker Community" mantiene el primero. El primero es engañoso en el uso del logotipo y el nombre, ya que puede haberle dado la impresión de que el proyecto OpenJDK lo produjo, lo que no es el caso. El primero puede incluso estar violando el ítem # 2 del aviso de marca registrada dado por OpenJDK , pero no soy un abogado.
Basil Bourque
1
@SanderVerhagen ¿Puede proporcionar un enlace a esa página de descarga en el sitio OpenJDK? No encuentro tal oferta. Sí encuentro un enlace a los binarios OpenJDK JDK de Oracle para Windows, macOS y Linux en otro sitio web: jdk.java.net . Oracle proporciona ese sitio y sus descargas binarias como cortesía a la comunidad, no por el proyecto OpenJDK. Como dice la página de inicio : compilaciones de Java Development Kit, de Oracle . Muestro este producto como la segunda burbuja en el barril azul de mi diagrama de flujo, esquina superior derecha.
Basil Bourque
1
@SanderVerhagen Su enlace conduce a un sitio web diferente , como sospechaba, fuera de OpenJDK . El sitio de jdk.java.net/14 es no parte de la página web de OpenJDK, ni es parte del proyecto OpenJDK. En otras palabras, openjdk.java.net no es jdk.java.net . Nuevamente, mire las dos burbujas en la parte superior del barril azul en mi diagrama de flujo. El producto Oracle en la esquina superior izquierda es su producto comercial. El producto de Oracle en la esquina superior derecha es su compilación sin costo con licencia GPL: su enlace conduce a este producto en particular.
Basil Bourque
1
@SanderVerhagen Sospecho que el nombre del producto te confunde. La palabra "Java" está registrada por Oracle, y solo puede usarse con su permiso. Por lo tanto, la mayoría de los vendedores no usan esa marca registrada. En cambio, la mayoría de los proveedores están utilizando el término "OpenJDK" como parte de su denominación, en lugar de "Java". Estos proveedores están haciendo sus compilaciones a partir del código fuente obtenido del proyecto OpenJDK . El proyecto OpenJDK proporciona solo código fuente , no compilaciones, no instaladores. Para una compilación / instalador, debe hacer el suyo propio u obtener uno de un proveedor. Sugiero leer Java Is Still Free .
Basil Bourque