JAXB vs XStream
這兩東東本質(zhì)上是有差別的,JAXB稱為OX binding工具,XStream應(yīng)該算序列化工具,但OX binding工具也會(huì)marshall和unmarshall,所以包含了序列化這一部分。序列化工具不一定需要提供binding的功能。既然都玩序列化,那就簡(jiǎn)單地比較一下它們兩在序列化方面的強(qiáng)弱吧。
JAXB:Toplink JAXB 10133,應(yīng)該是JAXB 1.1標(biāo)準(zhǔn) (取消了schema的validation功能)
XStream:1.3.1
數(shù)據(jù)長(zhǎng)度:
類型
|
長(zhǎng)度
|
內(nèi)容
|
XStraem
|
351
|
<com.oocl.frm.ws.sample.Employee>
<name>Liufei</name>
<age>40</age>
<address>
<street>Zhaojiabang</street>
<country>China</country>
<city>Shanghai</city>
<doorNum>789</doorNum>
<empName>Afka liu</empName>
</address>
<salary>20000.0</salary>
<isActive>false</isActive>
<sexy>F</sexy>
</com.oocl.frm.ws.sample.Employee>
|
Toplink JAXB
|
589(已經(jīng)去掉了white space)
|
<?xml version="1.0" encoding="UTF-8"?>
<ns0:employee xsi:schemaLocation="http://www.oocl.com/frm/ws/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns0="http://www.oocl.com/frm/ws/jaxb" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><ns0:name>Liufei</ns0:name><ns0:age>40</ns0:age><ns0:salary>20000.0</ns0:salary><ns0:sexy>F</ns0:sexy><ns0:isActive>false</ns0:isActive><ns0:address><ns0:street>Zhaojiabang</ns0:street><ns0:country>China</ns0:country><ns0:city>Shanghai</ns0:city><ns0:doorNum>789</ns0:doorNum><ns0:empName>Afka liu</ns0:empName></ns0:address></ns0:employee>
|
時(shí)間:序列化和反序列化1000000次。
類型
|
序列化(ms)
|
反序列化(ms)
|
XStraem
|
90148
|
135878
|
Toplink JAXB
|
34872
|
56557
|
結(jié)果對(duì)比:數(shù)據(jù)量XStream占優(yōu)勢(shì),時(shí)間性能上Toplink Jaxb占明顯優(yōu)勢(shì)
總結(jié)(只從序列化功能角度看)
JAXB: 優(yōu)點(diǎn)
- J2EE標(biāo)準(zhǔn)
- 運(yùn)行時(shí)間比XStream少
缺點(diǎn)
- 用起來不方便:需要把手動(dòng)的把business object轉(zhuǎn)換成schema object,當(dāng)然也可以直接將schema object作為business object,或者采用反射的方法。
- 有一定的局限性:需要schema或者annotation
- 數(shù)據(jù)量稍大
XStream優(yōu)點(diǎn):
- 用起來方便
- 不需要schema,拿過來就轉(zhuǎn)
- 數(shù)據(jù)量稍小
缺點(diǎn):
- 非標(biāo)準(zhǔn)
- 時(shí)間性能差