Forskjeller mellom Oracle JDK og OpenJDK

1. Introduksjon

I denne artikkelen vil vi utforske forskjellene mellom Oracle Java Development Kit og OpenJDK. Vi tar først en rask titt på hver av dem og deretter foretar en sammenligning. Etter det ser vi en liste over andre JDK-implementeringer.

2. Oracle JDK og Java SE History

JDK (Java Development Kit) er et programvareutviklingsmiljø som brukes i Java-plattformsprogrammering. Den inneholder et komplett Java Runtime-miljø, en såkalt privat kjøretid. Navnet kom fra det faktum at det inneholder flere verktøy enn den frittstående JRE, samt de andre komponentene som trengs for å utvikle Java-applikasjoner.

Oracle anbefaler på det sterkeste å bruke begrepet JDK for å referere til Java SE (Standard Edition) Development Kit (det er også Enterprise Edition og Micro Edition plattformer).

La oss ta en titt på Java SE-historikken:

  • JDK Beta - 1995
  • JDK 1.0 - januar 1996
  • JDK 1.1 - februar 1997
  • J2SE 1.2 - desember 1998
  • J2SE 1.3 - mai 2000
  • J2SE 1.4 - februar 2002
  • J2SE 5.0 - september 2004
  • Java SE 6. desember 2006
  • Java SE 7 - juli 2011
  • Java SE 8 (LTS) - mars 2014
  • Java SE 9. september 2017
  • Java SE 10 (18.3) - mars 2018
  • Java SE 11 (18,9 LTS) - september 2018
  • Java SE 12 (19.3) - mars 2019

Merk: versjonene i kursiv støttes ikke lenger.

Vi kan se at de viktigste utgivelsene av Java SE kom omtrent hvert annet år til Java SE 7. Det tok fem år å flytte fra Java SE 6, og ytterligere tre for å nå Java SE 8 etterpå.

Siden Java SE 10 kan vi forvente nye utgivelser hver sjette måned. Imidlertid vil ikke alle utgivelser være Long-Term-Support (LTS) utgivelser. Som et resultat av Oracles utgivelsesplan vil LTS-produktutgivelsene bare skje hvert tredje år.

Java SE 11 er den siste LTS-versjonen, og Java SE 8 vil motta gratis offentlige oppdateringer frem til desember 2020 for ikke-kommersiell bruk.

Dette utviklingssettet fikk sitt nåværende navn etter at Oracle kjøpte Sun Microsystems i 2010. Før det var navnet SUN JDK, og det var den offisielle implementeringen av Java-programmeringsspråket.

3. OpenJDK

OpenJDK er en gratis og åpen kildekode-implementering av Java SE Platform Edition. Den ble opprinnelig utgitt i 2007 som et resultat av utviklingen som Sun Microsystems startet i 2006.

Vi må absolutt understreke at OpenJDK er en offisiell referanseimplementering av en Java Standard Edition siden versjon SE 7.

Opprinnelig var den bare basert på JDK 7. Men, siden Java 10 er open source-referanseimplementeringen av Java SE-plattformen ansvaret for JDK-prosjektet. Og akkurat som for Oracle, vil JDK-prosjektet også levere utgivelser av nye funksjoner hvert halvår.

Vi bør merke oss at før dette langvarige prosjektet var det JDK Release-prosjekter som ga ut en funksjon og deretter ble avviklet.

La oss nå sjekke ut OpenJDK-versjonene:

  • OpenJDK 6-prosjekt - basert på JDK 7, men modifisert for å gi en åpen kildekodeversjon av Java 6
  • OpenJDK 7-prosjekt - 28. juli 2011
  • OpenJDK 7u-prosjekt - dette prosjektet utvikler oppdateringer til Java Development Kit 7
  • OpenJDK 8-prosjekt - 18. mars 2014
  • OpenJDK 8u-prosjekt - dette prosjektet utvikler oppdateringer til Java Development Kit 8
  • OpenJDK 9-prosjekt - 21. september 2017
  • JDK-prosjektutgivelse 10. - 20. mars 2018
  • JDK-prosjektutgivelse 11. - 25. september 2018
  • JDK-prosjektutgivelse 12 - Stabiliseringsfase

4. Oracle JDK vs. OpenJDK

I denne delen vil vi fokusere på de viktigste forskjellene mellom Oracle JDK og OpenJDK.

4.1. Utgivelsesplan

Som vi nevnte, Oracle vil levere utgivelser hvert tredje år, samtidig som OpenJDK vil bli utgitt hver sjette måned.

Oracle gir langsiktig støtte for utgivelsene. På den annen side støtter OpenJDK endringene til en utgivelse bare til neste versjon er utgitt.

4.2. Lisenser

Oracle JDK ble lisensiert under Oracle Binary Code License Agreement, mens OpenJDK har GNU General Public License (GNU GPL) versjon 2 med et unntak for kobling.

Det er noen lisensimplikasjoner når du bruker Oracles plattform. Offentlige oppdateringer for Oracle Java SE 8 som ble utgitt etter januar 2019, vil ikke være tilgjengelig for forretnings-, kommersiell- eller produksjonsbruk uten kommersiell lisens, slik Oracle kunngjorde. Imidlertid er OpenJDK helt åpen kildekode og kan brukes fritt.

4.3. Opptreden

Det er ingen reell teknisk forskjell mellom de to siden byggeprosessen for Oracle JDK er basert på OpenJDK.

