CATATAN: Pertanyaan ini berasal dari 2014. Pada Java 11 OpenJDK dan Oracle JDK sedang konvergen.
Apakah ada perbedaan penting antara Oracle dan OpenJDK?
Misalnya, apakah pengumpulan sampah dan parameter JVM lainnya sama?
Apakah GC bekerja secara berbeda di antara keduanya?
java
difference
pengguna1340582
sumber
sumber
Jawaban:
OpenJDK dan Oracle JDK dibuat dan dikelola saat ini oleh Oracle saja.
OpenJDK dan Oracle JDK adalah implementasi dari spesifikasi Java yang sama yang lulus TCK (Java Technology Certification Kit).
Sebagian besar vendor JDK ditulis di atas OpenJDK dengan melakukan beberapa penyesuaian untuk [sebagian besar untuk mengganti bagian-bagian kepemilikan yang berlisensi / ganti dengan lebih banyak item berkinerja tinggi yang hanya bekerja pada komponen OS tertentu) tanpa melanggar kompatibilitas TCK.
Banyak vendor yang mengimplementasikan spesifikasi Java dan lulus TCK. Misalnya, IBM J9, Azul Zulu, Azul Zing, dan Oracle JDK.
Hampir setiap JDK yang ada berasal dari OpenJDK.
Seperti yang disarankan oleh banyak orang, perizinan adalah perubahan antara JDK.
Dimulai dengan JDK 11 mengakses dukungan lama Oracle JDK / Java SE sekarang akan memerlukan lisensi komersial. Anda sekarang harus memperhatikan JDK mana yang Anda instal karena Oracle JDK tanpa berlangganan dapat berhenti bekerja. sumber
Ref: Daftar mesin virtual Java
sumber
Untuk Java 7 , tidak ada yang penting. Proyek OpenJDK sebagian besar didasarkan pada kode sumber HotSpot yang disumbangkan oleh Sun.
Selain itu, OpenJDK dipilih untuk menjadi implementasi referensi untuk Java 7 dan dikelola oleh para insinyur Oracle.
Ada jawaban yang lebih rinci mulai 2012 pada perbedaan antara JVM, JDK, JRE & OpenJDK , yang terhubung ke posting blog Oracle :
sumber
Perbedaan utama ke depan adalah jadwal rilis dan kebijakan dukungan.
OpenJDK
OpenJDK akan memiliki rilis fitur setiap 6 bulan yang hanya didukung hingga rilis fitur berikutnya. Ini pada dasarnya adalah aliran rilis berkelanjutan yang ditargetkan untuk pengembang.
Oracle JDK
Oracle JDK ditargetkan lebih ke arah audiens perusahaan yang menghargai stabilitas. Ini didasarkan pada salah satu rilis OpenJDK tetapi kemudian diberikan dukungan jangka panjang (LTS). Oracle JDK telah direncanakan rilis setiap 3 tahun.
Sumber: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events
sumber
Untuk Java 8 , Oracle JDK vs OpenJDK saya ambil dari perbedaan utama:
OpenJDK adalah implementasi open source dari platform Java Standard Edition dengan kontribusi dari Oracle dan komunitas Java terbuka.
OpenJDK dirilis di bawah lisensi GPL v2 di mana Oracle JDK dilisensikan di bawah Perjanjian Lisensi Kode Biner Oracle.
Sebenarnya, proses pembangunan Oracle JDK dibangun dari kode sumber OpenJDK. Jadi tidak ada perbedaan teknis utama antara Oracle JDK dan OpenJDK. Selain dari kode dasar, Oracle JDK termasuk, implementasi Java Plugin dan Oracle WebStart. Ini juga mencakup sumber tertutup pihak ketiga dan komponen sumber terbuka seperti rasterizer grafis dan Rhino . OpenJDK Font Renderer dan Oracle JDK Flight Recorder adalah perbedaan utama yang mencolok antara Oracle JDK dan OpenJDK.
Untuk daftar lengkap perbedaan silakan lihat artikel sumber: Oracle JDK vs OpenJDK dan Java JDK Development Process
sumber
Oracle dan OpenJDK JVM sama dan memiliki fitur GC yang sama (pada versi terbaru 10+). Sebelum Oracle mengelola OpenJDK JVM ada perbedaan konkret yang membuat JVM Openjdk hampir tidak dapat digunakan di banyak lingkungan. JVM sekarang sama.
JDK yang memasukkan JVM sebagai bagian dari Kit, berbeda dengan perizinan, jadwal rilis dan pemeliharaan, dan pustaka perangkat lunak yang termasuk dalam JDK. Perbedaan penting bagi saya juga berarti hal-hal yang akan membuat kode tidak berjalan jika tidak ada. Bukan hanya perizinan.
Yang terpenting, file-file berikut tidak ada di samping banyak file lain di linux JDK (Jadi jika Anda 'mengklaim' bahwa kode tidak berfungsi pada OpenJDK dan melakukannya pada OracleJDK ketika Anda menggunakan javafx maka Anda benar):
sumber
diff
?Menurut blog oracle, Oracle JDK Rilis untuk Java 11 dan Selanjutnya
Dimulai dengan Java 11, Oracle akan memberikan rilis JDK di bawah open source GNU General Public License v2, dengan Classpath Exception (GPLv2 + CPE) , dan di bawah lisensi komersial untuk mereka yang menggunakan Oracle JDK sebagai bagian dari produk atau layanan Oracle, atau yang tidak ingin menggunakan perangkat lunak sumber terbuka. Kombinasi penggunaan lisensi sumber terbuka dan lisensi komersial menggantikan lisensi " BCL " historis , yang memiliki kombinasi persyaratan komersial gratis dan berbayar.
Build yang berbeda akan disediakan untuk setiap lisensi, tetapi build ini identik secara fungsional selain dari beberapa perbedaan kosmetik dan kemasan, dijelaskan secara rinci di bawah ini.
Dari BCL ke GPL
The Binary Kode Lisensi untuk teknologi Oracle Java SE ( “BCL”) telah lisensi utama untuk teknologi Oracle Java SE selama lebih dari satu dekade. BCL mengizinkan penggunaan tanpa biaya lisensi dalam kondisi tertentu. Untuk menyederhanakan hal-hal yang bergerak maju, Oracle mulai menyediakan OpenJDK berlisensi open source berlisensi Java 9, menggunakan model lisensi yang sama dengan platform Linux. Jika Anda terbiasa mendapatkan binari Oracle Java SE secara gratis, Anda dapat terus melakukannya dengan OpenJDK Oracle yang tersedia di jdk.java.net . Jika Anda terbiasa mendapatkan binari Oracle Java SE sebagai bagian dari produk atau layanan komersial dari Oracle, maka Anda dapat terus mendapatkan rilis Oracle JDK melalui Dukungan My Oracle (MOS), dan lokasi lainnya.
Secara fungsional identik dan dapat ...
JDK berlisensi BCL Oracle secara historis berisi "fitur komersial" yang tidak tersedia di OpenJDK build. Namun seperti yang dijanjikan , selama setahun terakhir Oracle telah menyumbangkan fitur-fitur ini ke Komunitas OpenJDK, termasuk:
Dari Java 11 maju, oleh karena itu, Oracle JDK membangun dan OpenJDK membangun pada dasarnya akan identik.
... namun dengan beberapa perbedaan kosmetik dan kemasan
Masih ada sejumlah kecil perbedaan, beberapa disengaja dan kosmetik, dan beberapa hanya karena lebih banyak waktu untuk berdiskusi dengan kontributor OpenJDK diperlukan.
Perbedaan ini tetap untuk memberikan pengalaman yang konsisten untuk jenis penggunaan warisan tertentu. Modul-modul ini sekarang tersedia secara terpisah sebagai bagian dari OpenJFX , sekarang ada di OpenJDK dan Oracle JDK karena mereka adalah fitur komersial yang dikontribusikan oleh Oracle ke OpenJDK (misalnya, Flight Recorder), atau dihapus dari Oracle JDK 11 (misalnya, JNLP) .
java 11 2018-09-25
Java (TM) SE Runtime Environment 18.9 (build 11 + 28)
Java HotSpot (TM) 64-Bit Server VM 18.9 (build 11 + 28, mode campuran)
Dan untuk build OpenJDK 11:
versi openjdk "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11 + 28)
OpenJDK 64-Bit Server VM 18.9 (build 11 + 28, mode campuran)
sumber
Daftar beberapa perbedaan kosmetik dan kemasan yang tersisa antara Oracle JDK 11 dan OpenJDK 11 dapat ditemukan di posting blog ini:
https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later
Pendeknya:
sumber
Dari Java 11, ubah menjadi perubahan besar
Oracle akan mengubah lisensi historis "BCL" dengan kombinasi open source dan lisensi komersial
Pembaruan: 25-Agustus-2019
untuk lebih jelasnya oracle-vs-openjdk
sumber
Selain perbedaan lisensi yang jelas, perbedaan utama antara OpenJDK dan OracleJDK 11 adalah stabilitas dan pembaruan kinerja.
Sumber: https://www.youtube.com/watch?v=Adv9--6IcQI&t=385
Setiap 6 bulan kedua basis kode akan disinkronkan. Tetapi selama 6 bulan jendela OpenJDK hanya akan menerima pembaruan keamanan sementara OracleJDK akan menerima stabilitas tambahan dan pembaruan kinerja.
Mengingat bahwa rilis pembaruan hanya terjadi setiap 3 bulan untuk OpenJDK dan OracleJDK, ini berarti Anda kehilangan (paling banyak) perbaikan 3 bulan hingga rilis besar berikutnya keluar dan Anda meningkatkan. Namun, jika Anda memilih untuk tetap menggunakan rilis LTS maka lisensi komersial mulai lebih masuk akal.
sumber
Juga untuk Java 8 suatu kinerja benchmark menarik bagi reaktif (non-blocking) Musim Semi Boot aplikasi SISA menjadi host di berbagai JVMs oleh AMIS Teknologi Blog telah diterbitkan dalam Nov 2018 menunjukkan bahwa, di antara perbedaan-perbedaan lain:
Untuk detailnya silakan lihat artikel sumber.
Tentu saja YMMV, ini hanyalah salah satu tolok ukur.
sumber
Pemahaman saya adalah bahwa Oracle JDK tidak dapat digunakan dalam produksi, oleh karena itu saya tidak dapat menggunakannya secara legal (tanpa membayar), untuk aplikasi web yang saya bangun untuk perusahaan saya. Saya harus menggunakan OpenJDK. Mohon koreksi saya jika saya salah! Dari artikel ini .
PEMBARUAN: Saya salah. Saya dapat menggunakan Oracle JDK secara gratis tetapi tidak akan mendapatkan pembaruan keamanan setelah 6 mos dan kita harus mengambil risiko. Lihatlah bagian artikel tertaut di atas "Apa arti kereta rilis baru bagi perusahaan saya?".
sumber