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: 优点
缺点
    - 用起来不方便:需要把手动的把business object转换成schema object,当然也可以直接将schema object作为business object,或者采用反射的方法。
    
 - 有一定的局限性:需要schema或者annotation
    
 - 数据量稍大 
 
XStream优点:
    - 用起来方便
    
 - 不需要schema,拿过来就转
    
 - 数据量稍小 
 
缺点: