Memahami sun.misc.Unsafe
Minggu lalu berita diberhentikan bahawa beberapa pemaju bersiap sedia, mendakwa bahawa cadangan Oracle untuk membuang sun.misc.Unsafe
di Java 9 akan merosakkan ekosistem Java. Bagi banyak pembangun yang tidak terlibat dalam pengaturcaraan tahap rendah, bagaimanapun, API peribadi mungkin diselimuti misteri. Apa API ini begitu berbahaya sehingga namanya tidak selamat ?
Blogger dan penyumbang sumber terbuka Rafael Winterhalter menjelaskan dalam "Memahami sun.misc.Unsafe" bahawa kod tidak selamat sering diperlukan untuk pengaturcaraan peringkat rendah, di mana pembangun mengubah fungsi platform untuk tujuan tertentu. Walaupun JNI (Java Native Interface) dianggap sebagai pilihan paling selamat untuk pengaturcaraan Java tingkat rendah, banyak projek sumber terbuka telah digunakan Unsafe
sebagai penyelesaian yang kurang terkendali.
Winterhalter menyajikan salah satu daripada beberapa contoh yang digunakan Unsafe
untuk mengatasi rintangan pengaturcaraan Java:
Unsafe
kelas adalah untuk membuat contoh kelas tanpa memanggil mana-mana pembina kelas. Saya perlu memproksi seluruh kelas yang hanya mempunyai konstruktor yang agak bising tetapi saya hanya mahu mewakilkan semua kaedah panggilan ke contoh sebenar [...] Membuat subkelas adalah mudah dan jika kelas itu diwakili oleh antara muka, membuat proksi akan menjadi tugas lurus ke hadapan. Dengan konstruktor yang mahal, saya bagaimanapun tersekat. Dengan menggunakan
Unsafe
kelas itu, saya berjaya menyelesaikannya.
Lihat "Memahami sun.misc.Unsafe" dan "sihir Java, Bahagian 4: sun.misc.Unsafe" untuk contoh tambahan yang menunjukkan mengapa dan bagaimana penggunaan Unsafe
dalam program Java.
Kisah ini, "Memahami sun.misc.Unsafe" pada asalnya diterbitkan oleh JavaWorld.