Secondo il blog Oracle , Oracle JDK rilascia per Java 11 e versioni successive
A partire da Java 11, Oracle fornirà le versioni JDK con la GNU General Public License v2 open source , con l'eccezione Classpath (GPLv2 + CPE) e con una licenza commerciale per coloro che utilizzano Oracle JDK come parte di un prodotto o servizio Oracle, o che non desiderano utilizzare software open source. Questa combinazione di utilizzo di una licenza open source e una licenza commerciale sostituisce lo storico “ BCL licenza ", che aveva una combinazione di termini commerciali gratuiti e a pagamento.
Verranno fornite build diverse per ogni licenza, ma queste build sono funzionalmente identiche a parte alcune differenze cosmetiche e di packaging, descritte in dettaglio di seguito.
Dal BCL alla GPL
La licenza di codice binario per le tecnologie Oracle Java SE ("BCL") è stata la licenza principale per le tecnologie Oracle Java SE da oltre un decennio. Il BCL consente l'utilizzo senza costi di licenza a determinate condizioni. Per semplificare le cose in futuro, Oracle ha iniziato a fornire build OpenJDK con licenza open source a partire da Java 9, utilizzando lo stesso modello di licenza della piattaforma Linux. Se sei abituato a ottenere i binari Oracle Java SE gratuitamente, puoi semplicemente continuare a farlo con le build Oracle OpenJDK disponibili su jdk.java.net . Se sei abituato a ottenere i binari Oracle Java SE come parte di un prodotto o servizio commerciale da Oracle, puoi continuare a ottenere le versioni Oracle JDK tramite My Oracle Support (MOS) e altre posizioni.
Funzionalmente identico e intercambiabile ...
La JDK con licenza BCL di Oracle conteneva storicamente "caratteristiche commerciali" che non erano disponibili nelle build OpenJDK. Come promesso , tuttavia, nell'ultimo anno Oracle ha fornito queste funzionalità alla comunità OpenJDK, tra cui:
Da Java 11 in avanti, quindi, le build Oracle JDK e OpenJDK saranno sostanzialmente identiche.
... ma con alcune differenze cosmetiche e di imballaggio
Rimangono un piccolo numero di differenze, alcune intenzionali e cosmetiche, altre semplicemente perché è garantito più tempo per discutere con i collaboratori di OpenJDK.
- Oracle JDK 11 emette un avviso quando si utilizza l'opzione -XX: + UnlockCommercialFeatures, mentre in OpenJDK crea questa opzione genera un errore. Questa opzione non faceva mai parte di OpenJDK e non avrebbe senso aggiungerla ora, poiché non ci sono funzionalità commerciali in OpenJDK. Questa differenza rimane per rendere più semplice la migrazione a Oracle JDK 11 e versioni successive per gli utenti di Oracle JDK 10 e versioni precedenti.
- Oracle JDK 11 può essere configurato per fornire i dati del registro di utilizzo a " Advanced Management Console ", che è un prodotto Oracle commerciale separato. Lavoreremo con altri collaboratori di OpenJDK per discutere di come tali dati di utilizzo possano essere utili in OpenJDK nelle versioni future, se non del tutto. Questa differenza rimane principalmente quella di fornire un'esperienza coerente ai clienti Oracle fino a quando non verranno prese tali decisioni.
- Il comando javac --release si comporta diversamente per le destinazioni Java 9 e Java 10, poiché in quelle versioni Oracle JDK conteneva alcuni moduli aggiuntivi che non facevano parte delle corrispondenti versioni 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
Questa differenza rimane al fine di fornire un'esperienza coerente per specifici tipi di utilizzo legacy. Questi moduli sono ora disponibili separatamente come parte di OpenJFX , ora sono sia in OpenJDK sia in Oracle JDK perché erano caratteristiche commerciali che Oracle ha contribuito a OpenJDK (ad esempio, Flight Recorder) o sono stati rimossi da Oracle JDK 11 (ad esempio, JNLP) .
- L'output dei comandi java --version e java -fullversion distinguerà le build Oracle JDK dalle build OpenJDK, in modo che i team di supporto possano diagnosticare eventuali problemi. In particolare, l'esecuzione di java --version con una build Oracle JDK 11 comporta:
11 novembre 2018-09-25
Java (TM) SE Runtime Environment 18.9 (build 11 + 28)
Java HotSpot (TM) 64-Bit Server VM 18.9 (build 11 + 28, modalità mista)
E per una build OpenJDK 11:
versione openjdk "11" 25-09-2018
OpenJDK Runtime Environment 18.9 (build 11 + 28)
OpenJDK 64-Bit Server VM 18.9 (build 11 + 28, modalità mista)
- Oracle JDK ha sempre richiesto che i provider crittografici di terze parti siano firmati da un certificato noto. Il framework di crittografia in OpenJDK ha un'interfaccia crittografica aperta, il che significa che non limita quali provider possono essere utilizzati. Oracle JDK 11 continuerà a richiedere una firma valida e le build Oracle OpenJDK continueranno a consentire l'uso di una firma valida o di un provider di crittografia di terze parti non firmato.
- Oracle JDK 11 continuerà a includere programmi di installazione, branding e packaging JRE per un'esperienza coerente con gli usi desktop legacy. Le build di Oracle OpenJDK sono attualmente disponibili come file zip e tar.gz, mentre vengono presi in considerazione formati di distribuzione alternativi.