上一篇 序列化进阶1-Java序列化注意事项。Java 序列化还可以实现 深克隆哦。
在 Java 中存在一个 Cloneable 接口,通过实现这个接口的类都会具备clone 的能力,同时 clone 是在内存中进行,在性能方面会比我们直接通过 new 生成对象要高一些,特别是一些大的对象的生成,性能提升相对比较明显。深克隆和浅克隆在这就不谈了。Java 序列化实现深克隆的原理是把对象序列化输出到一个流中,然后再把对象从序列化流中读取出来,这个对象就不是原来的对象了。
序列化框架 | 开源工具 | 优势 | 劣势 |
Java |
| JAVA 语言本身提供,使用比较方便和简单 | 1. 不支持跨语言处理 2.性能相对不是很好,序列化以后产生的数据 相对较大 |
Xml |
| 1.可读性好,方便阅读和调试 | 序列化以后的字节码文件比较大,而且效率不高,适用于对性能不高,而且 QPS 较 低的企业级内部系统之间的数据交换的场景 |
Json | Jackson、FastJson、GSON | 是一种轻量级的数据交换格式,相对于 XML 来说,JSON 的字节流更小,而且可读性也非常好 |
|
Hession |
| 1.支持跨语言传输的二进制序列化协议 |
|
Protobuf | https://github.com/google/protobuf/releases | 1.独立于语言、独立于平台 2.空间开销小和性能比较好 | 1.学习成本比较高 2.Protobuf 有独立的语法和编译器 |