In breve:
- OpenJDK ha molteplici significati e può fare riferimento a:
- implementazione gratuita e open source della piattaforma Java, Standard Edition (Java SE)
- repository open source - il codice sorgente Java noto anche come progetto OpenJDK
- binari OpenJDK precompilati gestiti da Oracle
- binari OpenJDK precompilati gestiti dalla comunità OpenJDK
- AdoptOpenJDK - binari OpenJDK precompilati gestiti dalla community ( licenza open source )
Spiegazione:
OpenJDK (o distribuzione) precompilato - binari, costruiti da http://hg.openjdk.java.net/ , forniti come archivio o programma di installazione, offerti per varie piattaforme, con un possibile contratto di supporto.
OpenJDK, il repository di origine (chiamato anche progetto OpenJDK ) - è un repository open source basato su Mercurial , ospitato su
http://hg.openjdk.java.net . Il codice sorgente Java. La stragrande maggioranza delle funzionalità Java (dalla VM e dalle librerie core al compilatore) si basano esclusivamente su questo repository di origine. Oracle ha un fork alternativo di questo.
OpenJDK, la distribuzione (vedi l'elenco dei fornitori di seguito) - è gratuito come nella birra e in genere come nel discorso , ma non puoi chiamare Oracle se hai problemi con esso. Non esiste un contratto di assistenza. Inoltre, Oracle rilascerà gli aggiornamenti a qualsiasi versione OpenJDK (la distribuzione) solo se quella versione è la versione Java più recente, comprese le versioni LTS (supporto a lungo termine). Il giorno in cui Oracle rilascia OpenJDK (la distribuzione) versione 12.0, anche se esiste un problema di sicurezza con OpenJDK (la distribuzione) versione 11.0, Oracle non rilascerà un aggiornamento per 11.0. Gestito esclusivamente da Oracle.
Alcuni progetti OpenJDK - come OpenJDK 8 e OpenJDK 11 - sono gestiti dalla comunità OpenJDK e forniscono versioni di alcune versioni OpenJDK per alcune piattaforme. I membri della comunità si sono presi la responsabilità di rilasciare correzioni per le vulnerabilità di sicurezza in queste versioni di OpenJDK.
Adottando OpenJDK, la distribuzione è molto simile alla distribuzione OpenJDK di Oracle (in quanto è gratuita, ed è una build prodotta compilando i sorgenti dal repository di sorgenti OpenJDK). AdoptOpenJDK come entità non eseguirà il backport delle patch, cioè non ci sarà un 'fork / versione' di AdoptOpenJDK che è materialmente diverso dall'upstream (ad eccezione di alcune patch di script di build per cose come il supporto Win32). Ciò significa che se i membri della comunità (Oracle o altri, ma non AdoptOpenJDK come entità) effettuano il backport delle correzioni di sicurezza agli aggiornamenti delle versioni OpenJDK LTS, AdoptOpenJDK fornirà build per quelli. Gestito dalla comunità OpenJDK.
OracleJDK - è l'ennesima distribuzione. A partire da JDK12 non ci sarà una versione gratuita di OracleJDK. L'offerta di distribuzione JDK di Oracle è destinata al supporto commerciale. Paghi per questo, ma poi fai affidamento su Oracle per il supporto. A differenza dell'offerta Oracle OpenJDK, OracleJDK offre un supporto più lungo per le versioni LTS. Come sviluppatore puoi ottenere una licenza gratuita per l'uso personale / di sviluppo solo di questo particolare JDK, ma si tratta principalmente di un'aringa rossa, dato che "solo il binario" è sostanzialmente lo stesso del binario OpenJDK. Immagino che ciò significhi che è possibile scaricare versioni di LTS JDK con patch di sicurezza dai siti Web di Oracle purché si prometta di non utilizzarle commercialmente.
Nota . Potrebbe essere meglio chiamare le build OpenJDK di Oracle "build Oracle OpenJDK".
Donald Smith, product manager Java di Oracle scrive :
Idealmente, faremmo semplicemente riferimento a tutte le build Oracle JDK come "Oracle JDK", sotto licenza GPL o commerciale, a seconda della situazione. Tuttavia, per motivi storici, sebbene esistano le piccole differenze rimanenti, faremo riferimento a loro separatamente come build OpenJDK di Oracle e Oracle JDK.
Provider e confronto OpenJDK
-------------------------------------------------- --------------------------------------
| Fornitore | Build gratuite | Binario gratuito | Esteso | Commerciale | Permissivo |
| | dalla fonte | Distribuzioni | Aggiornamenti | Supporto | Licenza |
| ------------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | Sì | Sì | Sì | No | Sì |
| Amazon - Corretto | Sì | Sì | Sì | No | Sì |
| Azul Zulu | No | Sì | Sì | Sì | Sì |
| BellSoft Liberica | No | Sì | Sì | Sì | Sì |
| IBM | No | No | Sì | Sì | Sì |
| jClarity | No | No | Sì | Sì | Sì |
| OpenJDK | Sì | Sì | Sì | No | Sì |
| Oracle JDK | No | Sì | No ** | Sì | No |
| Oracle OpenJDK | Sì | Sì | No | No | Sì |
| ojdkbuild | Sì | Sì | No | No | Sì |
| RedHat | Sì | Sì | Sì | Sì | Sì |
| SapMachine | Sì | Sì | Sì | Sì | Sì |
-------------------------------------------------- --------------------------------------
Build gratuiti da Source : il codice sorgente di distribuzione è pubblicamente disponibile e si può assemblare la propria build
Distribuzioni binarie gratuite : i file binari di distribuzione sono disponibili pubblicamente per il download e l'utilizzo
Aggiornamenti estesi - aka LTS (supporto a lungo termine) - Aggiornamenti pubblici oltre il ciclo di vita delle versioni di 6 mesi
Supporto commerciale : alcuni provider offrono aggiornamenti estesi e supporto ai clienti paganti, ad esempio Oracle JDK ( dettagli del supporto )
Licenza permissiva : la licenza di distribuzione non è protettiva, ad es. Apache 2.0
Quale distribuzione Java dovrei usare?
Ai tempi di Sun / Oracle, di solito Sun / Oracle produceva le distribuzioni JDK downstream proprietarie basate su fonti OpenJDK. Di recente, Oracle ha deciso di realizzare le proprie build proprietarie solo con il supporto commerciale allegato. Pubblicano gentilmente anche i build OpenJDK sul loro sito https://jdk.java.net/ .
Quello che sta succedendo a partire da JDK 11 è il passaggio dalla mentalità single-vendor (Oracle) alla mentalità in cui si seleziona un provider che ti offre una distribuzione per il prodotto, alle condizioni che ti piacciono: piattaforme per cui costruiscono, frequenza e tempestività delle versioni , come è strutturato il supporto, ecc. Se non ti fidi di nessuno dei fornitori esistenti, puoi persino creare OpenJDK da solo.
Ogni build di OpenJDK è di solito fatta dallo stesso repository originale upstream source (OpenJDK "il progetto"). Tuttavia, ogni build è piuttosto unica: $ gratuita o commerciale, con marchio o senza marchio, pura o in bundle (ad esempio, BellSoft Liberica JDK offre JavaFX in bundle, che è stato rimosso dalle build Oracle a partire da JDK 11).
Se nessun ambiente (es. Linux) e / o requisiti di licenza definiscono una distribuzione specifica e se si desidera la build JDK più standard , probabilmente l'opzione migliore è utilizzare OpenJDK di Oracle o AdoptOpenJDK.
Informazioni aggiuntive
È ora di guardare oltre Oracle JDK di Stephen Colebourne
Java Is Still Free della community Java Champions (pubblicato il 17 settembre 2018)
Java è ancora gratuito 2.0.0 dalla community Java Champions (pubblicato il 3 marzo 2019)
Aleksey Shipilev sull'intervista sugli aggiornamenti di JDK di Opsian (pubblicata il 27 giugno 2019)