UWAGA: To pytanie pochodzi z 2014 r. Począwszy od wersji Java 11 OpenJDK i Oracle JDK są zbieżne.
Czy są jakieś istotne różnice między Oracle a OpenJDK?
Na przykład, czy czyszczenie pamięci i inne parametry JVM są takie same?
Czy GC działa inaczej między nimi?
java
difference
użytkownik1340582
źródło
źródło
Odpowiedzi:
Zarówno OpenJDK, jak i Oracle JDK są tworzone i obsługiwane obecnie tylko przez Oracle.
OpenJDK i Oracle JDK są implementacjami tej samej specyfikacji Java, która przeszła przez TCK (Java Technology Certification Kit).
Większość dostawców JDK jest napisanych na OpenJDK, robiąc kilka ulepszeń w [głównie w celu zastąpienia licencjonowanych zastrzeżonych części / zastąpienia bardziej wydajnymi elementami, które działają tylko na określonych komponentach systemu operacyjnego] bez naruszenia kompatybilności TCK.
Wielu dostawców wdrożyło specyfikację Java i zdało TCK. Na przykład IBM J9, Azul Zulu, Azul Zing i Oracle JDK.
Prawie każdy istniejący JDK pochodzi z OpenJDK.
Jak sugeruje wielu, licencjonowanie jest zmianą między pakietami JDK.
Począwszy od JDK 11 uzyskującego dostęp do długoterminowego wsparcia Oracle JDK / Java SE będzie teraz wymagać licencji komercyjnej. Teraz powinieneś zwrócić uwagę na to, który JDK instalujesz, ponieważ Oracle JDK bez subskrypcji może przestać działać. źródło
Zobacz: Lista maszyn wirtualnych Java
źródło
W przypadku Java 7 nic nie jest istotne. Projekt OpenJDK opiera się głównie na kodzie źródłowym HotSpot podarowanym przez firmę Sun.
Co więcej, OpenJDK został wybrany jako referencyjna implementacja Java 7 i jest obsługiwany przez inżynierów Oracle.
Bardziej szczegółowa odpowiedź z 2012 roku na temat różnic między JVM, JDK, JRE i OpenJDK , która prowadzi do postu na blogu Oracle :
źródło
Kluczową różnicą w przyszłości jest harmonogram wydania i polityka wsparcia.
OpenJDK
OpenJDK będzie wypuszczać funkcję co 6 miesięcy, która jest obsługiwana tylko do następnej wersji funkcji. Zasadniczo jest to ciągły strumień wydań skierowanych do programistów.
Oracle JDK
Oracle JDK jest bardziej ukierunkowany na odbiorców biznesowych, którzy cenią stabilność. Opiera się na jednej z wersji OpenJDK, ale otrzymuje długoterminowe wsparcie (LTS). Wydania Oracle JDK są planowane co 3 lata.
Źródło: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events
źródło
W przypadku Javy 8 , Oracle JDK vs. OpenJDK moje podejście do głównych różnic:
OpenJDK to implementacja open source platformy Java Standard Edition z udziałem Oracle i społeczności Open Java.
OpenJDK jest wydany na licencji GPL v2, przy czym Oracle JDK jest licencjonowany na podstawie umowy licencyjnej Oracle Binary Code.
W rzeczywistości proces kompilacji Oracle JDK buduje się z kodu źródłowego OpenJDK. Nie ma więc istotnej różnicy technicznej między Oracle JDK a OpenJDK. Oprócz kodu bazowego Oracle JDK obejmuje implementację wtyczki Java i Java WebStart firmy Oracle. Obejmuje również komponenty zamknięte i otwarte źródła innych firm, takie jak odpowiednio rasterizer grafiki i Rhino . Renderer czcionek OpenJDK i rejestrator lotów Oracle JDK to zauważalne główne różnice między Oracle JDK a OpenJDK.
Pełna lista różnic znajduje się w artykule źródłowym: Oracle JDK vs OpenJDK i Java JDK Development Process
źródło
JVM Oracle i OpenJDK są takie same i mają te same funkcje GC (od najnowszych wersji 10+). Przed Oracle zarządzającym OpenJDK JVM istniały konkretne różnice, które sprawiły, że ten stary Openjdk JVM był prawie bezużyteczny w wielu środowiskach. JVM są teraz takie same.
Zestawy JDK, które zawierają JVM jako część zestawu, różnią się harmonogramem licencjonowania, wydania i konserwacji oraz bibliotekami oprogramowania zawartymi w JDK. Istotne dla mnie różnice oznaczają również rzeczy, które spowodowałyby, że kod nie działałby, gdyby nie był obecny. Nie tylko licencjonowanie.
Zasadniczo brakuje następujących plików oprócz kilku innych w Linuksie JDK (więc jeśli „twierdziłeś”, że kod nie działał w OpenJDK i zrobił to w OracleJDK podczas korzystania z javafx, to masz rację):
źródło
diff
?Według blogu Oracle , Oracle JDK prasowe dla Java 11 i nowszych
Począwszy od wersji Java 11, Oracle będzie dostarczać wersje JDK w ramach licencji Open Source GNU General Public License v2, z wyjątkiem Classpath Exception (GPLv2 + CPE) , a także w ramach licencji komercyjnej dla osób korzystających z Oracle JDK jako części produktu lub usługi Oracle, lub którzy nie chcą korzystać z oprogramowania typu open source. To połączenie używania licencji typu open source i licencji komercyjnej zastępuje historyczną licencję „ BCL ”, która zawierała kombinację bezpłatnych i płatnych warunków handlowych.
Dla każdej licencji zostaną udostępnione różne kompilacje, ale te kompilacje są funkcjonalnie identyczne, pomijając pewne różnice kosmetyczne i różnice w opakowaniu, opisane szczegółowo poniżej.
Od BCL do GPL
Licencja kodu binarnego na technologii Oracle Java SE ( „BCL”) został głównym licencja na technologii Oracle Java SE przez ponad dekadę. BCL zezwala na korzystanie bez opłat licencyjnych pod pewnymi warunkami. Aby uprościć dalsze działania, Oracle zaczął dostarczać kompilacje OpenJDK na licencji Open Source od wersji Java 9, używając tego samego modelu licencji co platforma Linux. Jeśli jesteś przyzwyczajony do otrzymywania plików binarnych Oracle Java SE za darmo, możesz to po prostu kontynuować dzięki kompilacjom OpenJDK Oracle dostępnym na stronie jdk.java.net . Jeśli jesteś przyzwyczajony do pobierania plików binarnych Oracle Java SE jako części komercyjnego produktu lub usługi Oracle, możesz nadal otrzymywać wersje Oracle JDK za pośrednictwem My Oracle Support (MOS) i innych lokalizacji.
Funkcjonalnie identyczne i wymienne ...
Licencjonowany przez Oracle BCL JDK historycznie zawierał „funkcje komercyjne”, które nie były dostępne w kompilacjach OpenJDK. Jednak zgodnie z obietnicą w ciągu ostatniego roku firma Oracle wniosła te funkcje do społeczności OpenJDK, w tym:
Dlatego od wersji Java 11 kompilacje Oracle JDK i kompilacje OpenJDK będą zasadniczo identyczne.
... ale z pewnymi różnicami kosmetycznymi i dotyczącymi pakowania
Pozostaje niewielka liczba różnic, niektóre celowe i kosmetyczne, a niektóre po prostu dlatego, że uzasadniony jest dłuższy czas na dyskusję z autorami OpenJDK.
Różnica ta pozostaje, aby zapewnić spójne wrażenia w przypadku określonych rodzajów starszych zastosowań. Moduły te są teraz dostępne osobno jako część OpenJFX , są teraz zarówno w OpenJDK, jak i Oracle JDK, ponieważ były to funkcje komercyjne, które Oracle przyczyniły się do OpenJDK (np. Flight Recorder), lub zostały usunięte z Oracle JDK 11 (np. JNLP) .
11 stycznia 2018-09-25
Środowisko wykonawcze Java (TM) SE 18.9 (kompilacja 11 + 28)
64-bitowy serwer VM HotSpot (TM) VM 18,9 (kompilacja 11 + 28, tryb mieszany)
A dla wersji OpenJDK 11:
wersja openjdk „11” 2018-09-25
Środowisko wykonawcze OpenJDK 18.9 (kompilacja 11 + 28)
Serwer OpenJDK 64-bit VM 18.9 (kompilacja 11 + 28, tryb mieszany)
źródło
Listę kilku pozostałych różnic kosmetycznych i opakowaniowych między Oracle JDK 11 a OpenJDK 11 można znaleźć w tym poście na blogu:
https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
W skrócie:
źródło
Z Java 11 zmieniamy się w dużą zmianę
Oracle zmieni swoją dotychczasową licencję „BCL” na kombinację licencji typu open source i licencji komercyjnej
Aktualizacja: 25 sierpnia 2019 r
po więcej szczegółów oracle-vs-openjdk
źródło
Oprócz oczywistej różnicy w licencjonowaniu, główną różnicą między OpenJDK a OracleJDK 11 są aktualizacje stabilności i wydajności.
Źródło: https://www.youtube.com/watch?v=Adv9--6IcQI&t=385
Co 6 miesięcy obie bazy kodów będą zsynchronizowane. Ale w 6-miesięcznym oknie OpenJDK będzie otrzymywać tylko aktualizacje zabezpieczeń, podczas gdy OracleJDK otrzyma dodatkowe aktualizacje dotyczące stabilności i wydajności.
Biorąc pod uwagę, że aktualizacje pojawiają się co 3 miesiące zarówno dla OpenJDK, jak i OracleJDK, oznacza to, że brakuje Ci (co najwyżej) 3 miesięcy poprawek do momentu pojawienia się kolejnej głównej wersji i aktualizacji. Jeśli jednak zdecydujesz się pozostać przy wersjach LTS, licencja komercyjna zaczyna mieć sens.
źródło
Również dla Javy 8 interesujący benchmarku wydajność dla reaktywnego (nieblokującą) Wiosna Boot aplikacja reszta jest utrzymywana na różnych JVMs przez AMIS Technologii Blog zostało opublikowane w listopadzie 2018 roku wykazujące, że wśród innych różnic:
Szczegółowe informacje można znaleźć w artykule źródłowym.
Oczywiście YMMV, to tylko jeden z punktów odniesienia.
źródło
Rozumiem, że Oracle JDK nie może być wykorzystywany w produkcji, dlatego nie mogę go legalnie używać (bez płacenia), dla aplikacji internetowej, którą tworzę dla mojej firmy. Muszę użyć OpenJDK. Proszę, popraw mnie jeśli się mylę! Z tego artykułu .
AKTUALIZACJA: Mylę się. Mogę używać Oracle JDK za darmo, ale nie otrzymam aktualizacji zabezpieczeń po 6 miesiącach i będziemy musieli podjąć ryzyko. Spójrz na powyższy link do artykułu „Co oznacza nowy ciąg wydań dla mojej firmy?”.
źródło