Forskelle mellem Oracle JDK og OpenJDK

1. Introduktion

I denne artikel undersøger vi forskellene mellem Oracle Java Development Kit og OpenJDK. Vi kigger først hurtigt på hver af dem og foretager derefter en sammenligning. Derefter ser vi en liste over andre JDK-implementeringer.

2. Oracle JDK og Java SE History

JDK (Java Development Kit) er et softwareudviklingsmiljø, der bruges i Java-platformsprogrammering. Den indeholder et komplet Java Runtime-miljø, en såkaldt privat runtime. Navnet stammer fra det faktum, at det indeholder flere værktøjer end den uafhængige JRE samt de andre komponenter, der er nødvendige for at udvikle Java-applikationer.

Oracle anbefaler kraftigt at bruge udtrykket JDK til at henvise til Java SE (Standard Edition) Development Kit (der er også Enterprise Edition og Micro Edition platforme).

Lad os se på Java SE-historikken:

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

Bemærk: versionerne i kursiv understøttes ikke længere.

Vi kan se, at de største udgivelser af Java SE kom cirka hvert andet år indtil Java SE 7. Det tog fem år at flytte fra Java SE 6, og yderligere tre at nå Java SE 8 bagefter.

Siden Java SE 10 kan vi forvente nye udgivelser hver sjette måned. Imidlertid vil ikke alle udgivelser være Long-Term-Support (LTS) udgivelser. Som et resultat af Oracles frigivelsesplan vil LTS-produktudgivelserne kun ske hvert tredje år.

Java SE 11 er den nyeste LTS-version, og Java SE 8 modtager gratis offentlige opdateringer indtil december 2020 til ikke-kommerciel brug.

Dette udviklingssæt fik sit nuværende navn, efter at Oracle købte Sun Microsystems i 2010. Før det var navnet SUN JDK, og det var den officielle implementering af Java-programmeringssproget.

3. OpenJDK

OpenJDK er en gratis og open source-implementering af Java SE Platform Edition. Det blev oprindeligt udgivet i 2007 som et resultat af den udvikling, som Sun Microsystems startede i 2006.

Bestemt skal vi understrege, at OpenJDK er en officiel referenceimplementering af en Java Standard Edition siden version SE 7.

Oprindeligt var det kun baseret på JDK 7. Men, siden Java 10 er JDK-projektet ansvaret for open source-referenceimplementering af Java SE-platformen. Og ligesom for Oracle vil JDK-projektet også levere nye funktionsudgivelser hver sjette måned.

Vi skal bemærke, at der før dette langvarige projekt var JDK Release-projekter, der udgav en funktion og derefter blev afbrudt.

Lad os nu tjekke OpenJDK-versionerne:

  • OpenJDK 6-projekt - baseret på JDK 7, men modificeret til at give en open source-version af Java 6
  • OpenJDK 7-projekt - 28. juli 2011
  • OpenJDK 7u-projekt - dette projekt udvikler opdateringer til Java Development Kit 7
  • OpenJDK 8-projekt - 18. marts 2014
  • OpenJDK 8u-projekt - dette projekt udvikler opdateringer til Java Development Kit 8
  • OpenJDK 9-projekt - 21. september 2017
  • Udgivelse af JDK-projekt 10. - 20. marts 2018
  • Udgivelse af JDK-projekt 11. - 25. september 2018
  • JDK-projektudgivelse 12 - Stabiliseringsfase

4. Oracle JDK vs. OpenJDK

I dette afsnit vil vi fokusere på de vigtigste forskelle mellem Oracle JDK og OpenJDK.

4.1. Udgivelsesplan

Som vi nævnte, Oracle leverer udgivelser hvert tredje år, mens OpenJDK frigives hver sjette måned.

Oracle yder langsigtet support til sine udgivelser. På den anden side understøtter OpenJDK kun ændringerne til en frigivelse, indtil den næste version frigives.

4.2. Licenser

Oracle JDK blev licenseret under Oracle Binary Code License Agreement, hvorimod OpenJDK har GNU General Public License (GNU GPL) version 2 med en sammenkædningsundtagelse.

Der er nogle licensimplikationer, når du bruger Oracles platform. Offentlige opdateringer til Oracle Java SE 8, der blev frigivet efter januar 2019, er ikke tilgængelige til forretnings-, kommerciel- eller produktionsbrug uden en kommerciel licens, som Oracle meddelte. OpenJDK er dog fuldstændig open source og kan bruges frit.

4.3. Ydeevne

