序列化java对象图的最佳方法是什么?
我对序列化库的要求是1)反序列化的速度2)大小-尽可能小(小于java默认序列化) 3)灵活性-必须序列化的内容的基于注释的定义会很好。
底层文件格式并不重要。
我研究了Protocol Buffers和XStream,但前者由于需要映射文件而不够灵活,而后者会生成大文件。
感谢您的帮助。
发布于 2009-04-04 14:38:55
对于序列化,Hessian是最有效的方法之一。
即使使用Externalizable类,这也比Java序列化小2-3倍,而且速度更快。
无论使用哪种序列化,都可以相当容易地使用压缩来使数据更紧凑。
除此之外,您还可以编写自己的序列化。我写了一个串行化程序,它可以写入ByteBuffer,它的速度大约是Hessian的两倍,大小是Hessian的一半(大约比Java Serialization快5倍/更小),如果现有的序列化可以做你需要的事情,这可能是太费力气了。但是,它可以根据您的喜好进行自定义;)
发布于 2009-04-04 14:46:20
对于小对象,Java序列化形式很可能由序列化类的描述主导。
您可以写出常用类的序列化数据,然后将其用作一系列序列化流的公共前缀。注意,这是非常脆弱的,您可能需要为每个类加载器实例重新计算和检查它。
发布于 2009-04-11 00:57:27
我第二个注意到压缩的有用性--所有格式压缩到大致相同,即越大的输出压缩得越多。
除此之外,带有Jackson的JSON工作得非常好:比XML快得多(与PB、Hessian竞争),更紧凑;比PB灵活得多,易于与客户端JS集成(如果重要的话),并且易于故障排除。
https://stackoverflow.com/questions/717090
复制相似问题