Rozdiely medzi Oracle JDK a OpenJDK

1. Úvod

V tomto článku sa budeme venovať rozdielom medzi Oracle Java Development Kit a OpenJDK. Najprv sa každý z nich rýchlo pozrieme a potom vykonáme porovnanie. Potom uvidíme zoznam ďalších implementácií JDK.

2. História Oracle JDK a Java SE

JDK (Java Development Kit) je vývojové prostredie softvéru používané pri programovaní platformy Java. Obsahuje úplné Java Runtime Environment, takzvané súkromné ​​runtime. Názov vzišiel zo skutočnosti, že obsahuje viac nástrojov ako samostatné JRE, ako aj ďalšie komponenty potrebné na vývoj aplikácií Java.

Spoločnosť Oracle dôrazne odporúča používať výraz JDK na označenie vývojovej súpravy Java SE (Standard Edition) (existujú aj platformy Enterprise Edition a Micro Edition).

Poďme sa pozrieť na históriu Java SE:

  • JDK Beta - 1995
  • JDK 1.0 - január 1996
  • JDK 1.1 - február 1997
  • J2SE 1.2 - december 1998
  • J2SE 1.3 - máj 2000
  • J2SE 1.4 - február 2002
  • J2SE 5.0 - september 2004
  • Java SE 6. - december 2006
  • Java SE 7 - júl 2011
  • Java SE 8 (LTS) - marec 2014
  • Java SE 9 - september 2017
  • Java SE 10 (18.3) - marec 2018
  • Java SE 11 (18,9 LTS) - september 2018
  • Java SE 12 (19.3) - marec 2019

Poznámka: verzie kurzívou už nie sú podporované.

Vidíme, že hlavné vydania Java SE prichádzali približne každé dva roky až do Java SE 7. Trvalo päť rokov, kým sme prešli z Java SE 6, a ďalšie tri, kým sme sa dostali k Java SE 8 neskôr.

Od verzie Java SE 10 môžeme očakávať nové vydania každých šesť mesiacov. Nie všetky vydania však budú vydaniami s dlhodobou podporou (LTS). Výsledkom plánu vydávania spoločnosti Oracle bude vydanie produktov LTS iba každé tri roky.

Java SE 11 je najnovšia verzia LTS a Java SE 8 bude dostávať bezplatné verejné aktualizácie až do decembra 2020 pre nekomerčné použitie.

Tento vývojový kit dostal svoje súčasné meno po tom, čo spoločnosť Oracle kúpila v roku 2010 spoločnosť Sun Microsystems. Predtým sa názov volal SUN JDK a bola to oficiálna implementácia programovacieho jazyka Java.

3. OpenJDK

OpenJDK je bezplatná a open-source implementácia Java SE Platform Edition. Pôvodne bola vydaná v roku 2007 ako výsledok vývoja, ktorý spoločnosť Sun Microsystems začala v roku 2006.

Určite by sme mali zdôrazniť, že: OpenJDK je oficiálna referenčná implementácia Java Standard Edition od verzie SE 7.

Spočiatku to bolo založené iba na JDK 7. Ale, od verzie Java 10 je za open-source referenčnú implementáciu platformy Java SE zodpovedný projekt JDK. A rovnako ako v prípade Oracle, aj v JDK Project bude každých šesť mesiacov k dispozícii nové verzie funkcií.

Mali by sme poznamenať, že pred týmto dlhodobým projektom existovali projekty JDK Release, ktoré vydali jednu funkciu a potom boli ukončené.

Pozrime sa teraz na verzie OpenJDK:

  • Projekt OpenJDK 6 - založený na JDK 7, ale upravený tak, aby poskytoval otvorenú verziu Java 6
  • Projekt OpenJDK 7 - 28. júla 2011
  • Projekt OpenJDK 7u - tento projekt vyvíja aktualizácie pre Java Development Kit 7
  • Projekt OpenJDK 8 - 18. marca 2014
  • Projekt OpenJDK 8u - tento projekt vyvíja aktualizácie pre Java Development Kit 8
  • Projekt OpenJDK 9 - 21. septembra 2017
  • Vydanie projektu JDK 10. - 20. marca 2018
  • Vydanie projektu JDK 11. - 25. septembra 2018
  • Vydanie projektu JDK 12 - fáza stabilizácie

4. Oracle JDK vs. OpenJDK

V tejto časti sa zameriame na kľúčové rozdiely medzi Oracle JDK a OpenJDK.

4.1. Časový plán uvoľnenia

Ako sme už spomenuli, Oracle bude vydávať vydania každé tri roky, zatiaľ čo OpenJDK vyjde každých šesť mesiacov.

Spoločnosť Oracle poskytuje svojim vydaniam dlhodobú podporu. Na druhej strane OpenJDK podporuje zmeny vo vydaní až do vydania ďalšej verzie.

4.2. Licencie

Spoločnosť Oracle JDK bola licencovaná na základe licenčnej zmluvy s binárnym kódom Oracle, keďže OpenJDK má GNU General Public License (GNU GPL) verzie 2 s výnimkou odkazov.

Pri používaní platformy Oracle existujú určité licenčné dôsledky. Verejné aktualizácie pre Oracle Java SE 8 vydané po januári 2019 nebudú dostupné pre obchodné, komerčné alebo produkčné použitie bez komerčnej licencie, ako oznámila spoločnosť Oracle. OpenJDK je však úplne otvorený zdrojový kód a je možné ho voľne používať.

4.3. Výkon

Existuje medzi nimi nie je žiadny skutočný technický rozdiel, pretože proces zostavovania Oracle JDK je založený na procese OpenJDK.

Pokiaľ ide o výkon, Oracle je oveľa lepší, pokiaľ ide o odozvu a výkon JVM. Dôraz kladie viac na stabilitu kvôli dôležitosti, ktorú dáva svojim podnikovým zákazníkom.

