上一篇 挖的坑里提到过想用Google的Protocol Buffer替换掉Java原生的序列化机制。作为“学究派”,原来是想对两者先做一个比较分析的。
过程中,无意看到一篇博客上提到Joshua Bloch(《Effective Java》的作者)建议不要再使用Java(原生的)序列化机制。
特地翻了下《Effective Java》的第三版,在ITEM85中有这样一句:
There is no reason to use Java serialization in any new system you write.
之前对于原生序列化机制性能低下的理解还停留在:
- 它会携带类本身的信息。
- 如果父类也实现了序列化,则会携带父类相关的信息。
- 如果引用了某些对象,则引用对象也会被序列化。
而Bloch的例子里:待序列化的对象仅包含201个HashSet实例对象,每个实例对象仅包含3个或者更少的对象引用。序列化后的结果字节流达到了0.5M。反序列化时候,甚至需要计算2的100次hashcode。
戏谑一点的说“知道它烂,但不知道它这么烂”。因此也就没有再做对比分析的必要了。
不过Protocol Buffer确实不太容易上手,不仅有不少概念,连使用层面也没有fastjson这样的第三方库。等下一篇来填吧。
网友评论