Különbségek az Oracle JDK és az OpenJDK között

1. Bemutatkozás

Ebben a cikkben megvizsgáljuk az Oracle Java Development Kit és az OpenJDK közötti különbségeket. Először mindegyiket megvizsgáljuk, majd összehasonlítást végzünk. Ezt követően meglátjuk a többi JDK-megvalósítás listáját.

2. Oracle JDK és Java SE History

A JDK (Java Development Kit) a Java platform programozásában használt szoftverfejlesztő környezet. Tartalmaz egy teljes Java Runtime Environment-et, egy úgynevezett privát futást. A név abból származott, hogy több eszközt tartalmaz, mint az önálló JRE, valamint a Java alkalmazások fejlesztéséhez szükséges egyéb összetevők.

Az Oracle nyomatékosan javasolja a JDK kifejezés használatát a Java SE (Standard Edition) fejlesztőkészletre való hivatkozás céljából (léteznek Enterprise Edition és Micro Edition platformok is).

Vessünk egy pillantást a Java SE történetére:

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

Megjegyzés: a dőlt betűvel ellátott verziók már nem támogatottak.

Láthatjuk, hogy a Java SE fő kiadásai körülbelül kétévente jelentek meg a Java SE 7-ig. Öt év kellett a Java SE 6-ból való áttéréshez, és további három évig tartott, hogy utána elérje a Java SE 8-at.

A Java SE 10 óta félévente számíthatunk új kiadásokra. Azonban nem minden kiadás lesz a Long-Term-Support (LTS) kiadás. Az Oracle kiadási tervének eredményeként az LTS termékkiadások csak háromévente történnek.

A Java SE 11 a legújabb LTS verzió, és a Java SE 8 ingyenes nyilvános frissítéseket kap 2020 decemberéig, nem kereskedelmi célokra.

Ez a fejlesztőkészlet a jelenlegi nevét azután kapta, hogy az Oracle 2010-ben megvásárolta a Sun Microsystems rendszert. Előtte a név SUN JDK volt, és ez volt a Java programozási nyelv hivatalos bevezetése.

3. OpenJDK

Az OpenJDK a Java SE Platform Edition ingyenes és nyílt forráskódú megvalósítása. Eredetileg 2007-ben jelent meg a Sun Microsystems által 2006-ban elindított fejlesztés eredményeként.

Természetesen hangsúlyoznunk kell, hogy a Az OpenJDK a Java Standard Edition hivatalos referencia-megvalósítása az SE 7 verzió óta.

Kezdetben csak a JDK 7-re épült. De a Java 10 óta a Java SE platform nyílt forráskódú referencia-megvalósítása a JDK Projekt feladata. És csakúgy, mint az Oracle esetében, a JDK Projekt is új szolgáltatásokat bocsát ki félévente.

Meg kell jegyeznünk, hogy e régóta tartó projekt előtt voltak olyan JDK Release Projektek, amelyek kiadtak egy funkciót, majd megszüntették őket.

Nézzük meg most az OpenJDK verzióit:

  • OpenJDK 6 projekt - a JDK 7-re épül, de módosítva a Java 6 nyílt forráskódú verziójával
  • OpenJDK 7 projekt - 2011. július 28
  • OpenJDK 7u projekt - ez a projekt a Java Development Kit 7 frissítéseit fejleszti
  • OpenJDK 8 projekt - 2014. március 18
  • OpenJDK 8u projekt - ez a projekt a Java Development Kit 8 frissítéseit fejleszti
  • OpenJDK 9 projekt - 2017. szeptember 21
  • A JDK projekt kiadása 2018. március 10–20
  • A JDK projekt kiadása 2018. szeptember 11-25
  • A JDK projekt 12. kiadása - Stabilizációs szakasz

4. Oracle JDK vs. OpenJDK

Ebben a részben az Oracle JDK és az OpenJDK közötti legfontosabb különbségekre fogunk koncentrálni.

4.1. Kiadási ütemezés

Mint említettük, Az Oracle háromévente szállít kiadásokat, míg Az OpenJDK félévente jelenik meg.

Az Oracle hosszú távú támogatást nyújt kiadásaihoz. Másrészt az OpenJDK csak a következő verzió megjelenéséig támogatja a kiadás módosításait.

4.2. Engedélyek

Az Oracle JDK-t az Oracle Binary Code licencszerződés alapján licencelték, mivel Az OpenJDK rendelkezik a GNU General Public License (GNU GPL) 2. verziójával, összekapcsolási kivétellel.

Van néhány licencelési következmény az Oracle platformjának használatakor. Az Oracle Java SE 8 2019 januárja után kiadott nyilvános frissítései nem lesznek üzleti, kereskedelmi vagy gyártási célokra használhatók kereskedelmi licenc nélkül, amint azt az Oracle bejelentette. Az OpenJDK azonban teljesen nyílt forráskódú, és szabadon használható.

4.3. Teljesítmény

Van nincs valódi technikai különbség a kettő között, mivel az Oracle JDK felépítési folyamata az OpenJDK-n alapul.

Amikor a teljesítményről van szó, Az Oracle sokkal jobb az érzékenység és a JVM teljesítmény szempontjából. Nagyobb hangsúlyt fektet a stabilitásra, mivel nagy jelentőséget tulajdonít a vállalati ügyfeleknek.

Az OpenJDK ezzel szemben gyakrabban fogja kiadni a kiadásokat. Ennek eredményeként instabilitás problémáival találkozhatunk. A közösségi visszajelzések alapján tudjuk, hogy az OpenJDK néhány felhasználója teljesítményproblémákkal találkozott.

