Differenze tra Oracle JDK e OpenJDK


700

NOTA: questa domanda è del 2014. A partire da Java 11 OpenJDK e Oracle JDK stanno convergendo.

Ci sono differenze cruciali tra Oracle e OpenJDK?

Ad esempio, la garbage collection e altri parametri JVM sono uguali?

GC funziona in modo diverso tra i due?


3
Questo potrebbe anche essere rilevante se hai intenzione di passare da Oracle a OpenJDK poiché Oracle non è più gratuito. developers.redhat.com/blog/2018/11/05/…
Leo Ufimtsev

Risposte:


338

Sia OpenJDK che Oracle JDK sono creati e gestiti attualmente solo da Oracle.

OpenJDK e Oracle JDK sono implementazioni della stessa specifica Java approvate dal TCK (Java Technology Certification Kit).

La maggior parte dei fornitori di JDK sono scritti su OpenJDK facendo alcune modifiche per [principalmente per sostituire parti proprietarie concesse in licenza / sostituire con articoli ad alte prestazioni che funzionano solo su specifici sistemi operativi] senza rompere la compatibilità TCK.

Molti fornitori hanno implementato le specifiche Java e hanno superato TCK. Ad esempio, IBM J9, Azul Zulu, Azul Zing e Oracle JDK.

Quasi tutti i JDK esistenti derivano da OpenJDK.

Come suggerito da molti, le licenze sono un cambiamento tra i JDK.

A partire da JDK 11 accedendo al supporto di lunga data Oracle JDK / Java SE richiederà ora una licenza commerciale. Ora dovresti prestare attenzione a quale JDK stai installando come Oracle JDK senza abbonamento potrebbe smettere di funzionare. fonte

Rif: Elenco di macchine virtuali Java


13
Quindi stai dicendo che openjdk è la base di tutti gli altri jdk solo che lo copiano e poi lo modificano dopo le sue specifiche?
Karl Morrison,

24
Sono in ritardo alla festa, ma lo chiederò comunque. Cosa porta jdk sul tavolo che openjdk non ha? Tutte queste risposte fanno sembrare openjdk uguale o superiore in ogni modo, ma se è così perché Oracle si preoccupa addirittura di mantenere jdk?
Kefka,

@ Karl Morrison Per quanto ne so, .. tutti implementando le specifiche JVM facendo solo in quel modo .. ma non esiste una regola esplicita che si debba seguire in quel modo ...
Venkateswara Rao,

13
@ Mella OpenJDK <= OracleJDK Ad esempio, Oracle JDK ha configurato alcune chiavi affidabili, che non erano in OpenJDK (ora un giorno le persone le stanno semplicemente importando per colmare questa lacuna) Oracle JDK ha alcune librerie SWING che sono proprietarie per accelerare il rendering .. (Chiunque abbia mai fatto app per server, potrebbe essere irrilevante per loro) Oracle JDK ha il plugin Applet (Stesso motivo sopra funziona) Oracle bug fix / hotfix Oracle JDK sarebbe distribuito e gestito correttamente da Oracle dove come OpenJDK è poco tecnico per garantire tutto il vengono applicate le patch e quale conflitto avrebbero avuto
Venkateswara Rao

Nota con il nuovo modello di rilascio per Java, Oracle prevede di ridurre il più possibile il divario tra i due jdk. Ci sono altri collaboratori open source per aprire jdk oltre agli sviluppatori Oracle? Questo per capire se ci sarebbe abbastanza supporto per eseguire il backport di una correzione dalla versione più recente alla versione precedente. qualche idea?
Andy Dufresne,

329

Per Java 7 , niente di cruciale. Il progetto OpenJDK si basa principalmente sul codice sorgente HotSpot donato da Sun.

Inoltre, OpenJDK è stato selezionato come implementazione di riferimento per Java 7 ed è gestito dagli ingegneri Oracle.

C'è una risposta più dettagliata dal 2012 sulla differenza tra JVM, JDK, JRE e OpenJDK , che collega a un post sul blog Oracle :

D : Qual è la differenza tra il codice sorgente trovato nel repository OpenJDK e il codice che usi per creare Oracle JDK?

