Diferencias entre Oracle JDK y OpenJDK

700

NOTA: Esta pregunta es de 2014. A partir de Java 11, OpenJDK y Oracle JDK están convergiendo.

¿Hay alguna diferencia crucial 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?

usuario1340582
fuente
3
Esto también podría ser relevante si está planeando pasar de Oracle a OpenJDK, ya que Oracle ya no es gratuito. developers.redhat.com/blog/2018/11/05/…
Leo Ufimtsev

Respuestas:

338

OpenJDK y Oracle JDK son creados y mantenidos actualmente solo por Oracle.

OpenJDK y Oracle JDK son implementaciones de la misma especificación de Java aprobada por el TCK (Java Technology Certification Kit).

La mayoría de los proveedores de JDK se escriben sobre OpenJDK haciendo algunos ajustes para [principalmente reemplazar piezas patentadas con licencia / reemplazar con más elementos de alto rendimiento que solo funcionan en componentes específicos del sistema operativo] sin romper la compatibilidad 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 lo sugieren muchos, las licencias son un cambio entre los JDK.

Comenzando con JDK 11 accediendo al soporte de largo tiempo Oracle JDK / Java SE ahora requerirá una licencia comercial. Ahora debe prestar atención a qué JDK está instalando, ya que Oracle JDK sin suscripción podría dejar de funcionar. fuente

Ref: Lista de máquinas virtuales Java

Venkateswara Rao
fuente
13
Entonces, ¿estás diciendo que openjdk es la línea de base para todos los demás jdks solo que lo copian y luego lo ajustan después de sus propias especificaciones?
Karl Morrison
24
Llego tarde a la fiesta, pero lo preguntaré de todos modos. ¿Qué aporta jdk a la mesa que openjdk no? Todas estas respuestas hacen que openjdk suene como si fuera igual o superior en todos los sentidos, pero si ese es el caso, ¿por qué Oracle incluso se molesta en mantener jdk?
Kefka
@ Karl Morrison Hasta donde sé, ... todos los que implementan la especificación JVM solo lo hacen de esa manera ... pero no hay una regla explícita de que uno deba seguir ese camino ...
Venkateswara Rao
13
@ Mella OpenJDK <= OracleJDK Por ejemplo, Oracle JDK tiene pocas claves confiables configuradas, que no estaban en OpenJDK (hoy en día la gente solo las importa para llenar este vacío) Oracle JDK tiene algunas bibliotecas SWING que son propietarias para acelerar el renderizado .. (Quien esté haciendo aplicaciones de servidor, puede ser irrelevante para ellas) Oracle JDK tiene el complemento Applet (la misma razón anterior funciona) Oracle JDK bugfix / hotfix sería distribuido y manejado adecuadamente por Oracle donde OpenJDK es poco técnico para garantizar todo parches se aplican y qué conflicto tendrían
Venkateswara Rao
Tenga en cuenta que con el nuevo modelo de lanzamiento para Java, Oracle planea reducir la brecha lo más posible entre ambos jdk. ¿Hay otros contribuyentes de código abierto para abrir jdk que no sean desarrolladores de Oracle? Esto es para entender si habría suficiente soporte para respaldar una solución de la última versión a la versión anterior. ¿Alguna idea?
Andy Dufresne
329

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 para ser la implementación de referencia para Java 7 y es mantenido por los 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 usa para construir Oracle JDK?

R : Está muy cerca: nuestro proceso de compilación para Oracle JDK lanza compilaciones en OpenJDK 7 al agregar 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 fiesta 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 gravados con alternativas de código abierto para lograr una paridad más cercana entre las bases del código.

radai
fuente
42
También hay diferencias de licencia.
mcoolive
99
Gracias encontré una mejor respuesta. stackoverflow.com/questions/17360011/…
astroanu
99
En ARM, al menos esos dos parecen ser significativamente diferentes en rendimiento. Tendría que hacer un perfil de por qué está sucediendo, pero la diferencia subjetiva es "Oracle JDK está bien" y "OpenJDK es completamente inutilizable".
Dualed
1
@dualed, sin embargo, Android se está moviendo a OpenJDK a partir de Android 7. Parece que están preparando mejoras significativas. venturebeat.com/2015/12/29/…
Johnny Doe
1
@JohnnyDoe ¡Esperemos que si Google se está moviendo a OpenJDK, proporcionen parches de rendimiento de manera ascendente para que también funcione bien en ARM fuera de Android!
Dualed
95

