2011-05-28 125 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年以來