Begitu banyak JDK ... Yang mana yang digunakan dan apa yang mengancamnya?

Dari seorang penerjemah: Keputusan untuk menerjemahkan artikel ini tidak datang dengan sendirinya - melainkan merupakan ukuran yang diperlukan :). Kami, sebagai vendor kerangka CUBA, didekati dengan masalah ini dengan keteraturan yang patut ditiru. Tentu saja, ini juga merupakan topik yang sangat penting bagi kami, dan sebagai tanggapan terhadap perubahan terbaru, kami mengangkat bangku tes baik pada Oracle JDK dan OpenJDK - ukuran ini saat ini melindungi pengguna kami dari biaya lisensi yang tidak terduga. Namun, topik ini belum ditutup, dan kami terus memantau perkembangan acara, dan, siapa tahu, mungkin kita harus menambahkan stan untuk beberapa majelis JDK lainnya tahun depan ...


Artikel di bawah kucing tersebut memikat oleh fakta bahwa ia secara ringkas menggambarkan masalah dan JDK paling populer dengan fitur-fiturnya.


Oracle baru-baru ini mengumumkan bahwa evolusi Java akan berubah secara dramatis berkat peralihan ke "Release Train" - sebuah pendekatan baru untuk meluncurkan versi. Perubahan ini juga memerlukan perubahan dalam hal dukungan versi, yang sekarang akan diterapkan bukan untuk semua orang, tetapi hanya untuk versi LTS . Java Champions Community telah mengklarifikasi inovasi yang diperkenalkan, dokumen terperinci tersedia secara online .


Bahkan dengan berita ini, pertanyaan tetap: apa yang membangun JDK saat ini tersedia Apakah mereka akan bebas atau komersial? Sebelum menjawab pertanyaan ini, penting untuk memahami apa persyaratan untuk JDK sebagai produk. Bahkan, hanya ada satu kode sumber JDK inti. Dia disini . Siapa pun dapat menggunakan kode sumber untuk membangun rakitan mereka sendiri dan menempatkannya di suatu tempat di jaringan. Namun, ada prosedur sertifikasi terpisah yang harus diselesaikan agar majelis JDK dianggap sah. Sertifikasi diberikan oleh Java Community Process (JCP), yang menyediakan Kit Kompatibilitas Teknologi (TCK). Jika organisasi membuat rakitan OpenJDK baru yang memenuhi TCK, itu dianggap "Java SE kompatibel."


Ingatlah bahwa suatu perakitan tidak dapat disebut "Java SE" kecuali jika perusahaan perakitan tersebut memperoleh lisensi komersial dari Oracle. Misalnya, build AdoptOpenJDK yang lulus TCK bukan "Java SE", tetapi "Java SE compliant." Anda juga perlu mempertimbangkan bahwa sertifikasi sekarang didasarkan pada “bebas bersyarat” - hasilnya tidak dikirim ke JCP / Oracle untuk verifikasi dan merupakan informasi rahasia. Singkatnya, setiap vendor yang mengambil kode sumber OpenJDK dan membangun versi akan memunculkan bangunan JDK lain yang terpisah.


OpenJDKbilds


Jadi, tanpa basa-basi, kami sarankan Anda membiasakan diri dengan JDK siap pakai berikut ini:


Oracle JDK


Ini adalah penyedia utama Java 11 (rilis telah terjadi). Ini adalah versi komersial dengan dukungan berbayar. Ini dapat diunduh secara gratis dan hanya digunakan secara langsung untuk pengembangan. Anda tidak dapat menggunakannya dalam produksi tanpa membayar Oracle (jadi bagi banyak yang tidak tertarik dengan lisensi, ini jebakan). Oracle berencana untuk memberikan dukungan berbayar hingga tahun 2026 dan seterusnya. Berbeda dengan sebelumnya, perakitan Oracle JDK sama sekali tidak "lebih baik" daripada OpenJDK (selama keduanya berada pada tingkat patch keamanan yang sama).


Oracle OpenJDK Build


Ada versi OpenJDK non-merek gratis yang didistribusikan di bawah GPL dengan Extension Classpath (cocok untuk penggunaan komersial). Versi build ini hanya tersedia selama 6 bulan setelah rilis. Java 11 diharapkan untuk merilis Java versi 11.0.0 dan dua tambalan keamanan, 11.0.1 dan 11.0.2. Untuk terus menggunakan versi OpenJDK dan tambalannya dari Oracle, Anda harus meningkatkan ke Java 12 selambat-lambatnya sebulan setelah peluncuran. Harap perhatikan bahwa prosedur untuk menyediakan tambalan keamanan berbeda dari prosedur untuk memberikan dukungan, yang mencakup pembayaran untuk memproses laporan kesalahan.


