Câu trả lời cho câu hỏi này, có lẽ đáng ngạc nhiên, không bao giờ , hoặc thực tế hơn, chỉ khi bạn bị buộc phải có khả năng tương tác với mã kế thừa . Đây là khuyến nghị trong Java hiệu quả, Ấn bản thứ 3 của Joshua Bloch:
Không có lý do để sử dụng tuần tự hóa Java trong bất kỳ hệ thống mới nào bạn viết
Kiến trúc sư trưởng của Oracle, Mark Reinhold, được ghi nhận rằng việc loại bỏ cơ chế tuần tự hóa Java hiện tại là một mục tiêu dài hạn.
Tại sao tuần tự hóa Java là thiếu sót
Java cung cấp như một phần của ngôn ngữ một sơ đồ tuần tự hóa mà bạn có thể chọn tham gia, bằng cách sử dụng Serializable
giao diện. Tuy nhiên, lược đồ này có một số sai sót khó hiểu và nên được coi là một thử nghiệm thất bại của các nhà thiết kế ngôn ngữ Java.
- Nó cơ bản giả vờ rằng người ta có thể nói về các hình thức tuần tự của một đối tượng. Nhưng có vô số các sơ đồ tuần tự hóa, dẫn đến vô số nhiều dạng nối tiếp. Bằng cách áp đặt một lược đồ, không có cách nào thay đổi lược đồ, các ứng dụng không thể sử dụng lược đồ phù hợp nhất với chúng.
- Nó được triển khai như một phương tiện bổ sung để xây dựng các đối tượng, bỏ qua mọi điều kiện tiên quyết kiểm tra các nhà xây dựng hoặc phương thức nhà máy của bạn thực hiện. Trừ khi khó khăn, dễ bị lỗi và khó kiểm tra mã giải trừ thêm được viết, mã của bạn có thể có một điểm yếu bảo mật.
- Kiểm tra khả năng tương tác của các phiên bản khác nhau của hình thức nối tiếp là rất khó khăn.
- Xử lý các đối tượng bất biến là rắc rối.
Làm gì để thay thế
Thay vào đó, sử dụng sơ đồ tuần tự hóa mà bạn có thể kiểm soát rõ ràng. Chẳng hạn như Bộ đệm giao thức, JSON, XML hoặc lược đồ tùy chỉnh của riêng bạn.