Perbedaan antara OpenJDK dan Adoptium / AdoptOpenJDK

183

Karena pembaruan kebijakan Roadmap Dukungan Oracle Java SE baru-baru ini (akhir dari $ rilis pembaruan gratis dari Oracle setelah Maret 2019 khususnya), saya telah mencari alternatif untuk Oracle Java. Saya telah menemukan bahwa OpenJDK adalah alternatif open-source. Dan saya telah menemukan AdoptOpenJDK , sekarang dikenal sebagai Adoptium, yang merupakan biner prebuilt . Ini teka-teki.

Apa perbedaan antara OpenJDK dan Adoptium / AdoptOpenJDK?

Mikhail Kholodkov
sumber
Pembaruan: AdoptOpenJDK telah mengubah namanya menjadi Adoptium , sebagai bagian dari kepindahannya ke Eclipse Foundation .
Basil Bourque

Jawaban:

272

Pendeknya:

  • OpenJDK memiliki banyak arti dan dapat merujuk ke:
    • implementasi bebas dan open source dari Platform Java, Edisi Standar (Java SE)
    • repositori open source - kode sumber Java alias proyek OpenJDK
    • binari OpenJDK prebuilt yang dikelola oleh Oracle
    • binari OpenJDK prebuilt yang dikelola oleh komunitas OpenJDK
  • AdoptOpenJDK - binari OpenJDK prebuilt dikelola oleh komunitas ( open source berlisensi )

Penjelasan:

Prebuilt OpenJDK (atau distribusi) - binari, dibangun dari http://hg.openjdk.java.net/ , disediakan sebagai arsip atau pemasang, yang ditawarkan untuk berbagai platform, dengan kemungkinan kontrak dukungan.

OpenJDK, repositori sumber (juga disebut proyek OpenJDK ) - adalah repositori open source berbasis Mercurial , yang dihosting di http://hg.openjdk.java.net . Kode sumber Java. Sebagian besar fitur Java (dari VM dan pustaka inti ke kompiler) hanya didasarkan pada repositori sumber ini. Oracle memiliki garpu pengganti untuk ini.

OpenJDK, distribusinya (lihat daftar penyedia di bawah ini) - gratis seperti bir dan jenis gratis seperti dalam pidato , tetapi, Anda tidak bisa memanggil Oracle jika Anda memiliki masalah dengan itu. Tidak ada kontrak dukungan. Selain itu, Oracle hanya akan merilis pembaruan untuk versi OpenJDK (distribusi) jika rilis itu adalah rilis Java terbaru, termasuk rilis LTS (dukungan jangka panjang). Pada hari Oracle merilis OpenJDK (distribusi) versi 12.0, bahkan jika ada masalah keamanan dengan OpenJDK (distribusi) versi 11.0, Oracle tidak akan merilis pembaruan untuk 11.0. Dikelola sepenuhnya oleh Oracle.

Beberapa proyek OpenJDK - seperti OpenJDK 8 dan OpenJDK 11 - dikelola oleh komunitas OpenJDK dan menyediakan rilis untuk beberapa versi OpenJDK untuk beberapa platform. Anggota masyarakat telah mengambil tanggung jawab untuk merilis perbaikan untuk kerentanan keamanan dalam versi OpenJDK ini.

AdoptOpenJDK, distribusinya sangat mirip dengan distribusi OpenJDK Oracle (dalam hal ini gratis, dan itu adalah build yang diproduksi dengan mengkompilasi sumber dari repositori sumber OpenJDK). AdoptOpenJDK sebagai entitas tidak akan membuat backport patch, yaitu tidak akan ada 'fork / versi' AdoptOpenJDK yang secara material berbeda dari hulu (kecuali untuk beberapa patch skrip build untuk hal-hal seperti dukungan Win32). Artinya, jika anggota komunitas (Oracle atau yang lain, tetapi bukan AdoptOpenJDK sebagai entitas) perbaikan keamanan backport ke pembaruan versi OpenJDK LTS, maka AdoptOpenJDK akan menyediakan pembangunan untuk itu. Dikelola oleh komunitas OpenJDK.

