Perbezaan Antara Oracle JDK dan OpenJDK

1. Pengenalan

Dalam artikel ini, kita akan meneroka perbezaan antara Oracle Java Development Kit dan OpenJDK. Pertama-tama kita akan melihat masing-masing dan kemudian membuat perbandingan. Selepas itu, kita akan melihat senarai pelaksanaan JDK yang lain.

2. Sejarah Oracle JDK dan Java SE

JDK (Java Development Kit) adalah lingkungan pengembangan perangkat lunak yang digunakan dalam pengaturcaraan platform Java. Ini berisi Java Runtime Environment yang lengkap, yang disebut sebagai runtime peribadi. Nama itu berasal dari fakta bahawa ia berisi lebih banyak alat daripada JRE yang berdiri sendiri serta komponen lain yang diperlukan untuk mengembangkan aplikasi Java.

Oracle sangat mengesyorkan menggunakan istilah JDK untuk merujuk kepada Kit Pembangunan Java SE (Edisi Standard) (terdapat 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 - Disember 1998
  • J2SE 1.3 - Mei 2000
  • J2SE 1.4 - Februari 2002
  • J2SE 5.0 - September 2004
  • Jawa SE 6 - Disember 2006
  • Java SE 7 - Julai 2011
  • Java SE 8 (LTS) - Mac 2014
  • Java SE 9 - September 2017
  • Java SE 10 (18.3) - Mac 2018
  • Java SE 11 (18.9 LTS) - September 2018
  • Java SE 12 (19.3) - Mac 2019

Catatan: versi dalam huruf miring tidak lagi disokong.

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

Sejak Java SE 10, kami dapat mengharapkan rilis baru setiap enam bulan. Namun, tidak semua pelepasan akan menjadi rilis Long-Term-Support (LTS). Hasil daripada rancangan pelepasan Oracle, pengeluaran produk LTS akan berlaku hanya setiap tiga tahun.

Java SE 11 adalah versi LTS terbaru, dan Java SE 8 akan menerima kemas kini awam percuma hingga Disember 2020 untuk penggunaan bukan komersial.

Kit pengembangan ini mendapat nama sekarang setelah Oracle membeli Sun Microsystems pada tahun 2010. Sebelum itu, nama itu adalah SUN JDK, dan itu adalah pelaksanaan rasmi bahasa pengaturcaraan Java.

3. OpenJDK

OpenJDK adalah pelaksanaan sumber terbuka dan bebas dari Java SE Platform Edition. Ini awalnya dirilis pada tahun 2007 sebagai hasil pengembangan yang dimulakan oleh Sun Microsystems pada tahun 2006.

Sudah tentu, kita harus menekankan bahawa OpenJDK adalah pelaksanaan rujukan rasmi Java Standard Edition sejak versi SE 7 .

Pada mulanya, ini hanya didasarkan pada JDK 7. Tetapi, sejak Java 10, pelaksanaan rujukan sumber terbuka dari platform Java SE adalah tanggungjawab Projek JDK . Dan, sama seperti untuk Oracle, JDK Project juga akan memberikan siaran ciri baru setiap enam bulan.

Kita harus perhatikan bahawa sebelum projek yang berjalan lama ini, terdapat JDK Release Projects yang mengeluarkan satu ciri dan kemudian dihentikan.

Mari kita periksa versi OpenJDK:

  • Projek OpenJDK 6 - berdasarkan JDK 7, tetapi diubah suai untuk menyediakan versi sumber terbuka Java 6
  • Projek OpenJDK 7 - 28 Julai 2011
  • Projek OpenJDK 7u - projek ini mengembangkan kemas kini ke Java Development Kit 7
  • Projek OpenJDK 8 - 18 Mac 2014
  • Projek OpenJDK 8u - projek ini mengembangkan kemas kini ke Java Development Kit 8
  • Projek OpenJDK 9 - 21 September 2017
  • Pelepasan projek JDK 10 - 20 Mac 2018
  • Keluaran projek JDK 11 - 25 September 2018
  • Pelepasan projek JDK 12 - Fasa penstabilan

4. Oracle JDK lwn OpenJDK

Di bahagian ini, kita akan memfokuskan perbezaan utama antara Oracle JDK dan OpenJDK.

4.1. Jadual Pelepasan

Seperti yang kami sebutkan, Oracle akan mengeluarkan rilis setiap tiga tahun, sementara OpenJDK akan dikeluarkan setiap enam bulan .

Oracle memberikan sokongan jangka panjang untuk pengeluarannya. Sebaliknya, OpenJDK menyokong perubahan pada pelepasan hanya sehingga versi seterusnya dikeluarkan.

4.2. Lesen

Oracle JDK dilesenkan di bawah Perjanjian Lesen Kod Binari Oracle , sedangkan OpenJDK mempunyai GNU General Public License (GNU GPL) versi 2 dengan pengecualian pautan .

Terdapat beberapa implikasi pelesenan ketika menggunakan platform Oracle. Kemas kini awam untuk Oracle Java SE 8 yang dikeluarkan setelah Januari 2019 tidak akan tersedia untuk kegunaan perniagaan, komersial, atau pengeluaran tanpa lesen komersial, seperti yang diumumkan Oracle. Walau bagaimanapun, OpenJDK adalah sumber terbuka sepenuhnya dan boleh menggunakannya secara bebas.

4.3. Persembahan

Tidak ada perbezaan teknikal yang nyata antara keduanya kerana proses membina untuk Oracle JDK berdasarkan pada OpenJDK .

Mengenai prestasi, Oracle jauh lebih baik berkaitan dengan respons dan prestasi JVM . Ini lebih memfokus kepada kestabilan kerana kepentingannya diberikan kepada pelanggan perusahaannya.

OpenJDK, sebaliknya, akan memberikan siaran lebih kerap. Akibatnya, kita dapat menghadapi masalah ketidakstabilan. Berdasarkan maklum balas komuniti, kami tahu beberapa pengguna OpenJDK telah menghadapi masalah prestasi.

4.4. ciri-ciri

Jika kita bandingkan ciri dan pilihan, kita akan melihat bahawa produk Oracle mempunyai Recorder Penerbangan, Kawalan Misi Java, dan Aplikasi Perkongsian Kelas-Data menampilkan , manakala OpenJDK mempunyai ciri-ciri Font Renderer .

Juga, Oracle mempunyai lebih banyak pilihan Pengumpulan Sampah dan penyusun yang lebih baik.

4.5. Pembangunan dan Populariti

Oracle JDK dikembangkan sepenuhnya oleh Oracle Corporation sedangkan OpenJDK dibangunkan oleh Oracle, OpenJDK, dan Komuniti Java . Walau bagaimanapun, syarikat terkemuka seperti Red Hat, Azul Systems, IBM, Apple Inc., SAP AG juga mengambil bahagian aktif dalam pembangunannya.

Seperti yang dapat kita lihat dari pautan dari subseksyen sebelumnya, mengenai populariti dengan syarikat teratas yang menggunakan Java Development Kits dalam alat mereka, seperti Android Studio atau IntelliJ IDEA, Oracle JDK dulu lebih disukai, tetapi kedua-duanya dari mereka telah beralih ke binaan JetBrains berasaskan OpenJDK.

Sebaliknya, pengedaran Linux utama (Fedora, Ubuntu, Red Hat Enterprise Linux) menyediakan OpenJDK sebagai pelaksanaan Java SE lalai.

5. Perubahan Sejak Java 11

Seperti yang dapat kita lihat dalam catatan blog Oracle, ada beberapa perubahan penting bermula dengan Java 11.

Pertama sekali, Oracle akan menukar lesen sejarah "BCL" dengan gabungan lesen Public GNU sumber terbuka v2, dengan Pengecualian Classpath (GPLv2 + CPE) dan lesen komersial apabila menggunakan Oracle JDK sebagai sebahagian daripada produk Oracle atau perkhidmatan, atau apabila perisian sumber terbuka tidak dialu-alukan.

Setiap lesen akan mempunyai binaan yang berbeza, tetapi mereka akan berfungsi sama dengan hanya beberapa perbezaan kosmetik dan pembungkusan.

Juga, "ciri komersial" secara tradisional seperti Perekam Penerbangan, Java Mission Control, dan Aplikasi Kelas-Data Sharing, serta Z Garbage Collector, kini tersedia di OpenJDK. Oleh itu, binaan Oracle JDK dan OpenJDK pada dasarnya sama dari Java 11 dan seterusnya .

Mari lihat perbezaan utama:

  • Kit Oracle untuk Java 11 memancarkan amaran ketika menggunakan pilihan -XX: + UnlockCommercialFeatures , sedangkan dalam OpenJDK build , pilihan ini menghasilkan ralat
  • Oracle JDK menawarkan konfigurasi untuk menyediakan data log penggunaan ke alat "Advanced Management Console"
  • Oracle selalu menghendaki penyedia kriptografi pihak ketiga ditandatangani dengan sijil yang diketahui, sementara kerangka kriptografi di OpenJDK mempunyai antara muka kriptografi terbuka, yang bermaksud tidak ada batasan mengenai penyedia mana yang dapat digunakan
  • Oracle JDK 11 akan terus menyertakan pemasang, penjenamaan, dan pembungkusan JRE, sedangkan binaan OpenJDK kini tersedia sebagai fail zip dan tar.gz
  • Perintah javac –release berperilaku berbeza untuk target Java 9 dan Java 10 kerana adanya beberapa modul tambahan dalam pelepasan Oracle
  • Keluaran arahan java –version dan java -fullversion akan membezakan binaan Oracle dengan binaan OpenJDK

6. Pelaksanaan JDK Lain

Sekarang mari kita lihat implementasi Java Development Kit aktif yang lain.

6.1. Sumber Percuma dan Terbuka

Pelaksanaan berikut, yang disenaraikan dalam urutan abjad, adalah sumber terbuka dan bebas digunakan:

  • AdopOpenJDK
  • Amazon Corretto
  • Azul Zulu
  • Bck2Brwsr
  • CACAO
  • Nama Kod Satu
  • DoppioJVM
  • Gerhana OpenJ9
  • GraalVM CE
  • HaikuVM
  • HotSpot
  • Jamiga
  • JamVM
  • Jelatine JVM
  • Jikes RVM (Mesin Maya Penyelidikan Jikes)
  • JVM.go
  • leJOS
  • Maxine
  • Enjin Berbilang OS
  • RopeVM
  • uJVM

6.2. Pelaksanaan Hak Milik

Terdapat juga implementasi hak cipta:

  • Azul Zing JVM
  • CEE-J
  • JET Excelsior
  • GraalVM EE
  • Imsys AB
  • JamaicaVM (aicas)
  • JBlend (Aplix)
  • MicroJvm (IS2T - Teknologi Perisian Pintar Industri)
  • OJVM
  • PTC Perc
  • SAP JVM
  • Waratek CloudVM untuk Java

Bersama dengan pelaksanaan aktif yang disenaraikan di atas, kita dapat melihat senarai pelaksanaan yang tidak aktif dan penerangan ringkas setiap pelaksanaan.

7. Kesimpulannya

Dalam artikel ini, kami memberi tumpuan kepada dua Kit Pembangunan Java yang paling popular hari ini.

Kami mula-mula menerangkan masing-masing dan kemudian menekankan perbezaan yang paling ketara antara mereka. Kemudian, kami memberi perhatian khusus kepada perubahan dan perbezaan sejak Java 11. Akhirnya, kami menyenaraikan pelaksanaan aktif lain yang tersedia hari ini.