Una diferencia clave en el futuro es el cronograma de lanzamiento y la política de soporte.

OpenJDK

OpenJDK tendrá una versión de características cada 6 meses que solo es compatible hasta la próxima versión de características. Es esencialmente un flujo continuo de lanzamientos dirigidos a desarrolladores.

Oracle JDK

Oracle JDK está más dirigido 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 planeados cada 3 años.

ingrese la descripción de la imagen aquí

Fuente: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events

La daga de Gilbert Arenas
fuente
3
Los lanzamientos a largo plazo requieren que compre soporte comercial para obtener actualizaciones después de 6 meses del lanzamiento de Java. ¿Cuál es el significado de los lanzamientos a largo plazo en comparación con los lanzamientos a corto plazo? ¿Las versiones a corto plazo como JDK 9/10 no tienen soporte comercial de Oracle?
Andy Dufresne
@AndyDufresne, ¿por qué crees que tendrás que pagar el soporte después de solo 6 meses? Tengo entendido que la línea de tiempo es TBD. Sin embargo, 6 meses parecen muy cortos ... Dudo que podamos esperar actualizaciones públicas durante 5 años, como Java 8, pero no me sorprendería si hubiera actualizaciones públicas durante 2 o 3 años. Referencia: esto es por: oracle.com/technetwork/java/eol-135779.html .
La Daga Gilbert Arenas
1
El enlace de Oracle menciona "Por ejemplo, la versión LTS para Oracle JDK 11 (18.9 LTS) será compatible durante al menos 5 años como se describe en la Política de soporte de por vida de Oracle". La política tiene 3 niveles de soporte, ninguno de ellos parece ser gratuito. También menciono esto después de mirar el comentario de azul CTO aquí: blog.takipi.com/java-11-will-include-more-than-just-features/… . El objetivo principal de esta nueva estrategia de lanzamiento es no perder tiempo en mantener versiones antiguas. Si el soporte fuera gratuito, el modelo sería el mismo que hasta ahora.
Andy Dufresne
38

Para Java 8 , Oracle JDK vs. OpenJDK mi opinión sobre las diferencias clave:

  • OpenJDK es una implementación de código abierto de la plataforma Java Standard Edition con la contribución de Oracle y la comunidad Java abierta.

  • OpenJDK se lanza bajo licencia GPL v2 en donde Oracle JDK está licenciado bajo el Acuerdo de Licencia de Código Binario de Oracle.

  • En realidad, el proceso de compilación de Oracle JDK se construye a partir del código fuente de OpenJDK. Por lo tanto, no existe una diferencia técnica importante entre Oracle JDK y OpenJDK. Además del código base, Oracle JDK incluye la implementación de Java de Java Plugin y Java WebStart. También incluye componentes de código abierto y de código abierto de terceros, como el rasterizador de gráficos y Rhino, respectivamente. OpenJDK Font Renderer y Oracle JDK Flight Recorder son las principales diferencias notables entre Oracle JDK y OpenJDK.

  • Rockit era la JVM de Oracle y de Java SE 7, HotSpot y JRockit se fusionaron en una sola JVM. Así que ahora solo tenemos disponible la JVM HotSpot fusionada.
  • Hay casos en los que las personas afirman que tuvieron problemas al ejecutar OpenJDK y que se resolvieron cuando se cambió a Oracle JDK.
  • Twitter tiene su propio JDK.
  • Software como Minecraft espera que se use Oracle JDK. De hecho, advierte.

Para obtener una lista completa de las diferencias, consulte el artículo fuente: Oracle JDK vs OpenJDK y Java JDK Development Process

45 gancho
fuente
44
Para Android Studio, esto ya no es cierto: una copia del último OpenJDK viene incluido con Android Studio 2.2 y superior, y esta es la versión JDK que recomendamos usar para sus proyectos de Android. Fuente: developer.android.com/studio/intro/studio-config#jdk
MKesper el
“Software como Minecraft espera que se use Oracle JDK. De hecho, advierte. En realidad, en Ubuntu, el instalador .deb oficial de Mojang extrae OpenJDK cuando instala el lanzador.
Moilleadóir
29