UN : È molto vicino: il nostro processo di compilazione per le versioni di Oracle JDK si basa su OpenJDK 7 aggiungendo solo un paio di pezzi, come il codice di distribuzione, che include l'implementazione di Oracle del plug-in Java e Java WebStart, nonché un terzo di codice sorgente chiuso componenti di parti come un rasterizzatore grafico, alcuni componenti di terze parti open source, come Rhino, e alcuni frammenti qua e là, come documentazione aggiuntiva o caratteri di terze parti. Andando avanti, il nostro intento è quello di open source tutti i pezzi di Oracle JDK ad eccezione di quelli che consideriamo funzionalità commerciali come JRockit Mission Control (non ancora disponibile in Oracle JDK) e sostituire componenti di terze parti gravati con alternative open source per ottenere una parità più stretta tra le basi di codice.


42
Inoltre ci sono differenze di licenza.
mcoolive,

9
grazie ho trovato una risposta migliore. stackoverflow.com/questions/17360011/…
astroanu

9
Su ARM almeno quei due sembrano essere significativamente diversi nelle prestazioni. Dovrei fare un po 'di profiling sul perché sta accadendo, ma la differenza soggettiva è "Oracle JDK è ok" e "OpenJDK è completamente inutilizzabile".
raddoppiato il

1
@dualed tuttavia Android si sta muovendo su openjdk a partire da Android 7. Sembra che stiano preparando miglioramenti significativi. venturebeat.com 29/12/2015 /
Johnny Doe

1
@JohnnyDoe Speriamo che se Google si sta spostando su OpenJDK, forniranno upstream con patch di prestazioni in modo che funzioni bene anche su ARM al di fuori di Android!
raddoppiato l'

95

Una differenza fondamentale per il futuro è la pianificazione del rilascio e la politica di supporto.

OpenJDK

OpenJDK avrà una versione di funzionalità ogni 6 mesi che è supportata solo fino alla prossima versione di funzionalità. È essenzialmente un flusso continuo di versioni destinate agli sviluppatori.

Oracle JDK

Oracle JDK si rivolge maggiormente a un pubblico aziendale che apprezza la stabilità. È basato su una delle versioni di OpenJDK, ma viene fornito supporto a lungo termine (LTS). Oracle JDK ha versioni pianificate ogni 3 anni.

inserisci qui la descrizione dell'immagine

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


3
Le versioni a lungo termine richiedono l'acquisto di supporto commerciale per ottenere aggiornamenti dopo 6 mesi dalla versione java. Qual è il significato delle versioni a lungo termine rispetto alle versioni a breve termine? Le versioni a breve termine come JDK 9/10 non dispongono del supporto commerciale di Oracle?
Andy Dufresne,

@AndyDufresne perché pensi che dovrai pagare per il supporto dopo solo 6 mesi? La mia comprensione è che la sequenza temporale è TBD. 6 mesi sembrano terribilmente brevi però ... Dubito che possiamo aspettarci aggiornamenti pubblici per 5 anni, come sta ottenendo Java 8, ma non sarei sorpreso se ci fossero aggiornamenti pubblici per 2 o 3 anni. Riferimento - Questo è per: oracle.com/technetwork/java/eol-135779.html .
The Gilbert Arenas Dagger

1
L'oracle link menziona "Ad esempio, la versione LTS per Oracle JDK 11 (18.9 LTS) sarà supportata per almeno 5 anni come descritto nella Politica di supporto a vita di Oracle". La politica prevede 3 livelli di supporto, nessuno dei quali sembra essere gratuito. Ne parlo anche dopo aver visto il commento di azul CTO qui - blog.takipi.com/java-11-will-include-more-than-just-features/… . L'obiettivo principale di questa nuova strategia di rilascio è di non perdere tempo a mantenere le versioni precedenti. Se il supporto fosse gratuito, il modello sarebbe lo stesso di adesso.
Andy Dufresne,

38

Per Java 8 , Oracle JDK e OpenJDK la mia opinione sulle differenze chiave:

  • OpenJDK è un'implementazione open source della piattaforma Java Standard Edition con il contributo di Oracle e della comunità Java aperta.

  • OpenJDK è rilasciato sotto licenza GPL v2 in cui Oracle JDK è concesso in licenza ai sensi del Contratto di licenza con codice binario Oracle.

  • In realtà, il processo di compilazione di Oracle JDK si basa sul codice sorgente OpenJDK. Quindi non vi è alcuna differenza tecnica importante tra Oracle JDK e OpenJDK. Oltre al codice di base, Oracle JDK include l'implementazione Oracle di Java Plugin e Java WebStart. Include anche componenti open source e di terze parti di terze parti come rispettivamente rasterizzatore grafico e Rhino . OpenJDK Font Renderer e Oracle JDK Flight Recorder sono le principali differenze evidenti tra Oracle JDK e OpenJDK.

  • Rockit era la JVM di Oracle e da Java SE 7, HotSpot e JRockit si sono fusi in un'unica JVM. Quindi ora abbiamo disponibile solo la JVM HotSpot unita.
  • Ci sono casi in cui le persone affermano di avere problemi durante l'esecuzione di OpenJDK e che sono stati risolti quando sono passati a Oracle JDK.
  • Twitter ha il suo JDK.
  • Software come Minecraft prevede l'utilizzo di Oracle JDK. In effetti, avverte.

