Bagaimana cara kerja pemeliharaan OpenJDK dalam praktek?


9

Secara khusus, saya ingin memahami perbedaan antara JDK dan OpenJDK Oracle dalam hal perbaikan bug dan tambalan lainnya.

Cabang mana yang mendapat perbaikan lebih dulu dan apakah Oracle terbiasa membuat tambalan yang tidak pernah berhasil ke OpenJDK?

Jawaban:


6

Ini dijelaskan dalam banyak perincian di halaman OpenJDK: JDK 7 Memperbarui Proposal T&J Proyek

Apakah Proyek ini akan berfungsi sebagai dasar untuk rilis Pembaruan Oracle JDK 7?

Iya.

Mengutip dari posting blog Joe Darcy FOSDEM di OpenJDK 6 :

Secara khusus, tidak akan ada dikotomi yang sama antara basis kode OpenJDK 7 dan basis kode pembaruan 7 karena ada antara OpenJDK 6 dan kereta pembaruan 6 ...

Per bacaan saya, di atas pada dasarnya berarti bahwa tambalan dan pembaruan biasanya akan pergi dulu ke Buka JDK dan kemudian, dengan penundaan sekecil mungkin, disampaikan dalam Oracle JDK.

Untuk tambalan keamanan, gambar tampaknya berlawanan, yaitu saya lebih suka mengharapkan mereka untuk pergi dulu ke rilis Oracle dan kemudian (sekali lagi, dengan penundaan sekecil mungkin) ke OpenJDK:

Apakah Proyek 7 Pembaruan akan menerima perbaikan keamanan dari Oracle?

Iya.

Seperti dengan OpenJDK 6, perbaikan keamanan pertama-tama dirahasiakan dan diterapkan pada hutan pribadi sebelum didorong ke hutan publik sebagai bagian dari publikasi umum yang disinkronkan untuk memperbaiki kereta rilis JDK yang terkena dampak. Selain itu, mereka tidak akan melalui peninjauan kode publik dan proses persetujuan kemunduran, dan masalah terkait mereka dalam pelacak masalah Proyek tidak akan terlihat oleh publik.

Kapan Proyek ini akan menerima perbaikan keamanan dari Oracle?

Jadwal untuk Pembaruan Patch Kritis Oracle Java SE tersedia untuk umum .

Perbaikan keamanan untuk kode sumber Proyek ini akan tersedia di Proyek Pembaruan JDK 7 sekitar waktu yang sama seperti yang dirilis dalam produk-produk dari Oracle ...


Untuk lebih memahami alasan mengapa tampaknya ada begitu banyak upaya yang dilakukan untuk menjaga agar Oracle dan Open JDK tetap sinkron, masuk akal untuk melihat keputusan Oracle tentang proyek sebelumnya: Pindah ke OpenJDK sebagai Java Reference Reference Implementasi SE 7 resmi :

... Oracle dan anggota lain dari Java SE 7 Expert Group telah memberikan sentuhan akhir pada spesifikasi Java SE 7 ( JSR 336 ). Dalam perannya sebagai pemimpin spesifikasi, Oracle bertanggung jawab untuk memberikan Implementasi Referensi Java SE 7 ... kami akan memberikan Referensi Implementasi yang sepenuhnya didasarkan pada kode open source OpenJDK dan membuatnya tersedia di bawah lisensi open source GPL .

Peran Implementasi Referensi (RI) akan digunakan sebagai standar emas untuk semua implementasi Java. Untuk memiliki implementasi yang disertifikasi sebagai Java SE yang kompatibel, implementor harus lulus sejumlah besar uji kompatibilitas - Technology Compatibility Kit (TCK). Selanjutnya, implementasi dapat dibandingkan dengan RI sebagai pemeriksaan kompatibilitas tambahan. Pada dasarnya, jika implementasi Anda telah disertifikasi memiliki perilaku yang sama dengan RI maka itu kompatibel dengan Java. Untuk informasi lebih lanjut tentang topik ini, lihat FAQ JCP .

Secara historis, Sun selalu menggunakan Sun JDK sebagai RI dan membuatnya tersedia di bawah Lisensi Kode Biner (BCL). Ini sangat nyaman bagi Sun karena itu berarti bahwa implementasi produknya sesuai dengan definisi. Namun, itu juga membingungkan karena Sun JDK berisi beberapa fitur yang bukan bagian dari standar, seperti Plugin Java. Juga, melanjutkan praktik ini akan menyulitkan pelaksana sumber terbuka karena mereka tidak akan dapat mempelajari dan mengevaluasi kode sumber resmi RI. (Kode sumber untuk Oracle JDK sedikit berbeda dari OpenJDK - sesuatu yang akan kita bahas bergerak maju).

