Jawaban atas pertanyaan ini adalah, mungkin secara mengejutkan, tidak pernah , atau lebih realistis, hanya ketika Anda dipaksa untuk interoperabilitas dengan kode lama . Ini adalah rekomendasi dalam Java Efektif, Edisi ke-3 oleh Joshua Bloch:
Tidak ada alasan untuk menggunakan serialisasi Java dalam sistem baru apa pun yang Anda tulis
Kepala arsitek Oracle, Mark Reinhold, pada catatan mengatakan menghapus mekanisme serialisasi Java saat ini adalah tujuan jangka panjang.
Mengapa serialisasi Java cacat
Java menyediakan skema serialisasi yang bisa Anda pilih sebagai bagian dari bahasa, dengan menggunakan Serializable
antarmuka. Namun skema ini memiliki beberapa kelemahan yang tidak dapat dipecahkan dan harus diperlakukan sebagai percobaan yang gagal oleh perancang bahasa Jawa.
- Hal mendasar berpura-pura bahwa seseorang dapat berbicara tentang itu bentuk serial dari suatu objek. Tetapi ada banyak skema serialisasi yang tak terhingga, menghasilkan banyak bentuk serialisasi yang tak terhingga. Dengan memaksakan satu skema, tanpa ada cara mengubah skema, aplikasi tidak dapat menggunakan skema yang paling sesuai untuk mereka.
- Ini diimplementasikan sebagai sarana tambahan untuk membangun objek, yang mem-bypass prekondisi apa pun yang dilakukan konstruktor atau metode pabrik Anda. Kecuali tertulis rumit, rawan kesalahan, dan sulit untuk menguji kode deserialisasi tambahan, kode Anda mungkin memiliki kelemahan keamanan yang menganga.
- Menguji interoperabilitas versi berbeda dari bentuk serial sangat sulit.
- Menangani benda yang tidak bisa bergerak adalah masalah.
Apa yang harus dilakukan
Alih-alih, gunakan skema serialisasi yang dapat Anda kontrol secara eksplisit. Seperti Protokol Buffer, JSON, XML, atau skema kustom Anda sendiri.