Java XStream库的现代替代品?

时间:2011-05-28 01:11:12

标签: java xml xstream

我多年前使用过XStream,但我发现自2008年以来这些库没有更新(latest news)。现在是否有更现代化和最新的Java XML序列化库?

6 个答案:

答案 0 :(得分:23)

按照偏好,相关性和活动的顺序:

JAXB

访问JAXB project's site,查看tutorialguide。 还要看一下原来的JAXB architecture whitepaper

上面列出的JAXB项目是API的参考实现,由GlassFish Application Server打包。

EclipseLinkMOXy

访问EclipseLink project's site并阅读此introductory article to EclipseLink on InfoQ,然后查看Blaise Doughan's answer about MOXy

EclipseLink源自Oracle的TopLink,现在是开源的,由Eclipse Foundation管理,并在许多基于Eclipse的产品中使用。

XStream

是的,XStream,因为你问过它实际上是updated in 2011 with a major update and 2 service releases,所以它看起来维护得很好并且mature projects使用了很好的竞争者。不要忘记查看version 1.4.x中的新内容。

访问XStream project's site及其tutorial进行比较。

XmlBeans

访问XmlBeans project's site

XmlBeans是一个经过充分测试的项目,已经存在了一段时间。

JiBX

访问JiBX project's site,关注tutorialguide

如果你不喜欢XmlBeans甚至JAXB的复杂性,JiBX可能是一个更简单的选择。

答案 1 :(得分:10)

注意:我是EclipseLink JAXB (MOXy)负责人,也是JAXB(JSR-222)专家组的成员。

在选择软件时考虑库的发布频率是正确的。新产品发布的原因有很多:

  • 客户要求 - 无论您的图书馆有多好,您的用户群都会有改进建议和功能要求。
  • 行业发展 - 模块化部署目前是热门话题,在过去几年中,必须对EclipseLink进行更改,以使其与OSGi兼容。
  • 新的Java版本 - Java SE 7即将发布,但这并不需要我们在即将发布的版本中进行一些调整以确保我们兼容的版本。此外,随着时间的推移,将添加更多功能以利用新的Java方面(EclipseLink至少需要Java SE 5)。

评估任何开源项目的另一个重要方面是活动提交者的数量。像ohloh.net这样的网站对此非常有用:


JAXB(JSR-222)

JAXB不仅仅是一个实现,它是通过Java Community Process(JCP)开发的标准。来自XML Beans(BEA),EMF(IBM),TopLink(Oracle)等对象到XML的参与者都有参与者。因为JAXB是Java EE的一部分,所以它可以在每个应用服务器中使用:WebLogic,GlassFish, WebSphere,JBoss等

JAXB提供:

  • 100%架构覆盖率
  • 多个实施:MetroEclipseLink MOXyApache JaxMe
  • 包含在Java SE 6中,与JDK 1.5兼容
  • 能够从XML架构或Java类开始
  • 各种扩展机制,包括XmlAdapter - Example
  • 通过Binder保留XML信息集的选项 - Example
  • JAX-WS(Web服务)的绑定层
  • JAX-RS(其余)的绑定层 - Example
  • 与JSON兼容(与Jettison等库一起使用时) - Example

EclipseLink JAXB(MOXy)

MOXy是一个JAXB实现,提供了许多有用的扩展,包括:

利用XPath进行XML对象的真实对象

基于XPath的映射允许您从Java类和XML模式开始,并将两者映射在一起。

用于处理第三方类的映射文件

在当前的JAXB规范中,元数据是通过注释提供的。使用无法修改的第三方类可能会有问题。这就是为什么MOXy提供了一种通过XML指定映射的方法:

映射JPA实体的扩展程序

通常,您需要对Java对象执行更多操作,然后再映射到XML。您可能还需要将它们保存到数据库中。这意味着您的对象模型可能需要考虑其他附加约束。 MOXy为这种用例提供​​了许多扩展:


<强>比较

以下是我将JAXB与XStream和Simple进行比较的几个比较:

答案 2 :(得分:7)

事情是3年内没有更新的东西并不意味着它已经过时了。它可能只是意味着没有需要来更新它。如果不需要更改项目,为什么要更改它?

明显缺乏“进展”的另一个解释是,更改库API往往会对依赖于它们的项目造成破坏。对于将大量第三方组件和库组合到一个Java应用程序中的项目,这尤其成问题。


寻找图书馆的替代方案是一件好事,但仅仅这样做是因为图书馆最近没有更新过。如果XStream能够满足您的需求,请坚持下去。较新并不一定意味着更好。

答案 3 :(得分:4)

XStream非常好,它的工作做得很好。即使对于最近的项目,我更喜欢将XStream用于适合的用例,因为它易于使用,重量轻,性能非常好。

如果您正在查看一些严肃的bean绑定工作,请查看Simple Framework。它也是一个很好的工具。这帮助我在一个项目中,我需要做一些严肃的自定义映射工作与注释。 http://simple.sourceforge.net/

答案 4 :(得分:0)

XStream 1.4.6于2013年12月发布,改进了Java 8,因此自2008年以来该库已更新。

答案 5 :(得分:0)

Underscore-java可以读写xml文件。我是该项目的维护者。支持Java 11 +。