Razlike između Oracle JDK i OpenJDK

1. Uvod

U ovom ćemo članku istražiti razlike između Oracle Java Development Kit i OpenJDK. Prvo ćemo na brzinu pogledati svakog od njih, a zatim napraviti usporedbu. Nakon toga vidjet ćemo popis ostalih JDK implementacija.

2. Oracle JDK i Java SE povijest

JDK (Java Development Kit) je razvojno okruženje softvera koje se koristi u programiranju Java platforme. Sadrži kompletno Java Runtime Environment, takozvano privatno runtime. Naziv je potekao iz činjenice da sadrži više alata nego samostalni JRE, kao i ostale komponente potrebne za razvoj Java aplikacija.

Oracle toplo preporučuje upotrebu izraza JDK za pozivanje na Java SE (Standard Edition) Development Kit (postoje i platforme Enterprise Edition i Micro Edition).

Pogledajmo povijest Java SE:

  • JDK Beta - 1995
  • JDK 1.0 - siječanj 1996
  • JDK 1.1 - veljača 1997
  • J2SE 1.2 - prosinac 1998
  • J2SE 1.3 - svibanj 2000
  • J2SE 1.4 - veljača 2002
  • J2SE 5.0 - rujan 2004
  • Java SE 6. - prosinac 2006
  • Java SE 7. - srpanj 2011
  • Java SE 8 (LTS) - ožujak 2014
  • Java SE 9. - rujan 2017
  • Java SE 10 (18.3) - ožujak 2018
  • Java SE 11 (18,9 LTS) - rujan 2018
  • Java SE 12 (19.3) - ožujak 2019

Napomena: inačice u kurzivu više nisu podržane.

Možemo vidjeti da su glavna izdanja Java SE izlazila otprilike svake dvije godine do Java SE 7. Trebalo je pet godina da se pređe s Jave SE 6, a još tri da bi nakon toga došle na Java SE 8.

Od Jave SE 10, nova izdanja možemo očekivati ​​svakih šest mjeseci. Međutim, neće sva izdanja biti izdanja s dugotrajnom podrškom (LTS). Kao rezultat Oraclovog plana izlaska, izdanja LTS proizvoda dogodit će se samo svake tri godine.

Java SE 11 najnovija je LTS verzija, a Java SE 8 primat će besplatna javna ažuriranja do prosinca 2020. za nekomercijalnu upotrebu.

Ovaj razvojni komplet dobio je svoje trenutno ime nakon što je Oracle kupio Sun Microsystems 2010. Prije toga, ime je bilo SUN JDK, i to je bila službena implementacija programskog jezika Java.

3. OpenJDK

OpenJDK je besplatna i open-source implementacija izdanja Java SE Platform Edition. Prvotno je objavljen 2007. godine kao rezultat razvoja koji je Sun Microsystems započeo 2006. godine.

Svakako bismo trebali naglasiti da OpenJDK je službena referentna implementacija Java Standard Edition od verzije SE 7.

U početku se temeljio samo na JDK 7. Ali, od Jave 10, za implementaciju referentnog koda otvorenog koda Java SE platforme odgovoran je JDK projekt. I, baš kao i za Oracle, JDK projekt također će isporučivati ​​nova izdanja značajki svakih šest mjeseci.

Moramo napomenuti da su prije ovog dugotrajnog projekta postojali JDK projekti izdavanja koji su objavili jednu značajku, a zatim su ukinuti.

Pogledajmo sada verzije OpenJDK:

  • Projekt OpenJDK 6 - zasnovan na JDK 7, ali izmijenjen kako bi pružio otvorenu verziju Jave 6
  • Projekt OpenJDK 7 - 28. srpnja 2011
  • Projekt OpenJDK 7u - ovaj projekt razvija ažuriranja Java Development Kit 7
  • OpenJDK 8 projekt - 18. ožujka 2014
  • Projekt OpenJDK 8u - ovaj projekt razvija ažuriranja Java Development Kit 8
  • Projekt OpenJDK 9 - 21. rujna 2017
  • Izdanje JDK projekta 10. - 20. ožujka 2018
  • Izdanje JDK projekta 11. - 25. rujna 2018
  • Izdanje projekta JDK 12 - Faza stabilizacije

4. Oracle JDK protiv OpenJDK

U ovom ćemo se dijelu usredotočiti na ključne razlike između Oracle JDK i OpenJDK.

4.1. Raspored izdavanja

Kao što smo spomenuli, Oracle će izdavati svake tri godine, dok OpenJDK izlazi svakih šest mjeseci.

Oracle pruža dugoročnu podršku za svoja izdanja. S druge strane, OpenJDK podržava promjene u izdanju samo dok ne izađe sljedeća verzija.

4.2. Licence

Oracle JDK licenciran je prema Ugovoru o licenciranju binarnog koda Oracle, dok OpenJDK ima GNU General Public License (GNU GPL) verziju 2 s iznimkom povezivanja.

Postoje neke implikacije na licenciranje pri korištenju Oracleove platforme. Javna ažuriranja za Oracle Java SE 8 objavljena nakon siječnja 2019. neće biti dostupna za poslovnu, komercijalnu ili proizvodnu upotrebu bez komercijalne licence, kao što je najavio Oracle. Međutim, OpenJDK je potpuno otvoren izvor i može se slobodno koristiti.

4.3. Izvođenje

Tamo je nema stvarne tehničke razlike između njih dvije jer se postupak izrade za Oracle JDK temelji na onom OpenJDK.

