哪个是 Java 序列化的最佳替代方案?

2022-08-31 20:05:45

我目前正在处理一个项目,该项目需要持久化任何类型的对象(我们无法控制其实现),以便以后可以恢复这些对象。

我们无法实现 ORM,因为我们无法在开发时限制库的用户。

我们的第一个替代方案是使用Java默认序列化对其进行序列化,但是当用户开始传递同一对象的不同版本(属性更改了类型,名称等)时,我们在恢复对象时遇到了很多麻烦。

我们已经尝试使用XMLEncoder类(将对象转换为XML),但是我们发现缺乏功能(例如不支持枚举)。

最后,我们还尝试了 JAXB,但这迫使我们的用户注释他们的类。

有什么好的选择吗?


答案 1

现在是 2011 年,在商业级 REST Web 服务项目中,我们使用以下序列化程序为客户提供各种媒体类型:

  • XStream(用于 XML,但不用于 JSON)
  • Jackson (for JSON)
  • Kryo(一种快速、紧凑的二进制序列化格式)
  • 微笑(Jackson 1.6 及更高版本附带的二进制格式)。
  • Java 对象序列化。

我们最近尝试了其他序列化程序:

  • SimpleXML看起来很可靠,运行速度是XStream的2倍,但对于我们的情况来说,需要太多的配置。
  • YamlBeans有几个错误。
  • SnakeYAML有一个与日期有关的小错误。

Jackson JSON、Kryo 和 Jackson Smile 都比旧的 Java Object Serialization 快 3 到 4.5 倍。XStream处于缓慢的一面。但在这一点上,这些都是可靠的选择。我们将继续监控其他三个。


答案 2

http://x-stream.github.io/ 很好,请看一看!非常方便