java序列化实践

java序列化实践,java,serialization,kryo,Java,Serialization,Kryo,我正在阅读不同的方法/工具来序列化对象,我正在为我的应用程序寻找最新的建议(因为我可以从2012年、2010年……中找到许多类似的问题+答案) 我需要将一些java对象写入磁盘。我希望节省磁盘空间,因为这些对象可能包含大量数据,而且我希望能很快做到这一点 到目前为止,它是用java标准序列化完成的,但是实现可能不是很好(没有显式的serialID集,…)。 我读过关于kryo库的文章,但我有点害怕使用第三方库,因为我不知道它们的维护情况如何/它们的使用情况有多普遍。 或者我应该改进可序列化接口的

我正在阅读不同的方法/工具来序列化对象,我正在为我的应用程序寻找最新的建议(因为我可以从2012年、2010年……中找到许多类似的问题+答案)

我需要将一些java对象写入磁盘。我希望节省磁盘空间,因为这些对象可能包含大量数据,而且我希望能很快做到这一点

到目前为止,它是用java标准序列化完成的,但是实现可能不是很好(没有显式的serialID集,…)。 我读过关于kryo库的文章,但我有点害怕使用第三方库,因为我不知道它们的维护情况如何/它们的使用情况有多普遍。
或者我应该改进可序列化接口的使用吗?如果是,是否有关于正确实现的良好文档?

此解决方案有助于节省磁盘空间,并且基于Java标准库

ObjectOutputStream oos = new ObjectOutputStream(new GZIPOutputStream(new FileOutputStream("file")));
oos.writeObject(obj);
...

ObjectInputStream ois = new ObjectInputStream(new GZIPInputStream(new FileInputStream("file")));
obj = ois.readObject();
...

仔细看看java.beans.xmlcoder。另一个速度非常快的库是Jackson 2,它是一个json库。xmlcoder会放大包含大量数据点的对象的文件大小,不是吗?@July为什么?与什么相比?不是每个(子)对象都被包装在标记中吗?但是,在理解如何使用xml编码器保存内容时,我可能是错的。例如,与通过JOS编写的文件相比……当然,前提是对象是可序列化的。:-)当然,我不认为有任何对象序列化的解决方案