Når det gjelder ytelse, Oracle's er mye bedre når det gjelder respons og JVM-ytelse. Det setter mer fokus på stabilitet på grunn av viktigheten det gir til bedriftskundene.

OpenJDK vil derimot levere utgivelser oftere. Som et resultat kan vi støte på problemer med ustabilitet. Basert på tilbakemeldinger fra samfunnet, vet vi at noen OpenJDK-brukere har opplevd ytelsesproblemer.

4.4. Funksjoner

Hvis vi sammenligner funksjoner og alternativer, ser vi at Oracle-produktet har Flight Recorder, Java Mission Control og Application Class-Data Sharingfunksjoner, samtidig som OpenJDK har Font Renderer-funksjonen.

Også, Oracle har flere søppelinnsamlingsalternativer og bedre gjengivere.

4.5. Utvikling og popularitet

Oracle JDK er fullt utviklet av Oracle Corporation mens OpenJDK er utviklet av Oracle, OpenJDK og Java Community. Imidlertid tar de førsteklasses selskapene som Red Hat, Azul Systems, IBM, Apple Inc., SAP AG også en aktiv rolle i utviklingen.

Som vi kan se fra lenken fra forrige del, når det gjelder popularitet blant de beste selskapene som bruker Java Development Kits i verktøyene sine, som Android Studio eller IntelliJ IDEA, Oracle JDK pleide å være mer foretrukket, men begge har byttet til OpenJDK-baserte JetBrains-bygg.

På den annen side gir store Linux-distribusjoner (Fedora, Ubuntu, Red Hat Enterprise Linux) OpenJDK som standard Java SE-implementering.

5. Endringer siden Java 11

Som vi kan se i Oracles blogginnlegg, er det noen viktige endringer som starter med Java 11.

Først av alt, Oracle vil endre sin historiske "BCL" -lisens med en kombinasjon av en åpen kildekode GNU General Public License v2, med Classpath Exception (GPLv2 + CPE) og kommersiell lisens når du bruker Oracle JDK som en del av et Oracle-produkt eller -tjeneste, eller når programvare med åpen kildekode ikke er velkommen.

Hver lisens vil ha forskjellige utførelser, men de vil være funksjonelt identiske med bare noen forskjeller i kosmetikk og emballasje.

Tradisjonelt er "kommersielle funksjoner" som Flight Recorder, Java Mission Control og Application Class-Data Sharing, samt Z Garbage Collector, nå tilgjengelig i OpenJDK. Derfor, Oracle JDK og OpenJDK builds er egentlig identiske fra Java 11 og utover.

La oss sjekke hovedforskjellene:

  • Oracles sett for Java 11 avgir en advarsel når du bruker -XX: + UnlockCommercialFeatures alternativ, mens i OpenJDK bygger, resulterer dette alternativet i en feil
  • Oracle JDK tilbyr en konfigurasjon for å gi brukerloggdata til “Advanced Management Console” -verktøyet
  • Oracle har alltid krevd at tredjeparts kryptografiske leverandører skal være signert av et kjent sertifikat, mens kryptografirammeverk i OpenJDK har et åpent kryptografisk grensesnitt, noe som betyr at det ikke er noen begrensning for hvilke leverandører som kan brukes
  • Oracle JDK 11 vil fortsette å inkludere installatører, merkevarebygging og JRE-emballasje, mens OpenJDK-bygg er for øyeblikket tilgjengelig som glidelås og tar.gz filer
  • De javac - utgivelse kommandoen oppfører seg annerledes for Java 9 og Java 10-målene på grunn av tilstedeværelsen av noen ekstra moduler i Oracles utgivelse
  • Resultatet av java –versjon og java -fullversjon kommandoer vil skille Oracle's builds fra OpenJDK builds

6. Andre JDK-implementeringer

La oss nå se raskt på andre aktive Java Development Kit-implementeringer.

6.1. Gratis og åpen kildekode

Følgende implementeringer, oppført i alfabetisk rekkefølge, er åpen kildekode og gratis å bruke:

  • VedtaOpenJDK
  • Amazon Corretto
  • Azul Zulu
  • Bck2Brwsr
  • CACAO
  • Kodenavn One
  • DoppioJVM
  • Formørkelse OpenJ9
  • GraalVM CE
  • HaikuVM
  • HotSpot
  • Jamiga
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Jikes Research Virtual Machine)
  • JVM.go
  • leJOS
  • Maxine
  • Multi-OS-motor
  • RopeVM
  • uJVM

6.2. Proprietære implementeringer

Det er også opphavsrettsbeskyttede implementeringer:

  • Azul Zing JVM
  • CEE-J
  • Excelsior JET
  • GraalVM EE
  • Imsys AB
  • JamaicaVM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T - Industrial Smart Software Technology)
  • OJVM
  • PTC Perc
  • SAP JVM
  • Waratek CloudVM for Java

Sammen med de aktive implementeringene som er oppført ovenfor, kan vi se listen over inaktive implementeringer og en kort beskrivelse av hver implementering.

7. Konklusjon

I denne artikkelen fokuserte vi på de to mest populære Java Development Kits i dag.

Vi beskrev først hver av dem og la deretter vekt på de mest bemerkelsesverdige forskjellene mellom disse. Deretter la vi spesiell vekt på endringene og forskjellene siden Java 11. Til slutt listet vi opp andre aktive implementeringer som er tilgjengelige i dag.