Dengan mengingat hal itu, Oracle akan:

  • Buat binari RI hanya berdasarkan pada basis kode OpenJDK.
  • Sediakan binari RI di bawah BCL (lisensi Java normal) untuk implementor komersial dan GPLv2 (dengan pengecualian Classpath) untuk implementor open-source.
  • Terus memberikan TCK ke lisensi komersial, tetapi juga memperbarui lisensi OCTLA sehingga mencakup Java SE 7. Yang terakhir memungkinkan implementator open source akses gratis ke TCK untuk memverifikasi implementasi mereka ...

Keputusan di atas berarti banyak upaya untuk dimasukkan ke dalam kode JDK Terbuka, untuk merilis kode yang diverifikasi, diuji, dilisensikan, dan patuh secara resmi. Jika Anda menambahkan bahwa itu harus dirilis mengikuti jadwal publik yang disepakati, menjadi jelas bahwa upaya seperti itu akan hampir sama dengan yang sebelumnya dimasukkan ke dalam rilis "tradisional" Sun / Oracle Java.

Hal ini menjadikannya masuk akal untuk menjaga basis kode Open dan Oracle JDK sedekat mungkin: jika tidak, duplikasi pengembangan dan perbaikan untuk membuat kedua proyek sesuai dengan TCK dapat menjadi hal yang menakutkan.

Sepertinya keputusan untuk menggunakan Open JDK sebagai Implementasi Referensi membuatnya demi kepentingan terbaik Oracle untuk menjaga JDK mereka sedekat mungkin dengan sinkronisasi dengan Open JDK - hingga rilis JDK 7.

Untuk memahami apa yang dapat memotivasi Oracle untuk terus menyinkronkan sinkronisasi lebih lanjut, dengan rilis pembaruan JDK 7, orang akan lebih baik melihat proyek Open JDK 8 , yang tujuannya dijelaskan cukup mirip dengan Open JDK 7:

Tujuan Proyek ini adalah untuk menghasilkan implementasi referensi open-source dari Java SE 8 Platform, yang akan didefinisikan oleh JSR 337 dalam Java Community Process .

Untuk alasan yang sama seperti yang dijelaskan di atas mengenai implementasi referensi JDK 7, sekali lagi, demi kepentingan terbaik Oracle untuk menjaga pembaruan kedua JDK sebanyak yang selaras mungkin.

Semakin banyak perbedaan antara JDK ini sekarang, semakin sulit bagi Oracle untuk merilis Java SE 8, karena duplikasi upaya yang diperlukan untuk membawa rilis mereka sendiri sesuai dengan TCK. Sebaliknya juga benar, yaitu semakin dekat kedua proyek sekarang, semakin sedikit upaya yang diperlukan untuk merilis kedua implementasi Java 8.


Apakah pernah terjadi pada Anda untuk mendukung secara paralel dua versi yang sedikit berbeda dari perangkat lunak yang sama, yang ditargetkan pada klien yang berbeda? Jika ya, Anda mungkin ingat keinginan untuk menjaga keduanya sedekat mungkin, dan ketidaknyamanan yang Anda alami saat ini tidak sinkron. Dengan Open dan Oracle JDK, itu hampir seperti itu, hanya pada skala yang lebih besar.


Apakah proyek pembaruan JDK 7 akan menerima tambalan dari Oracle setelah Maret 2015, yaitu setelah berakhirnya pembaruan gratis untuk Java 7 dari Oracle?
Reinstate Monica - M. Schröder

@ MartinSchröder sulit diceritakan tanpa membaca pikiran Oracle. Ini mungkin banyak tergantung pada apakah Java 8 akan menjadi versi resmi / yang didukung saat itu
gnat

4

Hampir semua perbaikan bug langsung melalui proyek OpenJDK dan kemudian ke vendor JVM hilir (Oracle, Azul, RedHat dll).

Pengecualian adalah bahwa beberapa patch keamanan diperbaiki dalam versi hilir (khususnya Oracle) sebelum diam-diam porting kembali ke OpenJDK. Hal ini memungkinkan vendor untuk meningkatkan sebagian besar dunia dengan perbaikan keamanan sebelum mempublikasikan kerentanan dalam proyek open source.

Beberapa vendor juga memilih untuk tidak mendorong perubahan mereka kembali ke OpenJDK. Misalnya Google dan Twitter telah memodifikasi versi OpenJDK yang mereka gunakan secara internal dengan perbaikan bug dan fitur yang belum kembali ke proyek OpenJDK utama.

HTH

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.