Las JVM de Oracle y OpenJDK son iguales y tienen las mismas características de GC (a partir de las últimas versiones 10+). Antes de que Oracle administrara la JVM de OpenJDK, había diferencias concretas que hacían que la antigua JVM de Openjdk fuera casi inutilizable en muchos entornos. Las JVM ahora son iguales.

Los JDK que incluyen el JVM como parte del Kit, difieren según el cronograma de licencia, lanzamiento y mantenimiento, y las bibliotecas de software incluidas en el JDK. Las diferencias cruciales para mí también significan cosas que harían que el código no se ejecute si no está presente. No solo licencias.

diff --brief -r openjdk oraclejdk

Crucialmente, faltan los siguientes archivos, además de un montón de otros en el JDK de Linux (Entonces, si 'afirmó' que el código no funcionó en OpenJDK y lo hizo en OracleJDK mientras usaba javafx, estaba en lo correcto):

Only in jdk-10.0.1/bin: javapackager
Only in jdk-10.0.1/bin: javaws
Only in jdk-10.0.1/bin: jcontrol
Only in jdk-10.0.1/bin: jmc
Only in jdk-10.0.1/bin: jweblauncher
Only in jdk-10.0.1/lib: ant-javafx.jar
Only in jdk-10.0.1/lib: deploy
Only in jdk-10.0.1/lib: deploy.jar
Only in jdk-10.0.1/lib: desktop
Only in jdk-10.0.1/lib: fontconfig.bfc
Only in jdk-10.0.1/lib: fontconfig.properties.src
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.bfc
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.properties.src
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.bfc
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.properties.src
Only in jdk-10.0.1/lib: fonts
Only in jdk-10.0.1/lib: javafx.properties
Only in jdk-10.0.1/lib: javafx-swt.jar
Only in jdk-10.0.1/lib: java.jnlp.jar
Only in jdk-10.0.1/lib: javaws.jar
Only in jdk-10.0.1/lib: jdk.deploy.jar
Only in jdk-10.0.1/lib: jdk.javaws.jar
Only in jdk-10.0.1/lib: jdk.plugin.jar
Only in jdk-10.0.1/lib: jfr
Only in jdk-10.0.1/lib: libavplugin-53.so
Only in jdk-10.0.1/lib: libavplugin-54.so
Only in jdk-10.0.1/lib: libavplugin-55.so
Only in jdk-10.0.1/lib: libavplugin-56.so
Only in jdk-10.0.1/lib: libavplugin-57.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-56.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-57.so
Only in jdk-10.0.1/lib: libbci.so
Only in jdk-10.0.1/lib: libcmm.so
Only in jdk-10.0.1/lib: libdecora_sse.so
Only in jdk-10.0.1/lib: libdeploy.so
Only in jdk-10.0.1/lib: libfxplugins.so
Only in jdk-10.0.1/lib: libglassgtk2.so
Only in jdk-10.0.1/lib: libglassgtk3.so
Only in jdk-10.0.1/lib: libglass.so
Only in jdk-10.0.1/lib: libgstreamer-lite.so
Only in jdk-10.0.1/lib: libjavafx_font_freetype.so
Only in jdk-10.0.1/lib: libjavafx_font_pango.so
Only in jdk-10.0.1/lib: libjavafx_font.so
Only in jdk-10.0.1/lib: libjavafx_iio.so
Only in jdk-10.0.1/lib: libjfxmedia.so
Only in jdk-10.0.1/lib: libjfxwebkit.so
Only in jdk-10.0.1/lib: libnpjp2.so
Only in jdk-10.0.1/lib: libprism_common.so
Only in jdk-10.0.1/lib: libprism_es2.so
Only in jdk-10.0.1/lib: libprism_sw.so
Only in jdk-10.0.1/lib: librm.so
Only in jdk-10.0.1/lib: libt2k.so
Only in jdk-10.0.1/lib: locale
Only in jdk-10.0.1/lib: missioncontrol
Only in jdk-10.0.1/lib: oblique-fonts
Only in jdk-10.0.1/lib: plugin.jar
Only in jdk-10.0.1/lib: plugin-legacy.jar
Only in jdk-10.0.1/lib/security: blacklist
Only in jdk-10.0.1/lib/security: public_suffix_list.dat
Only in jdk-10.0.1/lib/security: trusted.libraries
Only in openjdk-10.0.1: man`
Marte
fuente
55
Gracias por señalar las diferencias reales : el código que no se ejecuta es un asunto de la vida real. ¿De dónde basaste tu diff?
Matthieu
19

Según el blog de Oracle , Oracle JDK lanza para Java 11 y posterior

A partir de Java 11, Oracle proporcionará versiones JDK bajo la Licencia pública general GNU v2 de código abierto , con la excepción Classpath (GPLv2 + CPE) , y bajo una licencia comercial para aquellos que usan Oracle JDK como parte de un producto o servicio Oracle, o quienes no desean utilizar software de código abierto. Esta combinación de usar una licencia de código abierto y una licencia comercial reemplaza el histórico " BCL ", que tenía una combinación de términos comerciales gratuitos y pagos.

Se proporcionarán diferentes compilaciones para cada licencia, pero estas compilaciones son funcionalmente idénticas aparte de algunas diferencias cosméticas y de empaque, que se describen en detalle a continuación.

De la BCL a la GPL

La licencia de código binario para las tecnologías Oracle Java SE ("BCL") ha sido la licencia principal para las tecnologías Oracle Java SE durante más de una década. El BCL permite el uso sin derechos de licencia bajo ciertas condiciones. Para simplificar las cosas en el futuro, Oracle comenzó a proporcionar compilaciones OpenJDK con licencia de código abierto a partir de Java 9, utilizando el mismo modelo de licencia que la plataforma Linux. Si está acostumbrado a obtener los archivos binarios de Oracle Java SE de forma gratuita, simplemente puede continuar haciéndolo con las compilaciones OpenJDK de Oracle disponibles en jdk.java.net . Si está acostumbrado a obtener binarios de Oracle Java SE como parte de un producto o servicio comercial de Oracle, puede continuar obteniendo versiones de Oracle JDK a través de My Oracle Support (MOS) y otras ubicaciones.

Funcionalmente idéntico e intercambiable ...

El JDK con licencia BCL de Oracle contenía históricamente "características comerciales" que no estaban disponibles en las compilaciones de OpenJDK. Sin embargo, como se prometió , durante el año pasado Oracle ha contribuido con estas características a la Comunidad OpenJDK, que incluyen:

Desde Java 11 en adelante, por lo tanto, las compilaciones Oracle JDK y las compilaciones OpenJDK serán esencialmente idénticas.

... pero con algunas diferencias estéticas y de empaque

Sigue habiendo un pequeño número de diferencias, algunas intencionales y cosméticas, y otras simplemente porque se justifica más tiempo para discutir con los contribuyentes de OpenJDK.

  • Oracle JDK 11 emite una advertencia cuando se usa la opción -XX: + UnlockCommercialFeatures, mientras que en las compilaciones OpenJDK esta opción produce un error. Esta opción nunca fue parte de OpenJDK y no tendría sentido agregarla ahora, ya que no hay características comerciales en OpenJDK. Esta diferencia persiste para facilitar que los usuarios de Oracle JDK 10 y versiones anteriores migren a Oracle JDK 11 y versiones posteriores.
  • Oracle JDK 11 se puede configurar para proporcionar datos de registro de uso a la " Consola de administración avanzada herramienta " ", que es un producto comercial separado de Oracle. Trabajaremos con otros contribuyentes de OpenJDK para analizar cómo dichos datos de uso pueden ser útiles en OpenJDK en futuras versiones, si es que lo hacen. Esta diferencia se mantiene principalmente para proporcionar una experiencia consistente a los clientes de Oracle hasta que se tomen tales decisiones.
  • El comando javac --release se comporta de manera diferente para los destinos Java 9 y Java 10, ya que en esas versiones, Oracle JDK contenía algunos módulos adicionales que no formaban parte de las versiones correspondientes de OpenJDK:
    • javafx.base
    • javafx.controls
    • javafx.fxml
    • javafx.graphics
    • javafx.media
    • javafx.web
    • java.jnlp
    • jdk.jfr
    • jdk.management.cmm
    • jdk.management.jfr
    • jdk.management.resource
    • jdk.packager.services
    • jdk.snmp

Esta diferencia se mantiene para proporcionar una experiencia consistente para tipos específicos de uso heredado. Estos módulos ahora están disponibles por separado como parte de OpenJFX , ahora están tanto en OpenJDK como en Oracle JDK porque eran características comerciales que Oracle contribuyó a OpenJDK (por ejemplo, Flight Recorder), o se eliminaron de Oracle JDK 11 (por ejemplo, JNLP) .

  • La salida de los comandos java --version y java -fullversion distinguirá las compilaciones Oracle JDK de las compilaciones OpenJDK, para que los equipos de soporte puedan diagnosticar cualquier problema que pueda existir. Específicamente, ejecutar java --version con un Oracle JDK 11 genera resultados en:

java 11 2018-09-25

Java (TM) SE Runtime Environment 18.9 (compilación 11 + 28)

Servidor Java HotSpot (TM) de 64 bits VM 18.9 (compilación 11 + 28, modo mixto)

Y para una compilación de OpenJDK 11:

versión de openjdk "11" 2018-09-25

OpenJDK Runtime Environment 18.9 (compilación 11 + 28)

OpenJDK 64-Bit Server VM 18.9 (compilación 11 + 28, modo mixto)

  • Oracle JDK siempre ha requerido que los proveedores criptográficos de terceros estén firmados por un certificado conocido. El marco de cifrado en OpenJDK tiene una interfaz criptográfica abierta, lo que significa que no restringe qué proveedores se pueden usar. Oracle JDK 11 continuará requiriendo una firma válida, y las compilaciones de Oracle OpenJDK continuarán permitiendo el uso de una firma válida o un proveedor de cifrado de terceros no firmado.
  • Oracle JDK 11 continuará incluyendo instaladores, marcas y empaques JRE para una experiencia consistente con los usos de escritorio heredados. Las compilaciones de Oracle OpenJDK están actualmente disponibles como archivos zip y tar.gz, mientras que se están considerando formatos de distribución alternativos.
Naresh Joshi
fuente
10

En esta publicación de blog se puede encontrar una lista de las pocas diferencias estéticas y de empaque restantes entre Oracle JDK 11 y OpenJDK 11:

https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

En breve:

  • Oracle JDK 11 emite una advertencia al usar la opción -XX: + UnlockCommercialFeatures,
  • se puede configurar para proporcionar datos de registro de uso a la herramienta "Consola de administración avanzada",
  • siempre ha requerido que los proveedores criptográficos de terceros estén firmados por un certificado conocido,
  • continuará incluyendo instaladores, marcas y empaques JRE,
  • mientras que el comando javac --release se comporta de manera ligeramente diferente para los destinos Java 9 y Java 10, y
  • La salida de los comandos java --version y java -fullversion distinguirá las compilaciones Oracle JDK de las compilaciones OpenJDK.
Dalibor Topic
fuente
2
Noté que la mayoría de sus respuestas tenían una firma en ellas. Los he editado. Por favor, lea ¿Están prohibidos los lemas y las firmas? y stackoverflow.com/help/behavior (específicamente la sección "No utilice firmas, lemas o saludos")
Mark Rotteveel
7
  1. Oracle entregará lanzamientos cada tres años, mientras que OpenJDK se lanzará cada seis meses.
  2. Oracle brinda soporte a largo plazo para sus lanzamientos. Por otro lado, OpenJDK admite los cambios a una versión solo hasta que se lance la próxima versión.
  3. Oracle JDK fue licenciado bajo el Acuerdo de Licencia de Código Binario de Oracle, mientras que OpenJDK tiene la versión 2 de la Licencia Pública General de GNU (GNU GPL) con una excepción de enlace.
  4. El producto Oracle tiene las funciones Flight Recorder, Java Mission Control y Application Class-Data Sharing, mientras que OpenJDK tiene la función Font Renderer. Además, Oracle tiene más opciones de recolección de basura y mejores renderizadores,
  5. Oracle JDK está completamente desarrollado por Oracle Corporation, mientras que OpenJDK está desarrollado por Oracle, OpenJDK y la Comunidad Java. Sin embargo, las empresas de primer nivel como Red Hat, Azul Systems, IBM, Apple Inc., SAP AG también participan activamente en su desarrollo.

De Java 11 cambia a un gran cambio

Oracle cambiará su licencia histórica "BCL" con una combinación de código abierto y licencia comercial

  • El kit de Oracle para Java 11 emite una advertencia al usar la opción -XX: + UnlockCommercialFeatures, mientras que en las compilaciones OpenJDK, esta opción produce un error
  • Oracle JDK ofrece una configuración para proporcionar datos de registro de uso a la herramienta "Consola de administración avanzada"
  • Oracle siempre ha requerido que los proveedores criptográficos de terceros estén firmados por un certificado conocido, mientras que el marco de criptografía en OpenJDK tiene una interfaz criptográfica abierta, lo que significa que no hay restricciones sobre qué proveedores pueden usarse
  • Oracle JDK 11 continuará incluyendo instaladores, marcas y empaques JRE, mientras que las compilaciones OpenJDK están actualmente disponibles como archivos zip y tar.gz
  • El comando javac –release se comporta de manera diferente para los destinos Java 9 y Java 10 debido a la presencia de algunos módulos adicionales en la versión de Oracle
  • La salida de los comandos java –version y java -fullversion distinguirá las compilaciones de Oracle de las compilaciones de OpenJDK


Actualización: 25-ago-2019



ingrese la descripción de la imagen aquí

para más detalles oracle-vs-openjdk

Istiaque Hossain
fuente
5

Además de la diferencia de licencia obvia, la principal diferencia entre OpenJDK y OracleJDK 11 son las actualizaciones de estabilidad y rendimiento.

Fuente: https://www.youtube.com/watch?v=Adv9--6IcQI&t=385

Cada 6 meses, las dos bases de código estarán sincronizadas. Pero durante la ventana de 6 meses, OpenJDK solo recibirá actualizaciones de seguridad, mientras que OracleJDK recibirá actualizaciones adicionales de estabilidad y rendimiento.

Dado que las versiones de actualización solo ocurren cada 3 meses tanto para OpenJDK como para OracleJDK, esto significa que se está perdiendo (como máximo) 3 meses de correcciones hasta que salga la próxima versión principal y actualice. Sin embargo, si elige apegarse a los lanzamientos de LTS, entonces una licencia comercial comienza a tener más sentido.

Gili
fuente
3

También para Java 8, en noviembre de 2018 se publicó un punto de referencia de rendimiento interesante para la aplicación Spring Boot REST reactiva (sin bloqueo) alojada en varias JVM por AMIS Technology Blog que muestra que, entre otras diferencias:

  • OpenJDK tiene un mayor uso de CPU que OracleJDK,
  • OpenJDK tiene un tiempo de respuesta ligeramente menor que OracleJDK,
  • OpenJDK tiene un mayor uso de memoria que OracleJDK,

Para más detalles, consulte el artículo fuente.

Por supuesto, YMMV, este es solo uno de los puntos de referencia.

Greg Dubicki
fuente
3

Entiendo que Oracle JDK no se puede usar en producción, por lo tanto, no puedo usarlo legalmente (sin pagar) para la aplicación web que estoy creando para mi empresa. Tengo que usar OpenJDK. ¡Por favor, corríjame si estoy equivocado! De este artículo .

A partir de Java 11, Oracle JDK está restringido a entornos de desarrollo y prueba. Los JDK de Oracle solo se pueden usar en producción si compra el soporte comercial. En cambio, Oracle proporcionará compilaciones Java basadas en OpenJDK de forma gratuita que se pueden utilizar en la producción. Pero para el Oracle JDK oficial, la hoja de ruta real se verá así:

ACTUALIZACIÓN: estoy equivocado. Puedo usar Oracle JDK de forma gratuita, pero no recibiré actualizaciones de seguridad después de 6 meses y tendremos que asumir el riesgo. Mire la sección del artículo vinculado anteriormente "¿Qué significa el nuevo tren de lanzamiento para mi empresa?".

nettie
fuente
Es posible que esto ya no sea así a partir de JDK 13. Existe una nueva licencia para Oracle JDK, según Oracle: "La nueva licencia permite ciertos usos, como el uso personal y el desarrollo, sin costo alguno, pero otros usos autorizados bajo es posible que las licencias anteriores de Oracle JDK ya no estén disponibles ". Consulte oracle.com/downloads/licenses/javase-license1.html .
AL Flanagan
Solo quería saber, ¿La versión actual de Oracle jdk8u241 es gratuita para uso en producción?
Nirav Shah