Memahami sun.misc.Unsafe

Minggu lalu berita diberhentikan bahawa beberapa pemaju bersiap sedia, mendakwa bahawa cadangan Oracle untuk membuang sun.misc.Unsafedi 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 Unsafesebagai penyelesaian yang kurang terkendali.

Winterhalter menyajikan salah satu daripada beberapa contoh yang digunakan Unsafeuntuk mengatasi rintangan pengaturcaraan Java:

Kali pertama saya menggunakan Unsafekelas 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 Unsafekelas 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 Unsafedalam program Java.

Kisah ini, "Memahami sun.misc.Unsafe" pada asalnya diterbitkan oleh JavaWorld.