OracleJDK - adalah distribusi lain. Dimulai dengan JDK12 tidak akan ada versi gratis dari OracleJDK. Tawaran distribusi JDK Oracle ditujukan untuk dukungan komersial. Anda membayar untuk ini, tetapi kemudian Anda bisa mengandalkan Oracle untuk dukungan. Tidak seperti penawaran OpenJDK Oracle, OracleJDK hadir dengan dukungan yang lebih lama untuk versi LTS. Sebagai pengembang, Anda bisa mendapatkan lisensi gratis untuk penggunaan pribadi / pengembangan hanya dari JDK khusus ini, tetapi itu sebagian besar ikan haring merah, karena 'hanya biner' pada dasarnya sama dengan biner OpenJDK. Saya kira itu berarti Anda dapat mengunduh versi JDK LTS yang ditambal keamanan dari situs web Oracle selama Anda berjanji untuk tidak menggunakannya secara komersial.

Catatan . Mungkin yang terbaik untuk menyebut build OpenJDK oleh Oracle adalah "Oracle OpenJDK builds".

Donald Smith, manajer produk Java di Oracle menulis :

Idealnya, kami hanya merujuk ke semua bangunan Oracle JDK sebagai "Oracle JDK", baik di bawah GPL atau lisensi komersial, tergantung pada situasi Anda. Namun, untuk alasan historis, sementara perbedaan kecil yang tersisa ada, kami akan merujuk mereka secara terpisah sebagai OpenJDK Oracle dan Oracle JDK.


Penyedia dan Perbandingan OpenJDK

-------------------------------------------------- --------------------------------------
| Penyedia | Pembuatan Gratis | Biner Gratis | Extended | Komersial | Permisif |
| | dari Sumber | Distribusi | Pembaruan | Dukungan | Lisensi |
| ------------------------------------------------- ------------------------------------- |
| AdoptOpenJDK | Ya | Ya | Ya | Tidak | Ya |
| Amazon - Corretto | Ya | Ya | Ya | Tidak | Ya |
| Azul Zulu | Tidak | Ya | Ya | Ya | Ya |
| BellSoft Liberica | Tidak | Ya | Ya | Ya | Ya |
| IBM | Tidak | Tidak | Ya | Ya | Ya |
| jClarity | Tidak | Tidak | Ya | Ya | Ya |
| OpenJDK | Ya | Ya | Ya | Tidak | Ya |
| Oracle JDK | Tidak | Ya | Tidak ** | Ya | Tidak |
| Oracle OpenJDK | Ya | Ya | Tidak | Tidak | Ya |
| ojdkbuild | Ya | Ya | Tidak | Tidak | Ya |
| RedHat | Ya | Ya | Ya | Ya | Ya |
| SapMachine | Ya | Ya | Ya | Ya | Ya |
-------------------------------------------------- --------------------------------------

Bangun Gratis dari Sumber - kode sumber distribusi tersedia untuk umum dan orang dapat mengumpulkan bangunannya sendiri

Distribusi Biner Gratis - binari distribusi tersedia untuk umum untuk diunduh dan digunakan

Perpanjangan Pembaruan - alias LTS (dukungan jangka panjang) - Pembaruan Publik di luar siklus rilis 6 bulan

Dukungan Komersial - beberapa penyedia menawarkan pembaruan terkini dan dukungan pelanggan kepada pelanggan yang membayar, misalnya Oracle JDK ( detail dukungan )

Lisensi Permisif - lisensi distribusi tidak protektif, mis. Apache 2.0


Distribusi Java mana yang harus saya gunakan?

Pada zaman Sun / Oracle, biasanya Sun / Oracle yang memproduksi distribusi JDK hilir milik berdasarkan sumber OpenJDK. Baru-baru ini, Oracle telah memutuskan untuk melakukan pembangunan sendiri hanya dengan dukungan komersial terlampir. Mereka dengan ramah mempublikasikan bangunan OpenJDK di situs https://jdk.java.net/ mereka .

