W skrócie:
- OpenJDK ma wiele znaczeń i może odnosić się do:
- darmowa i otwarta implementacja platformy Java, Standard Edition (Java SE)
- repozytorium open source - kod źródłowy Java znany jako projekt OpenJDK
- gotowe pliki binarne OpenJDK obsługiwane przez Oracle
- gotowe pliki binarne OpenJDK utrzymywane przez społeczność OpenJDK
- AdoptOpenJDK - gotowe pliki binarne OpenJDK obsługiwane przez społeczność ( licencja open source )
Wyjaśnienie:
Prebuilt OpenJDK (lub dystrybucja) - pliki binarne, zbudowane z http://hg.openjdk.java.net/ , dostarczane jako archiwum lub instalator, oferowane na różne platformy, z możliwą umową wsparcia.
OpenJDK, repozytorium źródłowe (zwane także projektem OpenJDK ) - jest repozytorium open source opartym na Mercurial , hostowanym pod
adresem http://hg.openjdk.java.net . Kod źródłowy Java. Zdecydowana większość funkcji Java (od maszyny wirtualnej i podstawowych bibliotek po kompilator) opiera się wyłącznie na tym repozytorium źródłowym. Oracle ma alternatywny rozwidlenie tego.
OpenJDK, dystrybucja (patrz lista dostawców poniżej) - jest bezpłatna jak w piwie i jakby wolna jak w mowie , ale nie możesz dzwonić do Oracle, jeśli masz z tym problemy. Nie ma umowy serwisowej. Ponadto Oracle będzie wydawać aktualizacje do dowolnej wersji OpenJDK (dystrybucyjnej) tylko wtedy, gdy ta wersja jest najnowszą wersją Java, w tym wydania LTS (długoterminowe wsparcie techniczne). W dniu, w którym Oracle wypuści OpenJDK (dystrybucja) w wersji 12.0, nawet jeśli wystąpi problem z bezpieczeństwem w OpenJDK (dystrybucja) w wersji 11.0, Oracle nie wyda aktualizacji do 11.0. Utrzymywane wyłącznie przez Oracle.
Niektóre projekty OpenJDK - takie jak OpenJDK 8 i OpenJDK 11 - są obsługiwane przez społeczność OpenJDK i zapewniają wydania dla niektórych wersji OpenJDK dla niektórych platform. Członkowie społeczności wzięli na siebie odpowiedzialność za wydanie poprawek dla luk w zabezpieczeniach w tych wersjach OpenJDK.
AdoptOpenJDK, dystrybucja jest bardzo podobna do dystrybucji Oracle OpenJDK (w tym, że jest darmowa i jest kompilacją utworzoną przez kompilację źródeł z repozytorium źródeł OpenJDK). AdoptOpenJDK jako jednostka nie będzie backportować łatek, tj. Nie będzie „rozwidlenia / wersji” AdoptOpenJDK, która różni się istotnie od upstream (z wyjątkiem niektórych łatek skryptów kompilacji dla rzeczy takich jak obsługa Win32). Oznacza to, że jeśli członkowie społeczności (Oracle lub inni, ale nie AdoptOpenJDK jako jednostka) zgłaszają poprawki bezpieczeństwa do aktualizacji wersji OpenJDK LTS, wówczas AdoptOpenJDK dostarczy kompilacje dla nich. Utrzymywane przez społeczność OpenJDK.
OracleJDK - to kolejna dystrybucja. Począwszy od JDK12 nie będzie bezpłatnej wersji OracleJDK. Oferta dystrybucyjna Oracle JDK jest przeznaczona do wsparcia komercyjnego. Płacisz za to, ale wtedy możesz polegać na Oracle w zakresie wsparcia. W przeciwieństwie do oferty Oracle OpenJDK, OracleJDK zapewnia dłuższą obsługę wersji LTS. Jako programista możesz uzyskać bezpłatną licencję do użytku osobistego / programistycznego tylko dla tego konkretnego JDK, ale jest to głównie czerwony śledź, ponieważ „tylko plik binarny” jest zasadniczo taki sam jak plik binarny OpenJDK. Wydaje mi się, że oznacza to, że można pobrać wersje LTS JDK z poprawkami bezpieczeństwa ze stron internetowych Oracle, o ile obiecasz nie używać ich w celach komercyjnych.
Uwaga . Najlepiej byłoby nazwać kompilacje OpenJDK firmy Oracle „kompilacjami Oracle OpenJDK”.
Donald Smith, menedżer produktu Java w Oracle, pisze :
Idealnie byłoby po prostu nazywać wszystkie kompilacje Oracle JDK jako „Oracle JDK” na licencji GPL lub komercyjnej, w zależności od sytuacji. Jednak ze względów historycznych, chociaż istnieją niewielkie pozostałe różnice, będziemy nazywać je oddzielnie jako kompilacje Oracle OpenJDK i Oracle JDK.
Dostawcy i porównanie OpenJDK
-------------------------------------------------- --------------------------------------
| Dostawca | Darmowe kompilacje | Darmowy plik binarny | Rozszerzony | Komercyjne | Pozwalające |
| | ze źródła | Dystrybucje | Aktualizacje | Wsparcie | Licencja |
| ------------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | Tak | Tak | Tak | Nie | Tak |
| Amazon - Corretto | Tak | Tak | Tak | Nie | Tak |
| Azul Zulu | Nie | Tak | Tak | Tak | Tak |
| BellSoft Liberica | Nie | Tak | Tak | Tak | Tak |
| IBM | Nie | Nie | Tak | Tak | Tak |
| jClarity | Nie | Nie | Tak | Tak | Tak |
| OpenJDK | Tak | Tak | Tak | Nie | Tak |
| Oracle JDK | Nie | Tak | Nie ** | Tak | Nie |
| Oracle OpenJDK | Tak | Tak | Nie | Nie | Tak |
| ojdkbuild | Tak | Tak | Nie | Nie | Tak |
| RedHat | Tak | Tak | Tak | Tak | Tak |
| SapMachine | Tak | Tak | Tak | Tak | Tak |
-------------------------------------------------- --------------------------------------
Darmowe kompilacje ze źródła - kod źródłowy dystrybucji jest publicznie dostępny i można złożyć własną kompilację
Darmowe dystrybucje binarne - pliki binarne dystrybucji są publicznie dostępne do pobrania i użytkowania
Rozszerzone aktualizacje - aka LTS (wsparcie długoterminowe) - publiczne aktualizacje wykraczające poza 6-miesięczny cykl życia wydania
Wsparcie komercyjne - niektórzy dostawcy oferują rozszerzone aktualizacje i wsparcie dla klientów płacących, np. Oracle JDK ( szczegóły pomocy )
Licencja zezwalająca - licencja dystrybucyjna nie zapewnia ochrony, np. Apache 2.0
Której dystrybucji Java powinienem użyć?
W czasach Sun / Oracle to zwykle Sun / Oracle produkowało własne dystrybucje JDK na podstawie źródeł OpenJDK. Niedawno firma Oracle zdecydowała się tworzyć własne zastrzeżone kompilacje tylko z dołączonym wsparciem komercyjnym. Łaskawie publikują również kompilacje OpenJDK na swojej stronie https://jdk.java.net/ .
Zaczynając od JDK 11, następuje przejście od nastawienia jednego dostawcy (Oracle) do sposobu myślenia, w którym wybierasz dostawcę, który zapewnia dystrybucję produktu, na warunkach, które lubisz: platformy, dla których budują, częstotliwość i terminowość wydań , struktura wsparcia itp. Jeśli nie ufasz żadnemu z istniejących dostawców, możesz nawet samodzielnie zbudować OpenJDK.
Każda kompilacja OpenJDK jest zwykle tworzona z tego samego oryginalnego repozytorium źródłowego (OpenJDK „projekt”). Jednak każda kompilacja jest dość wyjątkowa - bezpłatna lub komercyjna, markowa lub niemarkowa, czysta lub w pakiecie (np. BellSoft Liberica JDK oferuje pakiet JavaFX, który został usunięty z kompilacji Oracle począwszy od JDK 11).
Jeśli żadne środowisko (np. Linux) i / lub wymagania licencyjne nie definiują konkretnej dystrybucji i jeśli chcesz najbardziej standardowej kompilacji JDK, prawdopodobnie najlepszą opcją jest użycie OpenJDK firmy Oracle lub AdoptOpenJDK.
Dodatkowe informacje
Czas wyjść poza JDK Oracle autorstwa Stephena Colebourne'a
Java jest nadal bezpłatna od społeczności Java Champions (opublikowana 17 września 2018 r.)
Java jest nadal bezpłatna w wersji 2.0.0 autorstwa społeczności Java Champions (opublikowano 3 marca 2019 r.)
Aleksey Shipilev o aktualizacjach JDK Wywiad przeprowadzony przez Opsian (opublikowany 27 czerwca 2019)