Perbedaan antara Oracle JDK dan OpenJDK

700

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?

pengguna1340582
sumber
3
Ini juga mungkin relevan jika Anda berencana pindah dari Oracle ke OpenJDK karena Oracle tidak gratis lagi. developers.redhat.com/blog/2018/11/05/...
Leo Ufimtsev

Jawaban:

338

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

Venkateswara Rao
sumber
13
Jadi Anda mengatakan bahwa openjdk adalah dasar untuk semua jdks lain hanya karena mereka menyalinnya dan kemudian men-tweak setelah spesifikasinya sendiri?
Karl Morrison
24
Saya terlambat ke pesta, tapi saya akan tetap bertanya. Apa yang dibawa jdk ke tabel yang tidak dimiliki openjdk? Semua jawaban ini membuat openjdk terdengar seperti sama atau lebih unggul dalam segala hal, tetapi jika itu masalahnya mengapa Oracle bahkan repot-repot memelihara jdk?
Kefka
@ Karl Morrison Sejauh yang saya tahu, ..semua orang yang mengimplementasikan JVM spec hanya melakukan hal itu .. tetapi tidak ada aturan eksplisit bahwa seseorang harus mengikuti cara itu ...
Venkateswara Rao
13
@ Mella OpenJDK <= OracleJDK Sebagai contoh, Oracle JDK telah menyiapkan beberapa kunci tepercaya, yang tidak ada di OpenJDK (Sekarang beberapa hari orang hanya mengimpornya untuk mengisi celah ini) Oracle JDK memiliki beberapa perpustakaan SWING yang merupakan kepemilikan untuk mempercepat rendering rendering .. (Siapa yang pernah melakukan aplikasi server, mungkin tidak relevan untuk mereka) Oracle JDK memiliki plugin Applet (Alasan yang sama di atas berfungsi) Oracle JDK perbaikan bug / hotfix akan didistribusikan dan ditangani dengan baik oleh Oracle di mana Sebagai OpenJDK itu sedikit teknis untuk memastikan semua tambalan diterapkan dan konflik apa yang akan mereka miliki
Venkateswara Rao
Catatan dengan model rilis baru untuk java, Oracle berencana untuk mengurangi kesenjangan sebanyak mungkin antara kedua jdk itu. Apakah ada kontributor open source lain untuk membuka jdk selain pengembang oracle? Ini untuk memahami apakah akan ada cukup dukungan untuk mendukung perbaikan dari versi terbaru ke versi sebelumnya. Adakah pikiran?
Andy Dufresne
329

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 :

T : Apa perbedaan antara kode sumber yang ditemukan dalam repositori OpenJDK, dan kode yang Anda gunakan untuk membangun Oracle JDK?

A : Sangat dekat - proses build kami untuk rilis Oracle JDK dibangun di OpenJDK 7 dengan menambahkan hanya beberapa bagian, seperti kode penempatan, yang mencakup implementasi Oracle dari Java Plugin dan Java WebStart, serta beberapa sumber tertutup ketiga komponen pihak seperti rasterizer grafis, beberapa komponen pihak ketiga sumber terbuka, seperti Badak, dan beberapa bagian di sana-sini, seperti dokumentasi tambahan atau font pihak ketiga. Ke depan, tujuan kami adalah untuk membuka sumber semua bagian dari Oracle JDK kecuali yang kami anggap sebagai fitur komersial seperti JRockit Mission Control (belum tersedia di Oracle JDK), dan mengganti komponen pihak ketiga yang terbebani dengan alternatif sumber terbuka untuk mendapatkan paritas yang lebih dekat. antara basis kode.

radai
sumber
42
Juga ada perbedaan lisensi.
mcoolive
9
terima kasih saya menemukan jawaban yang lebih baik. stackoverflow.com/questions/17360011/...
astroanu
9
Pada ARM setidaknya keduanya tampaknya berbeda secara signifikan dalam kinerja. Saya harus melakukan beberapa profiling mengapa itu terjadi, tetapi perbedaan subyektif adalah "Oracle JDK ok" dan "OpenJDK benar-benar tidak dapat digunakan".
digandakan
1
@dualed tetap android bergerak ke openjdk mulai dari android 7. Sepertinya mereka sedang mempersiapkan peningkatan yang signifikan. venturebeat.com/2015/12/29/...
Johnny Doe
1
@JohnnyDoe Mari kita berharap bahwa jika google pindah ke OpenJDK, mereka akan memberikan patch kinerja hulu sehingga berjalan dengan baik di ARM di luar Android juga!
digandakan
95

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.

masukkan deskripsi gambar di sini