Per un elenco completo delle differenze, consultare l'articolo di origine: Oracle JDK vs OpenJDK e Java JDK Process Development


4
Per Android Studio, questo non è più vero: una copia dell'ultimo OpenJDK viene fornita in bundle con Android Studio 2.2 e versioni successive e questa è la versione JDK che ti consigliamo di utilizzare per i tuoi progetti Android. Fonte: developer.android.com/studio/intro/studio-config#jdk
MKesper

“Software come Minecraft prevede l'utilizzo di Oracle JDK. In effetti, avverte. " In realtà, in Ubuntu, il programma di installazione .deb ufficiale di Mojang inserisce OpenJDK durante l'installazione del programma di avvio.
Moilleadóir il

29

Le JVM Oracle e OpenJDK sono le stesse e hanno le stesse funzionalità GC (delle ultime versioni 10+). Prima che Oracle gestisse OpenJDK JVM c'erano delle differenze concrete che rendevano la vecchia Openjdk JVM quasi inutilizzabile in molti ambienti. Le JVM sono ora le stesse.

I JDK che includono JVM come parte del Kit, differiscono per le licenze, il programma di rilascio e manutenzione e le librerie software incluse nel JDK. Le differenze cruciali per me significano anche cose che renderebbero il codice non eseguito se non presente. Non solo licenze.

diff --brief -r openjdk oraclejdk

