Java 序列化(Java Serialization)虽然使用简单,但在实际工程中存在不少明显的缺点和隐患,这也是为什么在 Java 9 之后官方逐步弱化它,并推荐替代方案的原因。
反序列化漏洞(Deserialization Vulnerability)
readObject() 等方法✅ 官方态度:
Java 序列化是 Java 生态中最大的安全隐患之一
对比:
| 序列化方式 | 性能 | 数据大小 |
|---|---|---|
| Java Serialization | ❌ 慢 | ❌ 大 |
| JSON | 中 | 中 |
| Protobuf | ✅ 快 | ✅ 小 |
| Kryo / FST | ✅ 快 | ✅ 小 |
java.io.InvalidClassException
serialVersionUIDSerializable 接口class User implements Serializable {
private Address address; // Address 也必须 Serializable
}
很多开发者误把 Java 序列化当“万能存储方案”。
| 场景 | 原因 |
|---|---|
| RPC 通信 | 性能差、跨语言差 |
| 缓存(Redis / Memcached) | 体积大、风险高 |
| 文件存储 | 格式不稳定 |
| 微服务间通信 | 不跨语言 |
| 安全敏感系统 | 反序列化漏洞 |
✅ 仅限以下情况:
Java 序列化“能用,但不推荐用”
在性能和安全性要求较高的系统中,应尽量避免使用。
如果你愿意,我可以帮你:
只要告诉我你的使用场景即可。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。