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.
- Oracle JDK 11 emituje ostrzeżenie podczas korzystania z opcji -XX: + UnlockCommercialFeatures, podczas gdy w kompilacjach OpenJDK ta opcja powoduje błąd. Ta opcja nigdy nie była częścią OpenJDK i nie ma sensu dodawać jej teraz, ponieważ w OpenJDK nie ma żadnych funkcji komercyjnych. Ta różnica pozostaje, aby ułatwić użytkownikom Oracle JDK 10 i wcześniejszych wersji migrację do Oracle JDK 11 i nowszych.
- Oracle JDK 11 można skonfigurować tak, aby dostarczał dane dziennika użytkowania do narzędzia „ Advanced Management Console ”, które jest oddzielnym komercyjnym produktem Oracle. Będziemy współpracować z innymi uczestnikami OpenJDK, aby omówić, w jaki sposób takie dane o użytkowaniu mogą być przydatne w OpenJDK, jeśli w ogóle. Ta różnica pozostaje przede wszystkim w celu zapewnienia spójnego doświadczenia klientom Oracle do czasu podjęcia takich decyzji.
- Komenda javac --release zachowuje się inaczej w przypadku celów Java 9 i Java 10, ponieważ w tych wersjach Oracle JDK zawierał dodatkowe moduły, które nie były częścią odpowiednich wersji 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
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) .
- Dane wyjściowe poleceń java --version i java -fullversion odróżnią kompilacje Oracle JDK od kompilacji OpenJDK, dzięki czemu zespoły wsparcia mogą zdiagnozować wszelkie problemy, które mogą wystąpić. W szczególności uruchomienie wersji Java z wersją Oracle JDK 11 powoduje:
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)
- Oracle JDK zawsze wymagał podpisania przez zewnętrznych dostawców usług kryptograficznych znanym certyfikatem. Struktura kryptografii w OpenJDK ma otwarty interfejs kryptograficzny, co oznacza, że nie ogranicza to dostawców, których można użyć. Oracle JDK 11 będzie nadal wymagał prawidłowego podpisu, a kompilacje Oracle OpenJDK będą nadal pozwalały na użycie ważnego podpisu lub niepodpisanego zewnętrznego dostawcy kryptografii.
- Oracle JDK 11 będzie nadal zawierał instalatory, branding i pakiet JRE, aby zapewnić spójność ze starszymi aplikacjami komputerowymi. Kompilacje Oracle OpenJDK są obecnie dostępne jako pliki zip i tar.gz, podczas gdy rozważane są alternatywne formaty dystrybucji.