Apa yang terjadi mulai JDK 11 adalah pergeseran dari pola pikir vendor tunggal (Oracle) ke pola pikir di mana Anda memilih penyedia yang memberi Anda distribusi untuk produk, di bawah kondisi yang Anda sukai: platform yang mereka bangun, frekuensi dan kecepatan rilis. , bagaimana dukungan terstruktur, dll. Jika Anda tidak mempercayai vendor yang ada, Anda bahkan dapat membangun OpenJDK sendiri.

Setiap build OpenJDK biasanya dibuat dari repositori sumber upstream asli yang sama (OpenJDK "the project"). Namun setiap build cukup unik - $ gratis atau komersial, bermerek atau tidak bermerek, murni atau dibundel (misalnya, BellSoft Liberica JDK menawarkan JavaFX yang dibundel, yang telah dihapus dari build Oracle mulai JDK 11).

Jika tidak ada lingkungan (misalnya, Linux) dan / atau persyaratan lisensi menentukan distribusi tertentu dan jika Anda menginginkan JDK build paling standar , maka mungkin pilihan terbaik adalah menggunakan OpenJDK oleh Oracle atau AdoptOpenJDK.


Informasi tambahan

Saatnya melihat melampaui JDK Oracle oleh Stephen Colebourne

Java Masih Gratis oleh komunitas Java Champions (diterbitkan pada 17 September 2018)

Java masih gratis 2.0.0 oleh komunitas Java Champions (diterbitkan pada 3 Maret 2019)

Aleksey Shipilev tentang JDK memperbarui wawancara dengan Opsian (diterbitkan pada 27 Juni 2019)

Mikhail Kholodkov
sumber
8
Anda dapat menambahkan menyebutkan bahwa vendor lain menyediakan implementasi Java berdasarkan OpenJDK seperti produk Zulu dan Zing dari Azul Systems . Lain adalah proyek Eclipse OpenJ9 .
Basil Bourque
2
@DmitriyPopov Sangat permisif - github.com/AdoptOpenJDK/openjdk-build/blob/master/LICENSE
Mikhail Kholodkov
1
@MikhailKholodkov Salah tentang lisensi Apache. Tautan Anda ke AdoptOpenJDK menggunakan Apache License 2.0 hanya berlaku untuk skrip build yang mereka tulis untuk membantu menghasilkan binari mereka. Binari dibangun dari kode sumber yang diperoleh dari proyek OpenJDK menggunakan GPL dengan menghubungkan lisensi pengecualian.
Basil Bourque
2
@GarrettWilson AdoptOpenJDK hanya melakukan 2 hal: (a) Membangun binari & installer menggunakan kode sumber yang disediakan oleh OpenJDK, dan (b) Menjalankan tes pada binari tersebut. AdoptOpenJDK tidak mengelola repositori kode sumber untuk mengimplementasikan platform Java. Jadi: OpenJDK hanya kode sumber, AdoptOpenJDK hanya binari + installer. Kode AdoptOpenJDK penulis hanya untuk alat bangunan & suite pengujian mereka. Selain AdoptOpenJDK, beberapa perusahaan lain juga menyediakan build berdasarkan kode sumber yang disediakan oleh proyek OpenJDK: Azul Systems, Oracle, BellSoft, Amazon AWS, RedHat / IBM, SAP, dan banyak lagi.
Basil Bourque
1
@ GarretWilson Saya harus menambahkan bahwa AdoptOpenJDK melakukan hal ketiga: (c) Membuat dan mengelola perkakas untuk mendukung bangunan & pengujian yang disebutkan dalam komentar saya sebelumnya.
Basil Bourque
64

Pembaruan: AdoptOpenJDK telah mengubah namanya menjadi Adoptium , sebagai bagian dari kepindahannya ke Eclipse Foundation .


OpenJDK ➙ kode sumber
Adoptium / AdoptOpenJDK ➙ builds

Perbedaan antara OpenJDK dan AdoptOpenJDK

Yang pertama menyediakan kode sumber , yang lain menyediakan build dari kode sumber itu.

Beberapa vendor Java & OpenJDK

