Perbedaan Antara Oracle JDK dan OpenJDK

1. Perkenalan

Pada artikel ini, kita akan membahas perbedaan antara Oracle Java Development Kit dan OpenJDK. Kami pertama-tama akan melihat sekilas masing-masing dan kemudian membuat perbandingan. Setelah itu, kita akan melihat daftar implementasi JDK lainnya.

2. Oracle JDK dan Sejarah Java SE

JDK (Java Development Kit) adalah lingkungan pengembangan perangkat lunak yang digunakan dalam pemrograman platform Java. Ini berisi Java Runtime Environment lengkap, yang disebut runtime pribadi. Nama ini berasal dari fakta bahwa ia berisi lebih banyak alat daripada JRE mandiri serta komponen lain yang diperlukan untuk mengembangkan aplikasi Java.

Oracle sangat merekomendasikan penggunaan istilah JDK untuk merujuk pada Kit Pengembangan Java SE (Edisi Standar) (ada juga platform Edisi Perusahaan dan Edisi Mikro).

Mari kita lihat sejarah Java SE:

  • JDK Beta - 1995
  • JDK 1.0 - Januari 1996
  • JDK 1.1 - Februari 1997
  • J2SE 1.2 - Desember 1998
  • J2SE 1.3 - Mei 2000
  • J2SE 1.4 - Februari 2002
  • J2SE 5.0 - September 2004
  • Jawa SE 6 - Desember 2006
  • Java SE 7 - Juli 2011
  • Java SE 8 (LTS) - Maret 2014
  • Java SE 9 - September 2017
  • Java SE 10 (18.3) - Maret 2018
  • Java SE 11 (18,9 LTS) - September 2018
  • Java SE 12 (19.3) - Maret 2019

Catatan: versi yang dicetak miring tidak lagi didukung.

Kita dapat melihat bahwa rilis utama Java SE datang kira-kira setiap dua tahun hingga Java SE 7. Butuh lima tahun untuk berpindah dari Java SE 6, dan tiga tahun lagi untuk mencapai Java SE 8 sesudahnya.

Sejak Java SE 10, kami mengharapkan rilis baru setiap enam bulan. Namun, tidak semua rilis akan menjadi rilis Long-Term-Support (LTS). Sebagai hasil dari rencana rilis Oracle, rilis produk LTS hanya akan dilakukan setiap tiga tahun.

Java SE 11 adalah versi LTS terbaru, dan Java SE 8 akan menerima pembaruan publik gratis hingga Desember 2020 untuk penggunaan non-komersial.

Kit pengembangan ini mendapatkan namanya saat ini setelah Oracle membeli Sun Microsystems pada tahun 2010. Sebelumnya, namanya adalah SUN JDK, dan merupakan implementasi resmi dari bahasa pemrograman Java.

3. OpenJDK

OpenJDK adalah implementasi gratis dan open-source dari Java SE Platform Edition. Awalnya dirilis pada 2007 sebagai hasil pengembangan yang dimulai oleh Sun Microsystems pada 2006.

Tentunya, kami harus menekankan bahwa OpenJDK adalah implementasi referensi resmi dari Java Standard Edition sejak versi SE 7 .

Awalnya, ini hanya didasarkan pada JDK 7. Namun, sejak Java 10, implementasi referensi sumber terbuka dari platform Java SE menjadi tanggung jawab Proyek JDK . Dan, sama seperti Oracle, Proyek JDK juga akan memberikan rilis fitur baru setiap enam bulan.

Kami harus mencatat bahwa sebelum proyek yang berjalan lama ini, ada Proyek Rilis JDK yang merilis satu fitur dan kemudian dihentikan.

Sekarang mari kita lihat versi OpenJDK:

  • Proyek OpenJDK 6 - berdasarkan JDK 7, tetapi dimodifikasi untuk menyediakan versi open-source Java 6
  • Proyek OpenJDK 7 - 28 Juli 2011
  • Proyek OpenJDK 7u - proyek ini mengembangkan pembaruan untuk Java Development Kit 7
  • Proyek OpenJDK 8 - 18 Maret 2014
  • Proyek OpenJDK 8u - proyek ini mengembangkan pembaruan untuk Java Development Kit 8
  • Proyek OpenJDK 9 - 21 September 2017
  • Proyek JDK rilis 10 - 20 Maret 2018
  • Proyek JDK rilis 11 - 25 September 2018
  • Rilis proyek JDK 12 - Fase stabilisasi

4. Oracle JDK vs. OpenJDK

Di bagian ini, kita akan fokus pada perbedaan utama antara Oracle JDK dan OpenJDK.

4.1. Jadwal Rilis

Seperti yang kami sebutkan, Oracle akan merilis rilis setiap tiga tahun, sedangkan OpenJDK akan dirilis setiap enam bulan .

Oracle memberikan dukungan jangka panjang untuk rilisnya. Di sisi lain, OpenJDK mendukung perubahan pada rilis hanya sampai versi berikutnya dirilis.

4.2. Lisensi

Oracle JDK dilisensikan di bawah Perjanjian Lisensi Kode Biner Oracle , sedangkan OpenJDK memiliki Lisensi Publik Umum GNU (GNU GPL) versi 2 dengan pengecualian penautan .

Ada beberapa implikasi perizinan saat menggunakan platform Oracle. Pembaruan publik untuk Oracle Java SE 8 yang dirilis setelah Januari 2019 tidak akan tersedia untuk penggunaan bisnis, komersial, atau produksi tanpa lisensi komersial, seperti yang diumumkan Oracle. Namun, OpenJDK sepenuhnya open source dan dapat digunakan dengan bebas.

4.3. Performa

