Java – licencjonowanie i wersjonowanie

W artykule zostanie poruszony temat licencjonowania i wersjonowania Javy. Może nie jest to już dość huczny temat, ale nadal jest poruszany podczas aktualizacji wersji Javy na zapomnianych serwerach lub utrzymując stare aplikacje.

W tym artykule znajdziesz odpowiedzi na poniższe pytania:

  • Jaką funkcję pełni Oracle w Javie?
  • Kim są vendorzy, sponsor, stewardzi i zespół OpenJDK?
  • Czym się różni OracleJDK od OpenJDK?
  • Czy Java jest płatna?

Produkt dostępny jest dla wielu systemów operacyjnych. Został utworzony przez firmę Sun, a którego obecnym właścicielem jest Oracle Corporation. Wyróżnia się kilka platform Javy: Standard Edition, Enterprise Edition, Micro Edition. Skupimy się jedynie na edycji standardowej (Java Platform, Standard Edition – zwana wcześniej jako J2SE).

Wersjonowanie

Jeszcze do roku 2017 nowe wersje były wypuszczane w przedziale mniej więcej co 5 lat. Do 2017 roku, ostatnią wersją była Java 8 z 2014 roku. Dopiero w 2017 roku została wypuszczona Java w wersji 9 podczas której zmieniło się podejście do wersjonowania i licencjonowania Javy. W roku 2018 doczekaliśmy się pierwszej Javy 11 w wersji LTS na nowych zasadach.

Wraz z wypuszczeniem Javy 9 zmienił się sposób wersjonowania i wypuszczania nowych wersji Java. Zostało ogłoszone, że nowe wersje będę udostępniane dwa razy w roku z krótkim wsparciem oraz co trzy lata z wydłużonym wsparciem. Firma Oracle zapowiedziała, że będzie wspierała Java 8 do 2022 roku, a Java 11 do 2023 roku, z możliwością wykupienia dodatkowego rozszerzonego wsparcia. Oczywiście okres wsparcia już ściśle zależy od dostawcy JDK.

Plan pomocy technicznej Oracle Java SE
Plan pomocy technicznej AdoptOpenJDK

Format wersji

Jeszcze nie dawno, firma Oracle udostępniała wersje Javy w następującym nazewnictwie: 1.6, 1.7, 1.8. Od wersji 9, kolejne paczki będą przyjmowały następujący szablon:

$MAJOR.$MINOR.$SECURITY.$PATCH

$MAJOR to numer wersji, który jest zwiększany w przypadku wydania głównego. Nowe funkcjonalności są planowane i zgłaszane z dużym wyprzedzeniem.

$MINOR to numer wersji, który jest zwiększany dla każdej drobnej aktualizacji, takiej jak poprawki błędów lub poprawki standardowych interfejsów API.

$SECURITY to numer wersji, który jest zwiększany w przypadku wydania aktualizacji zabezpieczeń, które zawierają krytyczne poprawki.

$PATCH to numer wersji, który jest zwiększany w przypadku wydania zawierającego poprawki bezpieczeństwa i poprawki klienta o wysokim priorytecie.

Twórcy

Często można spotkać się z zdaniem typu „Oracle jest właścicielem Java”. Aby przejść do tematu licencjonowania Java, należy zrozumieć jaką rolę pełni Oracle oraz należy wyjaśnić kilka innych ról, które są istotne podczas wytwarzania platformy Java SE. Wyróżniamy:

  • stewardzi i zespół OpenJDK– osoby odpowiedzialne za rozwój i tworzenie platformy Java SE. Etatowi pracownicy sponsora. Wytwarzają źródła OpenJDK.
  • sponsor – Oracle Corporation, czyli firma, która sponsoruje deweloperów implementujących OpenJDK.
  • vendorzy – inne podmioty, które korzystając ze źródeł OpenJDK budują, udostępniają i wspierają binarne dystrybucje JDK. Popularni vendorzy:
    • Oracle – produkt: OracleJDK
    • AdoptOpenJDK – produkt: AdoptOpenJDK
    • Red Hat – produkt: Red Hat OpenJdk
    • Amazon – produkt: Amazon Correto
    • SAP – produkt: Sapmachine
Dystrybucje OpenJDK

OracleJDK vs OpenJDK

Warto zaznaczyć, że referencyjną implementacją jest OpenJDK. Źródła OpenJDK są udostępniane na licencji GPLv2+CE i każdy może swobodnie pobierać źródła i budować własne pliki binarne JDK. Jak prawie każda dystrybucja jest budowana na podstawie OpenJDK, a więc OracleJDK tak samo. Od strony technicznej nie ma pomiędzy tymi wersjami różnic, ale istnieją różnice pod względem supportu, a co za tym idzie to wydajność i bezpieczeństwo.

Licencjonowanie

Firma Oracle zapowiedziała, że Java będzie darmowa tylko do wytwarzania i testowania oprogramowania. Od stycznia 2019 roku nie będzie już publikowała aktualizacji do użytku komercyjnego. Produkt Java nie będzie już udostępniany na licencji Binary Code License, ale na licencji komercyjnej Oracle Technology Network License. Zgodnie z zasadami licencji to „licencja ta nie zezwala na używanie Javy do jakiegokolwiek użytku komercyjnego takiego jak procesowanie danych, używanie w systemach produkcyjnych czy do innych aplikacji biznesowych używanych wewnątrz firmy”. Tutaj trzeba zaznaczyć, że licencjonowanie dotyczy OracleJDK, czyli dystrybucji, którego vendorem jest Oracle.

W przypadku używania Javy (OracleJDK) produkcyjnie trzeba będzie zakupić subskrypcję od firmy Oracle lub skorzystać z innych podmiotów, które korzystając ze źródeł OpenJDK za darmo udostępniają i wspierają binarne dystrybucje JDK. Jednym z takich podmiotów jest AdoptOpenJDK.

Zdarzają się przypadki, gdzie na serwerze produkcyjnym używane są aplikacje, które korzystają z starszych wersji Javy od OracleJDK. Co w takim przypadku? Dopóki, nie zdecydujemy się na aktualizację, to nie musimy martwić się opłatami, ponieważ zainstalowana dystrybucja nadal posiada licencję Binary Code License.


Ciekawe artykuły

  1. M. Waksmański, Czy Java jest nadal darmowa? Jeśli nie, to co teraz? Które JDK wybrać?, https://devrev.pl/czy-java-jest-nadal-darmowa/
  2. Oracle Corporation, Version-String Format, https://docs.oracle.com/javase/9/install/version-string-format.htm
  3. J. Tokarski, „Płatna Java” podana na zimno, https://www.pgs-soft.com/pl/blog/platna-java-podana-na-zimno/
  4. Ardit Ymeri, An Overview of JDK Vendors, https://dzone.com/articles/an-overview-on-jdk-vendors

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *