Diferencia entre OpenJDK y Adoptium/AdoptOpenJDK

Resuelto Mikhail Kholodkov asked hace 6 años • 2 respuestas

Debido a la reciente actualización de la política de la hoja de ruta de soporte de Oracle Java SE (final de las actualizaciones de lanzamiento 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 encontré AdoptOpenJDK , ahora conocido como Adoptium, que es un binario precompilado . Es desconcertante.

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

Mikhail Kholodkov avatar Sep 21 '18 02:09 Mikhail Kholodkov
Aceptado

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 OpenJDK prediseñados mantenidos por Oracle
    • Binarios OpenJDK prediseñados mantenidos por la comunidad OpenJDK
  • AdoptOpenJDK : binarios OpenJDK prediseñados mantenidos por la comunidad ( con licencia de código abierto )

Explicación:

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

OpenJDK, el repositorio de código fuente (también llamado proyecto OpenJDK ), es un repositorio de código abierto basado en Mercurial , alojado en https://hg.openjdk.java.net . El código fuente de Java. La gran mayoría de las funciones 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 (consulte la lista de proveedores a continuación), es gratuita como la cerveza y algo gratuita como el discurso , pero no puede llamar a Oracle si tiene problemas con ella. No existe contrato de soporte. Además, Oracle solo lanzará actualizaciones para cualquier versión de OpenJDK (la distribución) si esa versión es la más reciente de Java, incluidas las versiones LTS (soporte a largo plazo). El día que Oracle lance 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 OpenJDK, como OpenJDK 8 y OpenJDK 11 , son mantenidos por la comunidad OpenJDK y proporcionan lanzamientos para algunas versiones de OpenJDK para algunas plataformas. Los miembros de la comunidad han asumido la responsabilidad de publicar correcciones 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 al compilar las fuentes del repositorio de fuentes OpenJDK). AdoptOpenJDK como entidad no admitirá parches, es decir, no habrá una 'bifurcación/versión' de AdoptOpenJDK que sea materialmente diferente de la anterior (a excepción de algunos parches de script de compilación para cosas como compatibilidad con Win32). Es decir, si los miembros de la comunidad (Oracle u otros, pero no AdoptOpenJDK como entidad) realizan correcciones de seguridad para las actualizaciones de las versiones LTS de OpenJDK, entonces AdoptOpenJDK proporcionará compilaciones para ellas. 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 al soporte comercial. Usted paga por esto, pero luego puede confiar en el soporte de Oracle. A diferencia de la oferta OpenJDK de Oracle, OracleJDK viene con soporte más prolongado 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 lo mismo que el binario OpenJDK. Supongo que significa que puede descargar versiones de LTS JDK con parches de seguridad desde los sitios web de Oracle siempre que prometa no utilizarlas comercialmente.

Nota . Quizás sea mejor llamar a las compilaciones OpenJDK de Oracle "compilaciones Oracle OpenJDK".

Donald Smith, gerente de productos Java de Oracle, escribe :

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


Proveedores de OpenJDK y comparación

Proveedor Construcciones gratuitas
desde la fuente

Distribuciones binarias gratuitas

Actualizaciones extendidas

Soporte Comercial

Licencia permisiva
Sitio web
AdoptarOpenJDK No https://adoptopenjdk.net
Amazonas – Corretto No https://aws.amazon.com/corretto
Azul Zulú No https://www.azul.com/downloads/zulu/
BellSoft Liberica No https://bell-sw.com/java.html
IBM No No https://www.ibm.com/developerworks/java/jdk
jClaridad No No https://www.jclarity.com/adoptopenjdk-support/
AbiertoJDK No https://adoptopenjdk.net/upstream.html
JDK de Oracle No No** No https://www.oracle.com/technetwork/java/javase/downloads
Oracle OpenJDK No No https://jdk.java.net
ojdkbuild No No https://github.com/ojdkbuild/ojdkbuild
Sombrero rojo https://developers.redhat.com/products/openjdk/overview
Máquina de savia https://sap.github.io/SapMachine

Compilaciones gratuitas desde el código fuente : el código fuente de la distribución está disponible públicamente y uno puede ensamblar 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 conocidas 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 a los 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 utilizar?

En los días de Sun/Oracle, normalmente era Sun/Oracle el que producía las distribuciones JDK descendentes propietarias basadas en fuentes OpenJDK. Recientemente, Oracle había decidido hacer sus propias compilaciones propietarias sólo con el soporte comercial adjunto. Gentilmente también publican las compilaciones de OpenJDK 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 seleccionas un proveedor que te ofrece una distribución del producto, en las condiciones que desees: plataformas para las que construyen, frecuencia y rapidez de los lanzamientos. , cómo está estructurado el soporte, etc. Si no confía en ninguno de los proveedores existentes, incluso puede crear OpenJDK usted mismo.

Cada compilación de OpenJDK generalmente se realiza a partir del mismo repositorio fuente original (OpenJDK “el proyecto”). Sin embargo, cada compilación es bastante única: gratuita o comercial, con o sin marca, pura o incluida (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 (por ejemplo, Linux) y/o requisito de licencia define una distribución específica y si desea la compilación JDK más estándar , entonces probablemente la mejor opción sea 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 Java Champions (publicado el 17 de septiembre de 2018)

Java is Still Free 2.0.0 de la comunidad Java Champions (publicado el 3 de marzo de 2019)

Aleksey Shipilev sobre las actualizaciones de JDK entrevista realizada por Opsian (publicada el 27 de junio de 2019)

Mikhail Kholodkov avatar Sep 20 '2018 19:09 Mikhail Kholodkov

Actualización 2021-09

  • Para las versiones 8 a 16, Oracle requería una tarifa si su propio producto Oracle JDK se usaba en producción, pero no para usos de desarrollo, pruebas y capacitación.
  • Para Java 17, el producto Oracle JDK está disponible bajo una nueva licencia de Términos y condiciones sin cargo , que se analiza en el blog de la empresa Oracle .

En mi primera lectura, parece que esta nueva licencia hace que el uso en producción sea gratuito (junto con los usos de desarrollo, prueba y capacitación), excepto para los productos vendidos por una tarifa mientras se incluye el producto Oracle JDK. Pero no soy abogado, así que lea los términos usted mismo y consulte asesoramiento legal según sea necesario.

Tenga en cuenta que muchos otros proveedores continúan proporcionando implementaciones de las especificaciones de Java, como se muestra en el diagrama de flujo a continuación. Algunos de estos proveedores venden planes de soporte, ya sea de forma opcional o como requisito para el uso de su producto. Nunca asuma, lea siempre los requisitos detallados para cualquier distribución que obtenga.

Otra actualización de 2021: agregue Microsoft a la lista de proveedores que se muestra a continuación.


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


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.

  • OpenJDK es un proyecto de código abierto que proporciona código fuente (no compilaciones) de una implementación de la plataforma Java definida por:
    • las especificaciones de Java
    • Documentos de solicitud de especificación de Java (JSR) publicados por Oracle a través del proceso de la comunidad Java
    • Documentos de propuesta de mejora JDK (JEP) publicados por Oracle a través del proyecto OpenJDK
  • AdoptOpenJDK es una organización fundada por algunos miembros destacados de la comunidad Java cuyo objetivo es proporcionar compilaciones e instaladores binarios sin costo para los usuarios de la tecnología Java.

Varios proveedores de Java y OpenJDK

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

  • Fundación Eclipse (Adoptium/AdoptOpenJDK)
  • Sistemas Azules
  • Oráculo
  • Sombrero rojo/IBM
  • BellSoft
  • SAVIA
  • AmazonAWS
  • … y más

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

Diagrama de flujo que le guía en la elección de un proveedor para una implementación de Java 11

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

A continuación se incluye una lista de consideraciones y motivaciones a considerar al elegir un proveedor y su implementación.

Motivaciones para elegir un proveedor de Java

Algunos proveedores le ofrecen una selección de tecnologías JIT .

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

Para comprender más sobre este ecosistema de Java, lea Java sigue siendo gratuito

Basil Bourque avatar Nov 22 '2019 23:11 Basil Bourque