4.4. Jellemzők

Ha összehasonlítjuk a szolgáltatásokat és a lehetőségeket, látni fogjuk, hogy a Az Oracle termék rendelkezik Flight Recorder, Java Mission Control és Application Class-Data Sharing szolgáltatássaljellemzők, miközben Az OpenJDK rendelkezik a Betűtípus-megjelenítő funkcióval.

Is, Az Oracle több szemétgyűjtési lehetőséggel és jobb rendereléssel rendelkezik.

4.5. Fejlődés és népszerűség

Az Oracle JDK-t teljesen az Oracle Corporation fejlesztette ki mivel a Az OpenJDK-t az Oracle, az OpenJDK és a Java Közösség fejlesztette. Azonban a csúcsminőségű vállalatok, például a Red Hat, az Azul Systems, az IBM, az Apple Inc., az SAP AG is aktívan részt vesznek a fejlesztésben.

Amint az előző alfejezet linkjéből láthatjuk, amikor a népszerűség azon vezető vállalatok körében, amelyek a Java fejlesztőkészleteket használják eszközeikben, például az Android Studio vagy az IntelliJ IDEA, korábban az Oracle JDK volt a legkedveltebb, de mindketten áttértek az OpenJDK alapú JetBrains buildekre.

Másrészt a főbb Linux disztribúciók (Fedora, Ubuntu, Red Hat Enterprise Linux) az OpenJDK-t biztosítják alapértelmezett Java SE megvalósításként.

5. Változások a Java 11 óta

Amint azt az Oracle blogbejegyzésében láthatjuk, a Java 11-től kezdve néhány fontos változás van.

Először is, Az Oracle megváltoztatja a korábbi „BCL” licencét egy nyílt forráskódú GNU General Public License v2, a Classpath Exception (GPLv2 + CPE) és a kereskedelmi licenc kombinációjával. amikor az Oracle JDK-t egy Oracle termék vagy szolgáltatás részeként használja, vagy ha a nyílt forráskódú szoftvereket nem fogadjuk szívesen.

Mindegyik licenc eltérő felépítésű lesz, de funkcionálisan azonosak csak néhány kozmetikai és csomagolási különbséggel.

Emellett a hagyományosan olyan „kereskedelmi funkciók”, mint a Flight Recorder, a Java Mission Control és az Application Class-Data Sharing, valamint a Z Garbage Collector, már elérhetőek az OpenJDK-ban. Ebből kifolyólag, Az Oracle JDK és az OpenJDK buildjei lényegében azonosak a Java 11-től kezdve.

Nézzük meg a fő különbségeket:

  • Az Oracle Java 11 csomagja figyelmeztetést küld a -XX: + UnlockCommercialFeatures opció, míg az OpenJDK buildekben ez az opció hibát eredményez
  • Az Oracle JDK olyan konfigurációt kínál, amely felhasználási napló adatokat szolgáltat az „Advanced Management Console” eszközhöz
  • Az Oracle mindig megkövetelte, hogy a harmadik fél kriptográfiai szolgáltatóit ismert tanúsítvánnyal írják alá, míg az OpenJDK kriptográfiai keretrendszere nyitott kriptográfiai felülettel rendelkezik, ami azt jelenti, hogy nincs korlátozás a szolgáltatók felhasználására
  • Az Oracle JDK 11 továbbra is tartalmazza a telepítőket, a márkaneveket és a JRE csomagolásokat, míg az OpenJDK buildjei jelenleg postai irányítószám és tar.gz fájlokat
  • A javac –kiadás A parancs másképp viselkedik a Java 9 és Java 10 céloknál, néhány további modul jelenléte miatt az Oracle kiadásában
  • A kimenet a java –verzió és java -teljes változat a parancsok megkülönböztetik az Oracle és az OpenJDK buildjeit

6. A JDK egyéb megvalósításai

Vessünk egy gyors pillantást az egyéb aktív Java Development Kit implementációkra.

6.1. Ingyenes és nyílt forráskódú

A következő betűrendben felsorolt ​​megvalósítások nyílt forráskódúak és szabadon használhatók:

  • AdoptOpenJDK
  • Amazon Corretto
  • Azul Zulu
  • Bck2Brwsr
  • CACAO
  • Codename One
  • DoppioJVM
  • Eclipse OpenJ9
  • GraalVM CE
  • HaikuVM
  • Csatlakozási pont
  • Jamiga
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Jikes Research virtuális gép)
  • JVM.go
  • leJOS
  • Maxine
  • Multi-OS motor
  • RopeVM
  • uJVM

6.2. Saját tulajdonú megvalósítások

Vannak szerzői joggal védett megvalósítások is:

  • Azul Zing JVM
  • CEE-J
  • Excelsior JET
  • GraalVM EE
  • Imsys AB
  • JamaicaVM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T - Ipari intelligens szoftver technológia)
  • OJVM
  • PTC Perc
  • SAP JVM
  • Waratek CloudVM for Java

A fent felsorolt ​​aktív megvalósításokkal együtt láthatjuk az inaktív megvalósítások listáját és minden megvalósítás rövid leírását.

7. Következtetés

Ebben a cikkben a két legnépszerűbb Java fejlesztőkészletre összpontosítottunk.

Először mindegyiket leírtuk, majd kiemeltük a legjelentősebb különbségeket ezek között. Ezután különös figyelmet fordítottunk a Java 11 óta bekövetkezett változásokra és különbségekre. Végül felsoroltunk más ma elérhető aktív megvalósításokat.