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.