上一篇 序列化进阶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 有独立的语法和编译器 |

本文探讨了Java中利用序列化实现深克隆的方法,对比了Java序列化与其他序列化框架如Xml、Json、Hessian和Protobuf的优劣。Java序列化虽然方便,但不支持跨语言且数据量大;Xml具有良好的可读性和语言无关性,适合低性能要求的内部系统;Json轻量级且可读性好;Hessian和Protobuf则提供了跨语言支持和高性能,但学习成本和使用复杂度相对较高。
2076

被折叠的 条评论
为什么被折叠?