AdoptOpenJDK


Ini juga build OpenJDK gratis dan tidak bermerek yang didistribusikan di bawah GPL dengan Extension Classpath, tidak seperti build OpenJDK Oracle, versi build ini akan bertahan lebih lama untuk versi-versi utama seperti Java 11. Versi Java 11 akan dirilis selama 4 tahun, satu tahun setelah rilis besar berikutnya. AdoptOpenJDK berorientasi pada masyarakat. Sementara tim lain membuat dan mempublikasikan perbaikan keamanan untuk repositori OpenJDK asli, mereka akan merilis build. Baik IBM dan Red Hat telah mengindikasikan bahwa mereka bermaksud untuk merilis tambalan tersebut.


AdoptOpenJDK OpenJ9


Selain OpenJDK standar yang dibangun, AdoptOpenJDK juga akan menyediakan versi dengan OpenJ9 bukan HotSpot. OpenJ9 awalnya adalah IBM JVM, tetapi OpenJ9 sekarang open source. Dan, omong-omong, opsi ini adalah yang paling layak dipelajari.


Red Hat OpenJDK


Red Hat menyediakan OpenJDK versi build di Red Hat Enterprise Linux (RHEL), produk komersial dengan dukungan berbayar. Red Hat melakukan pekerjaan perbaikan keamanan yang cukup bagus di OpenJDK. Di masa lalu, Red Hat bertanggung jawab atas pembaruan keamanan Java 6 dan 7. Build Red Hat lebih terintegrasi dengan sistem operasi, sehingga tidak dapat disebut build OpenJDK yang khas (tidak ada pengguna akhir JDK).


Azul zulu


Zulu adalah versi OpenJDK bermerek dengan dukungan komersial berbayar. Selain itu, meskipun Azul menyediakan beberapa item Zulu secara gratis melalui Komunitas Zulu, mereka tidak memiliki kewajiban khusus untuk membuat majelis ini tersedia. Azul memiliki rencana dukungan Zulu yang cukup besar, termasuk dukungan untuk Java 9, 13, dan 15 , tidak seperti vendor lain.


Amazon corretto


Ini adalah yang terbaru dari semua opsi yang dijelaskan. Corretto adalah versi gratis dari OpenJDK build dengan dukungan jangka panjang melalui TCK. Ini didistribusikan di bawah ketentuan lisensi standar untuk semua versi OpenJDK: GPL + CE. Amazon akan membuat tambalan sendiri dan meluncurkan Corretto di AWS, sehingga akan digunakan cukup aktif (dan sudah ditambahkan ke beberapa produk). Dukungan untuk Java 8 direncanakan setidaknya hingga Juni 2023.


Dalam proses konversi OpenJDK asli ke versi rakitan yang berbeda, pabrikan dapat menambahkan berbagai utilitas atau merek produk jika ini tidak menghalangi sertifikasi (TCK). Misalnya, Anda tidak dapat menambahkan metode publik baru ke API atau sumber daya bahasa baru.


Ada implementasi JDK lainnya seperti IBM dan SAPMachine. Namun, versi perakitan ini tidak sering digunakan, jadi tidak disebutkan dalam artikel ini. Informasi lebih lanjut dapat ditemukan di sini dan di sini .


Kesimpulan


Secara pribadi, saya tidak melihat masalah tertentu di hadapan beberapa versi JDK, karena semuanya perlu disertifikasi (TCK). Apa yang benar-benar layak dikhawatirkan adalah penggunaan salah satu JDK eksklusif dan versi perakitan gratis dari Oracle, untuk menghindari sakit kepala di masa depan. Jika Anda hanya menggunakan fungsi dasar (misalnya, bisnis Anda tidak terlalu tergantung pada pembaruan keamanan), OpenJDK dibuat dari Oracle (BUKAN OracleJDK) lebih cocok untuk Anda, karena mereka terus diperbarui (dalam 6 bulan setelah rilis), dan Anda dapat menggunakan JDK dalam produksi tanpa masalah. Jika bisnis Anda menggunakan layanan cloud (atau dengan AWS), AWS Corretto, yang sudah dapat digunakan di Amazon Linux dan Docker , adalah pilihan yang baik.

Source: https://habr.com/ru/post/id434790/


All Articles