2019獨角獸企業重金招聘Python工程師標準>>>
JAXB vs XStream
這兩東東本質上是有差別的,JAXB稱為OX binding工具,XStream應該算序列化工具,但OX binding工具也會marshall和unmarshall,所以包含了序列化這一部分。序列化工具不一定需要提供binding的功能。既然都玩序列化,那就簡單地比較一下它們兩在序列化方面的強弱吧。
JAXB:Toplink JAXB 10133,應該是JAXB 1.1標準 (取消了schema的validation功能)
XStream:1.3.1
數據長度:
類型 | 長度 | 內容 |
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(已經去掉了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> |
時間:序列化和反序列化1000000次。
類型 | 序列化(ms) | 反序列化(ms) |
XStraem | 90148 | 135878 |
Toplink JAXB | 34872 | 56557 |
結果對比:數據量XStream占優勢,時間性能上Toplink Jaxb占明顯優勢
總結(只從序列化功能角度看)
JAXB:?優點
- J2EE標準
- 運行時間比XStream少
缺點
- 用起來不方便:需要把手動的把business object轉換成schema object,當然也可以直接將schema object作為business object,或者采用反射的方法。
- 有一定的局限性:需要schema或者annotation
- 數據量稍大
XStream優點:
- 用起來方便
- 不需要schema,拿過來就轉
- 數據量稍小
缺點:
- 非標準
- 時間性能差
?http://www.blogjava.net/ldd600/archive/2009/03/04/257832.html