Memahami sun.misc.Unsafe

Pekan lalu tersiar kabar bahwa beberapa pengembang angkat senjata, mengklaim bahwa usulan penghapusan Oracle sun.misc.Unsafedi Java 9 akan menghancurkan ekosistem Java. Bagi banyak pengembang yang tidak terlibat dalam pemrograman tingkat rendah, bagaimanapun, API pribadi kemungkinan diselimuti misteri. Apa API ini begitu berbahaya sehingga namanya tidak aman ?

Blogger dan kontributor open source Rafael Winterhalter menjelaskan dalam "Memahami sun.misc.Unsafe" bahwa kode yang tidak aman sering kali diperlukan untuk pemrograman tingkat rendah, di mana pengembang mengubah fungsionalitas platform untuk tujuan tertentu. Meskipun JNI (Java Native Interface) dianggap sebagai opsi teraman untuk pemrograman Java tingkat rendah, banyak proyek sumber terbuka telah digunakan Unsafesebagai solusi yang tidak terlalu dibatasi.

Winterhalter menyajikan salah satu dari beberapa contoh yang digunakan Unsafeuntuk mengatasi rintangan pemrograman Java:

Pertama kali saya menggunakan Unsafekelas untuk membuat instance kelas tanpa memanggil konstruktor kelas apa pun. Saya perlu mem-proxy seluruh kelas yang hanya memiliki konstruktor yang agak berisik tetapi saya hanya ingin mendelegasikan semua pemanggilan metode ke contoh nyata [...] Membuat subkelas itu mudah dan jika kelas tersebut telah diwakili oleh sebuah antarmuka, membuat sebuah proxy akan menjadi tugas langsung. Dengan konstruktor mahal, saya terjebak. Dengan menggunakan Unsafekelas, bagaimanapun saya dapat mengatasinya.

Lihat "Memahami sun.misc.Unsafe" dan "Java magic, Bagian 4: sun.misc.Unsafe" untuk contoh tambahan yang mendemonstrasikan mengapa dan bagaimana menggunakan Unsafeprogram Java.

Artikel ini, "Memahami sun.misc.Unsafe" awalnya diterbitkan oleh JavaWorld.