Fondamentalmente mancano i seguenti file oltre a molti altri su Linux JDK (quindi se 'hai affermato' che il codice non funzionava su OpenJDK e lo facevi su OracleJDK mentre stavi usando javafx, allora avevi ragione):

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`

5
Grazie per indicare le vere differenze: il codice non in esecuzione è una questione di vita reale. Da dove hai basato il tuo diff?
Matthieu,

19

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.

10

Un elenco delle poche differenze cosmetiche e di packaging rimanenti tra Oracle JDK 11 e OpenJDK 11 è disponibile in questo post del blog:

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

In breve:

  • Oracle JDK 11 emette un avviso quando si utilizza l'opzione -XX: + UnlockCommercialFeatures,
  • può essere configurato per fornire i dati del registro di utilizzo allo strumento "Advanced Management Console",
  • ha sempre richiesto che fornitori di crittografia di terze parti fossero firmati da un certificato noto,
  • continuerà a includere installatori, marchi e packaging JRE,
  • mentre il comando javac --release si comporta in modo leggermente diverso per le destinazioni Java 9 e Java 10 e
  • l'output dei comandi java --version e java -fullversion distinguerà le build Oracle JDK dalle build OpenJDK.

2
Ho notato che la maggior parte delle tue risposte aveva una firma. Li ho modificato. Leggere tagline e firme vietate? e stackoverflow.com/help/behavior (in particolare la sezione "Non utilizzare firma, slogan o saluti")
Mark Rotteveel,

7
  1. Oracle distribuirà versioni ogni tre anni, mentre OpenJDK verrà rilasciato ogni sei mesi.
  2. Oracle fornisce supporto a lungo termine per le sue versioni. D'altra parte, OpenJDK supporta le modifiche a una versione solo fino al rilascio della versione successiva.
  3. Oracle JDK è stato concesso in licenza in base al Contratto di licenza del codice binario Oracle, mentre OpenJDK ha la GNU General Public License (GNU GPL) versione 2 con un'eccezione di collegamento.
  4. Il prodotto Oracle dispone delle funzionalità di Flight Recorder, Java Mission Control e Application Class-Data Sharing, mentre OpenJDK ha la funzione Font Renderer. Inoltre, Oracle ha più opzioni di Garbage Collection e renderer migliori,
  5. Oracle JDK è completamente sviluppato da Oracle Corporation mentre OpenJDK è sviluppato da Oracle, OpenJDK e Java Community. Tuttavia, anche le società di punta come Red Hat, Azul Systems, IBM, Apple Inc., SAP AG partecipano attivamente al suo sviluppo.

Da Java 11 si trasforma in un grande cambiamento

Oracle cambierà la sua storica licenza "BCL" con una combinazione di una licenza open source e commerciale

  • Il kit Oracle per Java 11 emette un avviso quando si utilizza l'opzione -XX: + UnlockCommercialFeatures, mentre nelle build OpenJDK, questa opzione genera un errore
  • Oracle JDK offre una configurazione per fornire i dati del registro di utilizzo allo strumento "Advanced Management Console"
  • Oracle ha sempre richiesto che i provider di crittografia di terze parti siano firmati da un certificato noto, mentre il framework di crittografia in OpenJDK ha un'interfaccia di crittografia aperta, il che significa che non ci sono restrizioni su quali provider possono essere utilizzati
  • Oracle JDK 11 continuerà a includere programmi di installazione, branding e packaging JRE, mentre le build OpenJDK sono attualmente disponibili come file zip e tar.gz
  • Il comando javac –release si comporta diversamente per i target Java 9 e Java 10 a causa della presenza di alcuni moduli aggiuntivi nella versione di Oracle
  • L'output dei comandi java –version e java -fullversion distinguerà le build di Oracle dalle build di OpenJDK


Aggiornamento: 25 agosto 2019



inserisci qui la descrizione dell'immagine

per maggiori dettagli oracle-vs-openjdk



5

A parte l'ovvia differenza di licenza, la principale differenza tra OpenJDK e OracleJDK 11 sono gli aggiornamenti di stabilità e prestazioni.

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

Ogni 6 mesi i due codebase saranno sincronizzati. Ma durante la finestra di 6 mesi OpenJDK riceverà solo aggiornamenti di sicurezza mentre OracleJDK riceverà ulteriori aggiornamenti di stabilità e prestazioni.

Dato che le versioni di aggiornamento si verificano solo ogni 3 mesi sia per OpenJDK che per OracleJDK, ciò significa che si stanno perdendo (al massimo) 3 mesi di correzioni fino alla prossima versione principale e l'aggiornamento. Tuttavia, se si sceglie di attenersi alle versioni LTS, una licenza commerciale inizia ad avere più senso.


3

Anche per Java 8 un interessante benchmark delle prestazioni per l'applicazione REST Spring Boot reattiva (non bloccante) ospitata su varie JVM dal Blog sulla tecnologia AMIS è stato pubblicato nel novembre 2018, dimostrando che, tra le altre differenze:

  • OpenJDK ha un utilizzo della CPU maggiore rispetto a OracleJDK,
  • OpenJDK ha tempi di risposta leggermente inferiori rispetto a OracleJDK,
  • OpenJDK ha un utilizzo della memoria maggiore rispetto a OracleJDK,

Per i dettagli, consultare l'articolo di origine.

Naturalmente YMMV, questo è solo uno dei parametri di riferimento.


3

La mia comprensione è che Oracle JDK non può essere utilizzato nella produzione, quindi non posso usarlo legalmente (senza pagare), per l'applicazione web che sto costruendo per la mia azienda. Devo usare OpenJDK. Perfavore, correggimi se sbaglio! Da questo articolo .

A partire da Java 11, Oracle JDK è limitato agli ambienti di sviluppo e test. Gli Oracle JDK possono essere utilizzati in produzione solo se si acquista il supporto commerciale. Invece, Oracle fornirà build Java basate su OpenJDK gratuitamente che possono essere utilizzate in produzione. Ma per Oracle JDK ufficiale la vera tabella di marcia sarà simile a questa:

AGGIORNAMENTO: sbaglio. Posso usare Oracle JDK gratuitamente ma non riceverò aggiornamenti di sicurezza dopo 6 mesi e dovremo assumerci il rischio. Guarda la sezione dell'articolo collegata sopra "Cosa significa il nuovo treno di rilascio per la mia azienda?".


Questo potrebbe non essere più vero a partire da JDK 13. Esiste una nuova licenza per Oracle JDK, secondo Oracle: "La nuova licenza consente alcuni usi, come l'uso personale e l'uso dello sviluppo, a costo zero - ma altri usi autorizzati ai sensi precedenti licenze Oracle JDK potrebbero non essere più disponibili ". Vedi oracle.com/downloads/licenses/javase-license1.html .
AL Flanagan,

Volevo solo sapere, l'attuale versione di Oracle jdk8u241 è gratuita per l'uso in produzione?
Nirav Shah,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.