Što se tiče izvedbe, Oracle je puno bolji s obzirom na reaktivnost i JVM performanse. Više se usredotočuje na stabilnost zbog važnosti koju daje svojim poslovnim kupcima.

Nasuprot tome, OpenJDK će izdanja izdavati češće. Kao rezultat, možemo naići na probleme s nestabilnošću. Na temelju povratnih informacija zajednice znamo da su se neki korisnici OpenJDK susreli s problemima u izvedbi.

4.4. Značajke

Ako usporedimo značajke i opcije, vidjet ćemo da je Oracleov proizvod sadrži Flight Recorder, Java Mission Control i Application Class-Data Sharingznačajke, dok OpenJDK ima značajku Font Renderer.

Također, Oracle ima više mogućnosti prikupljanja smeća i bolje prikazivače.

4.5. Razvoj i popularnost

Oracle JDK u potpunosti je razvila tvrtka Oracle Corporation dok je OpenJDK su razvili Oracle, OpenJDK i Java zajednica. Međutim, vrhunske tvrtke poput Red Hat, Azul Systems, IBM, Apple Inc., SAP AG također aktivno sudjeluju u njegovom razvoju.

Kao što vidimo iz poveznice iz prethodnog pododjeljka, kada je riječ o popularnost kod vodećih tvrtki koje u svojim alatima koriste Java programe za razvoj, kao što su Android Studio ili IntelliJ IDEA, Oracle JDK nekad je bio poželjniji, ali obojica su prešla na izrade JetBrains temeljene na OpenJDK-u.

S druge strane, glavne distribucije Linuxa (Fedora, Ubuntu, Red Hat Enterprise Linux) nude OpenJDK kao zadanu implementaciju Java SE.

5. Promjene od Jave 11

Kao što možemo vidjeti u Oracleovom blogu, postoje neke važne promjene počevši od Jave 11.

Kao prvo, Oracle će promijeniti svoju povijesnu “BCL” licencu kombinacijom otvorenog koda GNU General Public License v2, s Classpath Exception (GPLv2 + CPE) i komercijalnom licencom kada koristite Oracle JDK kao dio Oracle proizvoda ili usluge ili kada softver otvorenog koda nije dobrodošao.

Svaka licenca imat će različite građe, ali one će biti funkcionalno identične sa samo nekim kozmetičkim i razlikama u pakiranju.

Također, tradicionalne "komercijalne značajke" poput Flight Recorder, Java Mission Control i Application Class-Data Data Sharing, kao i Z Garbage Collector, sada su dostupne u OpenJDK. Stoga, Izrade Oracle JDK i OpenJDK u osnovi su identične od Jave 11 nadalje.

Provjerimo glavne razlike:

  • Oracleov komplet za Javu 11 emitira upozorenje kada se koristi -XX: + OtključajKomercijalne značajke opcija, dok u gradnjama OpenJDK ova opcija rezultira pogreškom
  • Oracle JDK nudi konfiguraciju za pružanje podataka dnevnika korištenja alatu „Advanced Management Console“
  • Oracle je uvijek tražio da nezavisni kriptografski pružatelji usluga budu potpisani poznatim certifikatom, dok kriptografski okvir u OpenJDK ima otvoreno kriptografsko sučelje, što znači da nema ograničenja koji se dobavljači mogu koristiti
  • Oracle JDK 11 i dalje će uključivati ​​instalacijske programe, brendiranje i JRE pakiranje, dok su OpenJDK verzije trenutno dostupne kao zip i katran.gz datoteke
  • The javac –objava naredba ponaša se različito za ciljeve Java 9 i Java 10 zbog prisutnosti nekih dodatnih modula u Oraclovom izdanju
  • Rezultat java –verzija i java -fullverzija naredbe će razlikovati Oracleove gradnje od OpenJDK gradnji

6. Ostale provedbe JDK

Pogledajmo sada ostale aktivne implementacije Java Kit za razvoj.

6.1. Besplatni i otvoreni kod

Sljedeće su implementacije, abecednim redom, otvoreni su i besplatni za upotrebu:

  • UsvojiOpenJDK
  • Amazon Corretto
  • Azul Zulu
  • Bck2Brwsr
  • KAKAO
  • Kodno ime Jedan
  • DoppioJVM
  • Eclipse OpenJ9
  • GraalVM CE
  • HaikuVM
  • HotSpot
  • Jamiga
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Jikes Research Virtual Machine)
  • JVM.go
  • leJOS
  • Maxine
  • Multi-OS Engine
  • UžeVM
  • uJVM

6.2. Vlasničke provedbe

Postoje i implementacije zaštićene autorskim pravima:

  • Azul Zing JVM
  • CEE-J
  • Excelsior JET
  • GraalVM EE
  • Imsys AB
  • JamajkaVM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T - Industrijska pametna softverska tehnologija)
  • OJVM
  • PTC Proc
  • SAP JVM
  • Waratek CloudVM za Javu

Uz gore navedene aktivne implementacije, možemo vidjeti popis neaktivnih implementacija i kratki opis svake implementacije.

7. Zaključak

U ovom smo se članku usredotočili na dva najpopularnija Java razvojna seta danas.

Prvo smo opisali svakog od njih, a zatim naglasili najznačajnije razlike između njih. Zatim smo posebnu pozornost posvetili promjenama i razlikama od Jave 11. Na kraju smo naveli i druge aktivne implementacije koje su danas dostupne.