Der er ingen reel teknisk forskel mellem de to, da byggeprocessen til Oracle JDK er baseret på OpenJDK's.

Når det kommer til ydeevne, Oracle's er meget bedre med hensyn til lydhørhed og JVM-ydeevne. Det lægger mere fokus på stabilitet på grund af den betydning det giver sine virksomhedskunder.

OpenJDK vil derimod levere udgivelser oftere. Som et resultat kan vi støde på problemer med ustabilitet. Baseret på feedback fra samfundet ved vi, at nogle OpenJDK-brugere har stødt på præstationsproblemer.

4.4. Funktioner

Hvis vi sammenligner funktioner og muligheder, ser vi, at Oracle-produkt har Flight Recorder, Java Mission Control og Application Class-Data Sharingfunktioner, mens OpenJDK har Font Renderer-funktionen.

Også, Oracle har flere Garbage Collection-muligheder og bedre renderere.

4.5. Udvikling og popularitet

Oracle JDK er fuldt udviklet af Oracle Corporation der henviser til, at OpenJDK er udviklet af Oracle, OpenJDK og Java Community. Imidlertid deltager de førsteklasses virksomheder som Red Hat, Azul Systems, IBM, Apple Inc., SAP AG også aktivt i udviklingen.

Som vi kan se fra linket fra det foregående underafsnit, når det kommer til popularitet hos de bedste virksomheder, der bruger Java Development Kits i deres værktøjer, såsom Android Studio eller IntelliJ IDEA, Oracle JDK plejede at være mere foretrukket, men begge har skiftet til OpenJDK-baserede JetBrains-builds.

På den anden side giver store Linux-distributioner (Fedora, Ubuntu, Red Hat Enterprise Linux) OpenJDK som standard Java SE-implementering.

5. Ændringer siden Java 11

Som vi kan se i Oracles blogindlæg, er der nogle vigtige ændringer, der starter med Java 11.

Først og fremmest, Oracle vil ændre sin historiske “BCL” licens med en kombination af en open source GNU General Public License v2 med Classpath Exception (GPLv2 + CPE) og kommerciel licens når du bruger Oracle JDK som en del af et Oracle-produkt eller -tjeneste, eller når open source-software ikke er velkomment.

Hver licens vil have forskellige opbygninger, men de vil være funktionelt identiske med kun nogle kosmetiske og emballageforskelle.

Traditionelt er "kommercielle funktioner" som Flight Recorder, Java Mission Control og Application Class-Data Sharing samt Z Garbage Collector nu tilgængelige i OpenJDK. Derfor, Oracle JDK og OpenJDK builds er stort set identiske fra Java 11 og fremefter.

Lad os tjekke de vigtigste forskelle:

  • Oracle's kit til Java 11 udsender en advarsel, når du bruger -XX: + UnlockCommercialFeatures option, hvorimod i OpenJDK builds, resulterer denne mulighed i en fejl
  • Oracle JDK tilbyder en konfiguration til at levere brugsdata til "Advanced Management Console" -værktøjet
  • Oracle har altid krævet, at tredjeparts kryptografiske udbydere underskrives af et kendt certifikat, mens kryptografiramme i OpenJDK har en åben kryptografisk grænseflade, hvilket betyder, at der ikke er nogen begrænsning for, hvilke udbydere der kan bruges
  • Oracle JDK 11 vil fortsat omfatte installatører, branding og JRE-emballage, mens OpenJDK-builds i øjeblikket er tilgængelige som lynlås og tar.gz filer
  • Det javac - frigivelse kommandoen opfører sig forskelligt for Java 9- og Java 10-målene på grund af tilstedeværelsen af ​​nogle ekstra moduler i Oracles frigivelse
  • Resultatet af java –version og java-fuldversion kommandoer skelner Oracle's builds fra OpenJDK builds

6. Andre JDK-implementeringer

Lad os nu se hurtigt på andre aktive Java Development Kit-implementeringer.

6.1. Gratis og open source

Følgende implementeringer, opført i alfabetisk rækkefølge, er open source og gratis at bruge:

  • VedtageOpenJDK
  • 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

Der er også copyrightbeskyttede 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 til Java

Sammen med de aktive implementeringer, der er anført ovenfor, kan vi se listen over inaktive implementeringer og en kort beskrivelse af enhver implementering.

7. Konklusion

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

Vi beskrev først hver af dem og understregede derefter de mest bemærkelsesværdige forskelle mellem dem. Derefter lagde vi særlig vægt på ændringerne og forskellene siden Java 11. Endelig nævnte vi andre aktive implementeringer, der er tilgængelige i dag.