Bu sorunun cevabı, belki de şaşırtıcı bir şekilde, asla veya daha gerçekçi olarak, sadece eski kodla birlikte çalışabilmeniz gerektiğinde . Joshua Bloch'un Etkili Java, 3.Baskı önerisi :
Yazdığınız herhangi bir yeni sistemde Java serileştirmeyi kullanmak için hiçbir neden yoktur
Oracle'ın baş mimarı Mark Reinhold, mevcut Java serileştirme mekanizmasının kaldırılmasının uzun vadeli bir hedef olduğunu söylüyor.
Java serileştirmesi neden kusurlu?
Java, dilin bir parçası olarak, Serializable
arabirimi kullanarak seçebileceğiniz bir serileştirme şeması sağlar. Bununla birlikte, bu şema birkaç inatçı kusura sahiptir ve Java dil tasarımcıları tarafından başarısız bir deneme olarak ele alınmalıdır.
- Temelde bir kişinin bir nesnenin serileştirilmiş formu hakkında konuşabileceğini iddia eder . Ancak sonsuz sayıda serileştirme şeması vardır, bu da sonsuz sayıda serileştirilmiş formla sonuçlanır. Bir şemayı uygulayarak, şemayı değiştirmenin herhangi bir yolu olmadan, uygulamalar kendileri için en uygun şemayı kullanamazlar.
- Nesnelerin inşa edilmesi için ek bir araç olarak uygulanır; bu, kurucularınızı veya fabrika yöntemlerinizi gerçekleştiren önkoşul kontrollerini atlar. Zor, hataya yatkın ve ekstra serileştirme kodunu test etmek zor olmadığı sürece, kodunuzun muhtemelen güvenlik açığı zayıftır.
- Serileştirilmiş formun farklı sürümlerinin birlikte çalışabilirliğini test etmek çok zordur.
- Değişmez cisimlerin taşınması zahmetlidir.
Bunun yerine ne yapmalı
Bunun yerine, açıkça denetleyebileceğiniz bir serileştirme şeması kullanın. Protokol Tamponları, JSON, XML veya kendi özel şemanız gibi.