Differenza tra OpenJDK e Adoptium / AdoptOpenJDK


183

A causa del recente aggiornamento della politica Roadmap del supporto Oracle Java SE (fine degli aggiornamenti di $ free rilasciati da Oracle in particolare dopo marzo 2019), ho cercato alternative a Oracle Java. Ho scoperto che OpenJDK è un'alternativa open source. E ho trovato AdoptOpenJDK , ora noto come Adoptium, che è un binario predefinito . Puzzle.

Qual è la differenza tra OpenJDK e Adoptium / AdoptOpenJDK?


Aggiornamento: AdoptOpenJDK ha cambiato il suo nome in Adoptium , come parte del suo trasferimento in Eclipse Foundation .
Basil Bourque,

Risposte:


272

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)


8
Potresti aggiungere che altri fornitori forniscono implementazioni Java basate su OpenJDK come i prodotti Zulu e Zing di Azul Systems . Un altro è il progetto Eclipse OpenJ9 .
Basil Bourque,


1
@MikhailKholodkov Inesattezza sulla licenza Apache. Il tuo link ad AdoptOpenJDK usando Apache License 2.0 si applica solo agli script di build che hanno creato per aiutare a produrre i loro binari. I binari sono costruiti dal codice sorgente ottenuto dal progetto OpenJDK usando la GPL con il collegamento della licenza di eccezione.
Basil Bourque,

2
@GarrettWilson AdoptOpenJDK fa solo 2 cose: (a) Costruisci binari e installatori usando il codice sorgente fornito da OpenJDK, e (b) Esegui test su quei binari. AdoptOpenJDK non mantiene un repository di codice sorgente per l'implementazione della piattaforma Java. Quindi: OpenJDK è solo codice sorgente, AdoptOpenJDK è solo binari + programmi di installazione. AdoptOpenJDK autori solo codice per i loro strumenti di costruzione e suite di test. Oltre ad AdoptOpenJDK, diverse altre società forniscono anche build basate sul codice sorgente fornito dal progetto OpenJDK: Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP e altri.
Basil Bourque,

1
@GarretWilson Dovrei aggiungere che AdoptOpenJDK fa una terza cosa: (c) crea e mantiene strumenti per supportare l'edificio e i test menzionati nel mio commento precedente.
Basil Bourque,

64

Aggiornamento: AdoptOpenJDK ha cambiato il suo nome in Adoptium , come parte del suo trasferimento in Eclipse Foundation .


OpenJDK: codice sorgente
Adoptium / AdoptOpenJDK ➙ build

Differenza tra OpenJDK e AdoptOpenJDK

Il primo fornisce il codice sorgente , l'altro fornisce le build di quel codice sorgente.

Diversi fornitori di Java e OpenJDK

Adoptium della Eclipse Foundation , precedentemente nota come AdoptOpenJDK , è solo uno dei numerosi distributori che distribuiscono implementazioni della piattaforma Java. Questi includono:

  • Fondazione Eclipse (Adoptium / AdoptOpenJDK)
  • Azul Systems
  • Oracolo
  • Red Hat / IBM
  • BellSoft
  • LINFA
  • Amazon AWS
  • ... e altro ancora

Vedi questo mio diagramma di flusso per aiutarti a scegliere un fornitore per l'implementazione della piattaforma Java. Fai clic / tocca per ingrandire.

Diagramma di flusso che guida l'utente nella scelta di un fornitore per un'implementazione Java 11

Un'altra risorsa: questa matrice di confronto di Azul Systems è utile e mi sembra vera e giusta.

Ecco un elenco di considerazioni e motivazioni da considerare nella scelta di un fornitore e implementazione.

Motivazioni nella scelta di un fornitore per Java

Alcuni fornitori offrono una scelta di tecnologie JIT .

Diagramma che mostra la storia della fusione di HotSpot e JRockit e OpenJ9 entrambi disponibili in AdoptOpenJDK

Per saperne di più su questo ecosistema Java, leggi Java Is Still Free


1
Se "OpenJDK" si riferisce alla fonte, qual è la differenza tra hub.docker.com/_/openjdk e hub.docker.com/_/adoptopenjdk ?
bcoughlan,

1
@bcoughlan Dovresti chiedere all'editore di questi due prodotti: Docker, Inc. Le tue pagine web collegate affermano che il secondo è gestito dal progetto AdoptOpenJDK, mentre il primo è gestito dalla "Community Docker". Il primo è fuorviante nell'uso del logo e della denominazione in quanto potrebbe averti dato l'impressione che il progetto OpenJDK lo abbia prodotto, il che non è il caso. Il primo potrebbe persino violare l' articolo 2 dell'avviso sul marchio dato da OpenJDK , ma io non sono un avvocato.
Basil Bourque,

1
@SanderVerhagen Puoi fornire un link a quella pagina di download sul sito OpenJDK? Non trovo tale offerta. Trovo un link ai binari Oracle OpenJDK JDK per Windows, macOS e Linux su un altro sito Web: jdk.java.net . Quel sito e i suoi download binari sono forniti per gentile concessione alla comunità da Oracle, non dal progetto OpenJDK. Come dice la home page : build di Java Development Kit, da Oracle . Mostro questo prodotto come la seconda bolla nella canna blu del mio diagramma di flusso, nell'angolo in alto a destra.
Basil Bourque,

1
@SanderVerhagen Il tuo link conduce a un sito Web diverso , come sospettavo, al di fuori di OpenJDK . Il sito jdk.java.net/14 è non è parte del sito web OpenJDK, né è parte del progetto OpenJDK. In altre parole, openjdk.java.net non è jdk.java.net . Ancora una volta, guarda le due bolle nella parte superiore della canna blu nel mio diagramma di flusso. Il prodotto Oracle in alto a sinistra è il loro prodotto commerciale. Il prodotto Oracle in alto a destra è la build gratuita con licenza GPL - il tuo link porta a questo particolare prodotto.
Basil Bourque,

1
@SanderVerhagen Sospetto che tu sia confuso dalla denominazione del prodotto. La parola "Java" è un marchio registrato di Oracle e può essere utilizzata solo con il loro permesso. La maggior parte dei venditori pertanto non utilizza tale marchio. Invece la maggior parte dei fornitori sta usando il termine "OpenJDK" come parte della loro denominazione, piuttosto che "Java". Questi fornitori stanno realizzando le loro build dal codice sorgente ottenuto dal progetto OpenJDK . Il progetto OpenJDK fornisce solo codice sorgente , non build, non programmi di installazione. Per un compilatore / installatore devi crearne uno tuo o ottenerne uno da un fornitore. Suggerisco di leggere Java Is Still Free .
Basil Bourque,
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.