Tidak ada perbedaan teknis yang nyata antara keduanya karena proses build untuk Oracle JDK didasarkan pada OpenJDK .

Dalam hal kinerja, Oracle jauh lebih baik dalam hal daya tanggap dan kinerja JVM . Ini menempatkan lebih fokus pada stabilitas karena pentingnya diberikan kepada pelanggan perusahaannya.

OpenJDK, sebaliknya, akan lebih sering mengirimkan rilis. Akibatnya, kita bisa menghadapi masalah ketidakstabilan. Berdasarkan umpan balik komunitas, kami tahu beberapa pengguna OpenJDK mengalami masalah kinerja.

4.4. fitur

Jika kita membandingkan fitur dan pilihan, kita akan melihat bahwa produk Oracle memiliki Flight Recorder, Jawa Mission Control, dan Aplikasi Kelas-Berbagi Data fitur , sementara OpenJDK memiliki fitur Font Renderer .

Selain itu, Oracle memiliki lebih banyak opsi Pengumpulan Sampah dan perender yang lebih baik.

4.5. Pengembangan dan Popularitas

Oracle JDK sepenuhnya dikembangkan oleh Oracle Corporation sedangkan OpenJDK dikembangkan oleh Oracle, OpenJDK, dan Komunitas Java . Namun, perusahaan terkemuka seperti Red Hat, Azul Systems, IBM, Apple Inc., SAP AG juga mengambil bagian aktif dalam pengembangannya.

Seperti yang dapat kita lihat dari tautan dari sub-bagian sebelumnya, ketika berbicara tentang popularitas dengan perusahaan teratas yang menggunakan Java Development Kits di alat mereka, seperti Android Studio atau IntelliJ IDEA, Oracle JDK dulu lebih disukai, tetapi keduanya dari mereka telah beralih ke build JetBrains berbasis OpenJDK.

Di sisi lain, distribusi Linux utama (Fedora, Ubuntu, Red Hat Enterprise Linux) menyediakan OpenJDK sebagai implementasi Java SE default.

5. Perubahan Sejak Java 11

Seperti yang bisa kita lihat di posting blog Oracle, ada beberapa perubahan penting yang dimulai dengan Java 11.

Pertama-tama, Oracle akan mengubah lisensi "BCL" historisnya dengan kombinasi dari GNU General Public License v2 open source, dengan Classpath Exception (GPLv2 + CPE) dan lisensi komersial saat menggunakan Oracle JDK sebagai bagian dari produk Oracle atau layanan, atau ketika perangkat lunak sumber terbuka tidak diterima.

Setiap lisensi akan memiliki build yang berbeda, tetapi keduanya akan identik secara fungsional hanya dengan beberapa perbedaan kosmetik dan kemasan.

Juga, "fitur komersial" tradisional seperti Flight Recorder, Java Mission Control, dan Aplikasi Berbagi Data Kelas, serta Z Garbage Collector, sekarang tersedia di OpenJDK. Oleh karena itu, build Oracle JDK dan OpenJDK pada dasarnya identik dari Java 11 dan seterusnya .

Mari kita lihat perbedaan utamanya:

  • Kit Oracle untuk Java 11 mengeluarkan peringatan saat menggunakan opsi -XX: + UnlockCommercialFeatures , sedangkan di OpenJDK build, opsi ini menghasilkan kesalahan
  • Oracle JDK menawarkan konfigurasi untuk memberikan data log penggunaan ke alat "Advanced Management Console"
  • Oracle selalu mewajibkan penyedia kriptografi pihak ketiga untuk ditandatangani dengan sertifikat yang dikenal, sementara kerangka kerja kriptografi di OpenJDK memiliki antarmuka kriptografi terbuka, yang berarti tidak ada batasan mengenai penyedia mana yang dapat digunakan
  • Oracle JDK 11 akan terus menyertakan installer, branding, dan pengemasan JRE, sedangkan build OpenJDK saat ini tersedia sebagai file zip dan tar.gz
  • Perintah javac –release berperilaku berbeda untuk target Java 9 dan Java 10 karena adanya beberapa modul tambahan dalam rilis Oracle
  • Output dari java -version dan java -fullversion perintah akan membedakan Oracle membangun dari OpenJDK membangun

6. Implementasi JDK Lainnya

Sekarang mari kita lihat sekilas implementasi Java Development Kit aktif lainnya.

6.1. Gratis dan Sumber Terbuka

Implementasi berikut, tercantum dalam urutan abjad, adalah open source dan gratis untuk digunakan:

  • AdoptOpenJDK
  • Amazon Corretto
  • Azul Zulu
  • Bck2Brwsr
  • COKLAT
  • Codename One
  • DoppioJVM
  • Eclipse OpenJ9
  • GraalVM CE
  • HaikuVM
  • HotSpot
  • Jamiga
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Mesin Virtual Jikes Research)
  • JVM.go
  • leJOS
  • Maxine
  • Mesin Multi-OS
  • RopeVM
  • uJVM

6.2. Penerapan Hak Milik

Ada juga implementasi berhak cipta:

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

Bersama dengan implementasi aktif yang tercantum di atas, kita dapat melihat daftar implementasi yang tidak aktif dan deskripsi singkat dari setiap implementasi.

7. Kesimpulan

Pada artikel ini, kami fokus pada dua Java Development Kit paling populer saat ini.

Kami pertama kali menjelaskan masing-masing dan kemudian menekankan perbedaan yang paling mencolok di antara keduanya. Kemudian, kami memberikan perhatian khusus pada perubahan dan perbedaan sejak Java 11. Terakhir, kami membuat daftar implementasi aktif lainnya yang tersedia saat ini.