2011-05-28 123 views
12

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

+1

截至2011年8月,XStream的刚这是[3年来的第一次重大更新](http://xstream.codehaus.org/news.html#1.4)。这种发展速度似乎是合适的,因为正如其他答案所解释的那样,XStream是一个成熟的项目。 – 2013-04-09 22:12:23

+0

事实上,更新继续:“2014年2月8日发布XStream 1.4.7”。 – 2015-01-29 22:32:02

回答

20

在优选方案,相关性和活动的顺序:

JAXB

参观JAXB project's site检查出tutorialguide。 也看看原来的JAXB architecture whitepaper

上面列出的JAXB项目是API的参考实现,并由GlassFish应用服务器打包。

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可能会更简单一些。

+0

JAXB的+1。另一方面,XMLBeans自2008年7月以来尚未发布,就OP而言,它与XStream类似。http://xmlbeans.apache.org/sourceAndBinaries/index.html – 2011-05-28 10:58:46

+1

@Blaise:True,我知道。但我对它有很好的体验。另外,正如Steven C.的另一个答案中提到的那样,事实上它已经过时并不总是意味着它很糟糕。也许这意味着它不需要新版本就足够了,尽管我通常会对此感到怀疑。 – haylem 2011-05-28 11:02:14

+0

@Blaise:但实际上,我意识到我忘记了EclipseLink,我也喜欢它,并且在很多基于Eclipse的解决方案(以及其他)中使用,并且正在积极开发。所以我也会评估XmlBeans。 – haylem 2011-05-28 11:10:11

7

3年未更新的事实并不意味着它已过时。这可能仅表示没有需要来更新它。如果不需要更改项目,为什么要改变它?

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


寻找一个图书馆的替代品是一件好事,但只是这样做,因为图书馆最近没有更新是不是。如果XStream能够满足您的需求,请坚持使用它。较新的并不一定意味着更好。

4

XStream非常好,它的工作很好。即使对于最近的项目,我也更喜欢使用XStream来适用它,因为它易于使用,轻量级且性能非常好。

如果您正在查看一些严重的绑定bean的工作,请参阅Simple Framework。这也是一个很好的工具。这帮了我一个项目,我需要做一些认真的自定义贴图工作。 http://simple.sourceforge.net/

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社区过程(JCP)。已经有XML Bean(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
  • 选项通过活页夹来保存XML信息集 - Example
  • 为JAX-WS绑定层(Web服务)
  • 为JAX-RS
  • 结合层(垫) - Example
- Example
  • 使用JSON兼容(与库如抛弃使用时)

    的EclipseLink JAXB(莫西)

    MOXY是JAXB实现,提供了许多实用的扩展功能,包括:

    真正的对象到XML映射通过利用XPath的

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

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

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

    扩展

    很多时候,你需要做的更多与您的Java对象,然后只是映射到XML。您可能还需要将它们保存到数据库中。这意味着您的对象模型可能会有其他约束条件,您需要考虑。莫西提供了一些扩展对于这种使用案例:


    比较

    下面是几个比较我已经做了比较JAXB到XStream和Simple:

  • +2

    不错的答案布莱斯;) – 2011-05-28 11:16:54

    0

    的XStream 1.4.6发布于2013年12月,与Java 8倍的改进,所以该库已更新2008年以来