Sumber: https://www.oracle.com/java/java9-screencasts.html?bcid=5582439790001&playerType=single-social&size=events

The Gilbert Arenas Dagger
sumber
3
Rilis jangka panjang mengharuskan Anda membeli dukungan komersial untuk mendapatkan pembaruan setelah 6 bulan rilis java. Apa pentingnya rilis jangka panjang jika dibandingkan dengan rilis jangka pendek? Apakah rilis jangka pendek seperti JDK 9/10 tidak memiliki dukungan komersial dari Oracle?
Andy Dufresne
@AndyDufresne mengapa Anda pikir Anda harus membayar dukungan setelah hanya 6 bulan? Pemahaman saya adalah bahwa timeline adalah TBD. 6 bulan nampaknya sangat singkat ... Saya ragu kita dapat mengharapkan pembaruan publik selama 5 tahun, seperti Java 8 yang didapat, tetapi saya tidak akan terkejut jika ada pembaruan publik selama 2 atau 3 tahun. Referensi - Ini adalah per: oracle.com/technetwork/java/eol-135779.html .
The Gilbert Arenas Dagger
1
Tautan oracle menyebutkan "Sebagai contoh, rilis LTS untuk Oracle JDK 11 (18.9 LTS) akan didukung selama setidaknya 5 tahun seperti yang dijelaskan dalam Kebijakan Dukungan Seumur Hidup Oracle". Kebijakan ini memiliki 3 level dukungan yang tidak satupun terlihat bebas. Saya juga menyebutkan ini setelah melihat komentar azul CTO di sini - blog.takipi.com/java-11-will-include-more-than-just-features/… . Tujuan utama dari strategi rilis baru ini adalah untuk tidak menghabiskan waktu dalam mempertahankan rilis lama. Jika dukungan itu gratis, modelnya akan sama dengan yang ada sampai sekarang.
Andy Dufresne
38

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.

  • Rockit adalah JVM Oracle dan dari Java SE 7, HotSpot dan JRockit bergabung menjadi JVM tunggal. Jadi sekarang kita hanya memiliki HotSpot JVM gabungan yang tersedia.
  • Ada contoh di mana orang mengklaim bahwa mereka memiliki masalah saat menjalankan OpenJDK dan yang diselesaikan ketika beralih ke Oracle JDK.
  • Twitter memiliki JDK sendiri.
  • Perangkat lunak seperti Minecraft mengharapkan Oracle JDK untuk digunakan. Bahkan, peringatkan.

Untuk daftar lengkap perbedaan silakan lihat artikel sumber: Oracle JDK vs OpenJDK dan Java JDK Development Process

45
sumber
4
Untuk Android Studio, ini tidak lagi benar: Salinan OpenJDK terbaru dibundel dengan Android Studio 2.2 dan lebih tinggi, dan ini adalah versi JDK yang kami sarankan Anda gunakan untuk proyek Android Anda. Sumber: developer.android.com/studio/intro/studio-config#jdk
MKesper
“Perangkat lunak seperti Minecraft mengharapkan Oracle JDK untuk digunakan. Bahkan, peringatkan. " Sebenarnya, di Ubuntu, installer .deb resmi Mojang menarik OpenJDK ketika menginstal peluncur.
Moilleadóir
29

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.

diff --brief -r openjdk oraclejdk

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):