Adoptium dari Eclipse Foundation , yang sebelumnya dikenal sebagai AdoptOpenJDK , hanya satu dari beberapa vendor yang mendistribusikan implementasi platform Java. Ini termasuk:

  • Eclipse Foundation (Adoptium / AdoptOpenJDK)
  • Sistem Azul
  • Peramal
  • Red Hat / IBM
  • BellSoft
  • GETAH
  • Amazon AWS
  • … Dan banyak lagi

Lihat bagan alur saya ini untuk membantu memandu Anda dalam memilih vendor untuk implementasi platform Java. Klik / ketuk untuk memperbesar.

Flowchart memandu Anda dalam memilih vendor untuk implementasi Java 11

Sumber daya lain: Matriks perbandingan oleh Azul Systems ini bermanfaat, dan tampaknya benar dan adil bagi saya.

Berikut adalah daftar pertimbangan dan motivasi untuk dipertimbangkan dalam memilih vendor dan implementasi.

Motivasi dalam memilih vendor untuk Java

Beberapa vendor menawarkan Anda pilihan teknologi JIT .

Diagram yang menunjukkan sejarah penggabungan HotSpot & JRockit, dan OpenJ9 keduanya tersedia di AdoptOpenJDK

Untuk memahami lebih lanjut tentang ekosistem Java ini, baca Java Is Still Free

Basil Bourque
sumber
1
Jika 'OpenJDK' merujuk ke sumber, lalu apa perbedaan antara hub.docker.com/_/openjdk dan hub.docker.com/_/adoptopenjdk ?
bcoughlan
1
@bcoughlan Anda harus bertanya kepada penerbit kedua produk tersebut: Docker, Inc. Halaman web tertaut Anda mengklaim bahwa yang kedua dikelola oleh proyek AdoptOpenJDK, sedangkan yang pertama dikelola oleh "Komunitas Docker". Yang pertama menyesatkan dalam penggunaan logo dan penamaan karena mungkin memberi Anda kesan bahwa proyek OpenJDK memproduksinya, yang tidak demikian. Yang pertama bahkan mungkin melanggar item # 2 dari pemberitahuan merek dagang yang diberikan oleh OpenJDK , tapi saya bukan pengacara.
Basil Bourque
1
@SanderVerhagen Bisakah Anda memberikan tautan ke halaman unduhan itu di situs OpenJDK? Saya tidak menemukan tawaran seperti itu. Saya menemukan tautan ke binari OpenJDK JDK Oracle untuk Windows, macOS, dan Linux di situs web lain: jdk.java.net . Situs itu dan unduhan binernya disediakan sebagai hak milik komunitas oleh Oracle, bukan oleh proyek OpenJDK. Seperti yang dikatakan beranda : Java Development Kit dibangun, dari Oracle . Saya menunjukkan produk ini sebagai gelembung kedua di laras biru diagram alur saya, sudut kanan atas.
Basil Bourque
1
@SanderVerhagen Tautan Anda mengarah ke situs web yang berbeda , seperti yang saya duga, di luar OpenJDK . Situs jdk.java.net/14 adalah bukan bagian dari situs web OpenJDK, juga bukan bagian dari proyek OpenJDK. Dengan kata lain, openjdk.java.net bukan jdk.java.net . Sekali lagi, lihat dua gelembung di bagian atas laras biru di diagram alir saya. Produk Oracle di kiri atas adalah produk komersial mereka. Produk Oracle di kanan atas adalah bangunan bebas biaya berlisensi GPL - tautan Anda mengarah ke produk khusus ini.
Basil Bourque
1
@SanderVerhagen Saya curiga Anda bingung dengan penamaan produk. Kata "Java" adalah merek dagang dari Oracle, dan hanya dapat digunakan dengan izin mereka. Oleh karena itu, sebagian besar vendor tidak menggunakan merek dagang itu. Sebaliknya sebagian besar vendor menggunakan istilah "OpenJDK" sebagai bagian dari penamaan mereka, bukan "Java". Vendor ini membuat build mereka dari kode sumber yang diperoleh dari proyek OpenJDK . Proyek OpenJDK hanya menyediakan kode sumber , bukan build, bukan installer. Untuk pembuat / pemasang, Anda harus membuatnya sendiri atau mendapatkannya dari vendor. Saya sarankan membaca Java Masih Gratis .
Basil Bourque