OpenJDK bude naopak vydávať vydania častejšie. Vo výsledku sa môžeme stretnúť s problémami s nestabilitou. Na základe spätnej väzby od komunity vieme, že niektorí používatelia OpenJDK narazili na problémy s výkonom.

4.4. Vlastnosti

Ak porovnáme funkcie a možnosti, uvidíme, že Produkt Oracle má Flight Recorder, Java Mission Control a Application Class-Data SharingVlastnosti, zatiaľ čo OpenJDK má funkciu Font Renderer.

Tiež Oracle má viac možností Garbage Collection a lepšie vykresľovače.

4.5. Rozvoj a popularita

Oracle JDK je plne vyvinutý spoločnosťou Oracle Corporation keďže OpenJDK je vyvíjaný spoločnosťami Oracle, OpenJDK a Java Community. Na jeho vývoji sa však aktívne podieľajú aj špičkové spoločnosti ako Red Hat, Azul Systems, IBM, Apple Inc., SAP AG.

Ako vidíme z odkazu z predchádzajúcej podsekcie, pokiaľ ide o popularita medzi najlepšími spoločnosťami, ktoré vo svojich nástrojoch používajú vývojové sady Java, ako Android Studio alebo IntelliJ IDEA, predtým bol preferovaný Oracle JDK, ale obaja prešli na zostavy JetBrains založené na OpenJDK.

Na druhej strane, hlavné distribúcie Linuxu (Fedora, Ubuntu, Red Hat Enterprise Linux) poskytujú OpenJDK ako predvolenú implementáciu Java SE.

5. Zmeny od Javy 11

Ako vidíme v blogovom príspevku spoločnosti Oracle, od verzie Java 11 existujú niektoré dôležité zmeny.

Po prvé, Spoločnosť Oracle zmení svoju historickú licenciu „BCL“ kombináciou open source GNU General Public License v2, s výnimkou Classpath Exception (GPLv2 + CPE) a komerčnou licenciou keď používate Oracle JDK ako súčasť produktu alebo služby Oracle, alebo keď softvér s otvoreným zdrojovým kódom nie je vítaný.

Každá licencia bude mať odlišné verzie, ale tie budú funkčne identické, budú mať iba určité kozmetické a baliace rozdiely.

V OpenJDK sú teraz k dispozícii aj tradične „komerčné funkcie“, ako sú Flight Recorder, Java Mission Control a Application Class-Data Sharing, ako aj Z Garbage Collector. Preto Verzie Oracle JDK a OpenJDK sú od verzie Java 11 v podstate identické.

Pozrime sa na hlavné rozdiely:

  • Sada Oracle pre technológiu Java 11 vydáva varovanie pri použití -XX: + UnlockCommercialFeatures zatiaľ čo v zostavách OpenJDK má táto možnosť za následok chybu
  • Oracle JDK ponúka konfiguráciu na poskytovanie údajov protokolu o použití nástroju „Advanced Management Console“
  • Spoločnosť Oracle vždy vyžadovala, aby boli poskytovatelia kryptografických služieb tretích strán podpísaní známym certifikátom, zatiaľ čo kryptografický rámec v OpenJDK má otvorené kryptografické rozhranie, čo znamená, že neexistuje nijaké obmedzenie, pokiaľ ide o to, ktorých poskytovateľov je možné použiť.
  • Oracle JDK 11 bude aj naďalej zahŕňať inštalačné programy, budovanie značiek a obaly JRE, zatiaľ čo verzie OpenJDK sú v súčasnosti k dispozícii ako PSČ a tar.gz súbory
  • The javac - vydanie príkaz sa správa odlišne pre ciele Java 9 a Java 10 kvôli prítomnosti niektorých ďalších modulov vo vydaní Oracle
  • Výstupom z java - verzia a java - plná verzia príkazy rozlíšia zostavy Oracle od zostáv OpenJDK

6. Ďalšie implementácie JDK

Poďme sa teraz rýchlo pozrieť na ďalšie aktívne implementácie Java Development Kit.

6.1. Zadarmo a otvorený zdroj

Nasledujúce implementácie, uvedené v abecednom poradí, sú open source a dajú sa zadarmo použiť:

  • AdoptOpenJDK
  • Amazon Corretto
  • Azul Zulu
  • Bck2Brwsr
  • CACAO
  • Codename One
  • DoppioJVM
  • Eclipse OpenJ9
  • GraalVM CE
  • HaikuVM
  • HotSpot
  • Jamiga
  • JamVM
  • Jelatín JVM
  • Jikes RVM (Jikes Research Virtual Machine)
  • JVM.go
  • leJOS
  • Maxine
  • Multi-OS Engine
  • RopeVM
  • uJVM

6.2. Patentované implementácie

Existujú aj implementácie chránené autorskými právami:

  • Azul Zing JVM
  • CEE-J
  • Excelsior JET
  • GraalVM EE
  • Imsys AB
  • JamaicaVM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T - priemyselná inteligentná softvérová technológia)
  • OJVM
  • PTC Perc
  • SAP JVM
  • Waratek CloudVM pre Java

Spolu s vyššie uvedenými aktívnymi implementáciami vidíme zoznam neaktívnych implementácií a krátky popis každej implementácie.

7. Záver

V tomto článku sme sa zamerali na dve najpopulárnejšie vývojové súpravy Java súčasnosti.

Najprv sme opísali každý z nich a potom sme zdôraznili najpozoruhodnejšie rozdiely medzi nimi. Potom sme venovali osobitnú pozornosť zmenám a rozdielom od verzie Java 11. Nakoniec sme uviedli ďalšie aktívne implementácie, ktoré sú dnes k dispozícii.