www technetwork jre jdk javase index for downloads developers and java difference

java - technetwork - Diferencias entre Oracle JDK y OpenJDK



oracle jdk 10 (6)

En esta publicación del blog se puede encontrar una lista de las pocas diferencias de cosméticos y empaques que quedan 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 cuando se usa la opción -XX: + UnlockCommercialFeatures,
  • se puede configurar para proporcionar datos de registro de uso a la herramienta "Advanced Management Console",
  • 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 objetivos Java 9 y Java 10, y
  • la salida de los comandos java --version y java -fullversion distinguirá las compilaciones de Oracle JDK de las compilaciones de OpenJDK.

¿Hay diferencias cruciales entre Oracle y OpenJDK?

Por ejemplo, ¿la recolección de basura y otros parámetros de JVM son iguales?

¿Funciona GC de manera diferente entre los dos?


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

Los JDK que incluyen la JVM como parte del Kit, difieren según el programa de licencias, lanzamientos 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

Esencialmente, faltan los siguientes archivos además de un montón de otros en el JDK de Linux (de modo que si ''afirmó'' que el código no funcionaba en OpenJDK y lo hizo en OracleJDK mientras estaba usando javafx, era 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`


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 el JDK de Oracle?

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 la fiesta como un rasterizador de gráficos, algunos componentes de terceros de código abierto, como Rhino, y algunos bits y piezas aquí y allá, como documentación adicional o fuentes de terceros. Avanzando, nuestra intención es abrir el código fuente de todas las piezas del JDK de Oracle, excepto aquellas que consideramos características comerciales como JRockit Mission Control (que aún no están disponibles en el JDK de Oracle), y reemplazar los componentes de terceros con alternativas de código abierto para lograr una paridad más cercana entre las bases del código.


Oracle JDK vs. OpenJDK

  • 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 publica bajo la licencia GPL v2, en donde Oracle JDK está licenciado según el Acuerdo de licencia de código binario de Oracle.

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

  • Rockit era la JVM de Oracle y de Java SE 7, HotSpot y JRockit se fusionaron en una única JVM. Así que ahora solo tenemos disponible la JVM de HotSpot fusionada.
  • Hay casos en los que las personas afirman que tuvieron problemas al ejecutar OpenJDK y que se resolvieron al cambiar a Oracle JDK.
  • Twitter tiene su propio JDK.
  • El software como Android Studio, IntelliJ IDEA y Minecraft espera que se use Oracle JDK. De hecho, advierte.

Fuente: Oracle JDK vs OpenJDK y Java JDK Process Process


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

OpenJDK y Oracle JDK son implementaciones de la misma especificación de Java que se aprobó con el TCK (Java Technology Certification Kit).

La mayoría de los proveedores de JDK están escritos sobre OpenJDK haciendo algunos ajustes para [principalmente para reemplazar partes con licencia patentadas / reemplazar con más elementos de alto rendimiento que solo funcionan en componentes de sistemas operativos específicos] sin romper la compatibilidad con TCK.

Muchos proveedores implementaron la especificación de Java y obtuvieron la aprobación de TCK. Por ejemplo, IBM J9, Azul Zulu, Azul Zing y Oracle JDK.

Casi todos los JDK existentes se derivan de OpenJDK.

Según lo sugerido por muchos, las licencias son un cambio entre los JDK.

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

Ref: Lista de máquinas virtuales Java


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

OpenJDK

OpenJDK tendrá un lanzamiento de características cada 6 meses, que solo se admite hasta el próximo lanzamiento de características. Es esencialmente un flujo continuo de lanzamientos dirigidos a desarrolladores.

Oracle JDK

El Oracle JDK está orientado más hacia una audiencia empresarial que valora la estabilidad. Se basa en uno de los lanzamientos de OpenJDK, pero luego recibe soporte a largo plazo (LTS). El Oracle JDK tiene lanzamientos planeados cada 3 años.

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