Only in jdk-10.0.1/bin: javapackager
Only in jdk-10.0.1/bin: javaws
Only in jdk-10.0.1/bin: jcontrol
Only in jdk-10.0.1/bin: jmc
Only in jdk-10.0.1/bin: jweblauncher
Only in jdk-10.0.1/lib: ant-javafx.jar
Only in jdk-10.0.1/lib: deploy
Only in jdk-10.0.1/lib: deploy.jar
Only in jdk-10.0.1/lib: desktop
Only in jdk-10.0.1/lib: fontconfig.bfc
Only in jdk-10.0.1/lib: fontconfig.properties.src
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.bfc
Only in jdk-10.0.1/lib: fontconfig.RedHat.6.properties.src
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.bfc
Only in jdk-10.0.1/lib: fontconfig.SuSE.11.properties.src
Only in jdk-10.0.1/lib: fonts
Only in jdk-10.0.1/lib: javafx.properties
Only in jdk-10.0.1/lib: javafx-swt.jar
Only in jdk-10.0.1/lib: java.jnlp.jar
Only in jdk-10.0.1/lib: javaws.jar
Only in jdk-10.0.1/lib: jdk.deploy.jar
Only in jdk-10.0.1/lib: jdk.javaws.jar
Only in jdk-10.0.1/lib: jdk.plugin.jar
Only in jdk-10.0.1/lib: jfr
Only in jdk-10.0.1/lib: libavplugin-53.so
Only in jdk-10.0.1/lib: libavplugin-54.so
Only in jdk-10.0.1/lib: libavplugin-55.so
Only in jdk-10.0.1/lib: libavplugin-56.so
Only in jdk-10.0.1/lib: libavplugin-57.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-56.so
Only in jdk-10.0.1/lib: libavplugin-ffmpeg-57.so
Only in jdk-10.0.1/lib: libbci.so
Only in jdk-10.0.1/lib: libcmm.so
Only in jdk-10.0.1/lib: libdecora_sse.so
Only in jdk-10.0.1/lib: libdeploy.so
Only in jdk-10.0.1/lib: libfxplugins.so
Only in jdk-10.0.1/lib: libglassgtk2.so
Only in jdk-10.0.1/lib: libglassgtk3.so
Only in jdk-10.0.1/lib: libglass.so
Only in jdk-10.0.1/lib: libgstreamer-lite.so
Only in jdk-10.0.1/lib: libjavafx_font_freetype.so
Only in jdk-10.0.1/lib: libjavafx_font_pango.so
Only in jdk-10.0.1/lib: libjavafx_font.so
Only in jdk-10.0.1/lib: libjavafx_iio.so
Only in jdk-10.0.1/lib: libjfxmedia.so
Only in jdk-10.0.1/lib: libjfxwebkit.so
Only in jdk-10.0.1/lib: libnpjp2.so
Only in jdk-10.0.1/lib: libprism_common.so
Only in jdk-10.0.1/lib: libprism_es2.so
Only in jdk-10.0.1/lib: libprism_sw.so
Only in jdk-10.0.1/lib: librm.so
Only in jdk-10.0.1/lib: libt2k.so
Only in jdk-10.0.1/lib: locale
Only in jdk-10.0.1/lib: missioncontrol
Only in jdk-10.0.1/lib: oblique-fonts
Only in jdk-10.0.1/lib: plugin.jar
Only in jdk-10.0.1/lib: plugin-legacy.jar
Only in jdk-10.0.1/lib/security: blacklist
Only in jdk-10.0.1/lib/security: public_suffix_list.dat
Only in jdk-10.0.1/lib/security: trusted.libraries
Only in openjdk-10.0.1: man`
Mars
sumber
5
Terima kasih telah menunjukkan perbedaan nyata : kode tidak berjalan adalah masalah nyata. Dari mana Anda mendasarkannya diff?
Matthieu
19

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.

  • Oracle JDK 11 memancarkan peringatan saat menggunakan opsi -XX: + UnlockCommercialFeatures, sedangkan di OpenJDK membangun opsi ini menghasilkan kesalahan. Opsi ini tidak pernah menjadi bagian dari OpenJDK dan tidak masuk akal untuk menambahkannya sekarang, karena tidak ada fitur komersial di OpenJDK. Perbedaan ini tetap untuk memudahkan pengguna Oracle JDK 10 dan rilis sebelumnya untuk bermigrasi ke Oracle JDK 11 dan yang lebih baru.
  • Oracle JDK 11 dapat dikonfigurasi untuk menyediakan data log penggunaan ke alat " Advanced Management Console ", yang merupakan produk Oracle komersial yang terpisah. Kami akan bekerja dengan kontributor OpenJDK lainnya untuk membahas bagaimana data penggunaan tersebut dapat berguna dalam OpenJDK dalam rilis mendatang, jika sama sekali. Perbedaan ini tetap terutama untuk memberikan pengalaman yang konsisten kepada pelanggan Oracle sampai keputusan tersebut dibuat.
  • Perintah javac --release berperilaku berbeda untuk target Java 9 dan Java 10, karena dalam rilis tersebut Oracle JDK berisi beberapa modul tambahan yang bukan bagian dari rilis OpenJDK yang sesuai:
    • javafx.base
    • javafx.controls
    • javafx.fxml
    • javafx.graphics
    • javafx.media
    • javafx.web
    • java.jnlp
    • jdk.jfr
    • jdk.management.cmm
    • jdk.management.jfr
    • jdk.manajemen.sumber daya
    • jdk.packager.services
    • jdk.snmp

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) .

  • Output dari perintah java --version dan java -fullversion akan membedakan Oracle JDK build dari OpenJDK builds, sehingga tim pendukung dapat mendiagnosis masalah apa pun yang mungkin ada. Secara khusus, menjalankan java --version dengan Oracle JDK 11 menghasilkan hasil di:

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)

  • Oracle JDK selalu mengharuskan penyedia kriptografi pihak ketiga untuk ditandatangani oleh sertifikat yang dikenal. Kerangka kriptografi di OpenJDK memiliki antarmuka kriptografi terbuka, artinya tidak membatasi penyedia mana yang dapat digunakan. Oracle JDK 11 akan terus membutuhkan tanda tangan yang valid, dan build Oracle OpenJDK akan terus mengizinkan penggunaan tanda tangan yang valid atau penyedia kripto pihak ketiga yang tidak ditandatangani.
  • Oracle JDK 11 akan terus menyertakan installer, branding, dan pengemasan JRE untuk pengalaman yang konsisten dengan penggunaan desktop lama. Build Oracle OpenJDK saat ini tersedia sebagai file zip dan tar.gz, sementara format distribusi alternatif sedang dipertimbangkan.
Naresh Joshi
sumber
10

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:

  • Oracle JDK 11 memancarkan peringatan saat menggunakan opsi -XX: + UnlockCommercialFeatures,
  • itu dapat dikonfigurasi untuk memberikan data log penggunaan ke alat "Advanced Management Console",
  • selalu mengharuskan penyedia kriptografi pihak ketiga untuk ditandatangani oleh sertifikat yang dikenal,
  • itu akan terus menyertakan installer, branding dan kemasan JRE,
  • sedangkan perintah javac --release berperilaku sedikit berbeda untuk Java 9 dan Java 10 target, dan
  • output dari perintah java --version dan java -fullversion akan membedakan Oracle JDK build dari OpenJDK builds.
Topik Dalibor
sumber
2
Saya perhatikan bahwa sebagian besar jawaban Anda memiliki tanda tangan di dalamnya. Saya telah mengeditnya. Harap baca Apakah tagline & tanda tangan tidak diizinkan? dan stackoverflow.com/help/behavior (khususnya bagian "Jangan gunakan tanda tangan, tagline, atau salam.")
Mark Rotteveel
7
  1. Oracle akan mengirimkan rilis setiap tiga tahun, sedangkan OpenJDK akan dirilis setiap enam bulan.
  2. Oracle memberikan dukungan jangka panjang untuk rilisnya. Di sisi lain, OpenJDK mendukung perubahan hanya untuk rilis sampai versi berikutnya dirilis.
  3. Oracle JDK dilisensikan di bawah Perjanjian Lisensi Kode Biner Oracle, sedangkan OpenJDK memiliki GNU General Public License (GNU GPL) versi 2 dengan pengecualian tautan.
  4. Produk Oracle memiliki fitur Perekam Penerbangan, Kontrol Misi Java, dan Aplikasi Berbagi Data Kelas, sedangkan OpenJDK memiliki fitur Font Renderer. Juga, Oracle memiliki lebih banyak opsi Pengumpulan Sampah dan penyaji yang lebih baik,
  5. 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.

Dari Java 11, ubah menjadi perubahan besar

Oracle akan mengubah lisensi historis "BCL" dengan kombinasi open source dan lisensi komersial

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


Pembaruan: 25-Agustus-2019



masukkan deskripsi gambar di sini

untuk lebih jelasnya oracle-vs-openjdk

Istiaque Hossain
sumber
5

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.

Gili
sumber
3

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:

  • OpenJDK memiliki penggunaan CPU yang lebih tinggi dari OracleJDK,
  • OpenJDK memiliki waktu respons yang sedikit lebih rendah daripada OracleJDK,
  • OpenJDK memiliki penggunaan memori lebih tinggi dari OracleJDK,

Untuk detailnya silakan lihat artikel sumber.

Tentu saja YMMV, ini hanyalah salah satu tolok ukur.

Greg Dubicki
sumber
3

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 .

Dimulai dengan Java 11, Oracle JDK terbatas pada lingkungan pengembangan dan pengujian. Oracle JDK hanya dapat digunakan dalam produksi jika Anda membeli dukungan komersial. Sebagai gantinya, Oracle akan menyediakan Java build berdasarkan OpenJDK secara gratis yang dapat digunakan dalam produksi. Tetapi untuk Oracle JDK resmi, peta jalan nyata akan terlihat seperti 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?".

nettie
sumber
Ini mungkin tidak lagi berlaku pada JDK 13. Ada lisensi baru untuk Oracle JDK, menurut Oracle: "Lisensi baru mengizinkan penggunaan tertentu, seperti penggunaan pribadi dan penggunaan pengembangan, tanpa biaya - tetapi penggunaan lain yang diizinkan di bawah lisensi Oracle JDK sebelumnya mungkin tidak lagi tersedia ". Lihat oracle.com/downloads/licenses/javase-license1.html .
AL Flanagan
Hanya ingin tahu, Rilis terbaru oracle jdk8u241 gratis untuk penggunaan produksi?
Nirav Shah