java序列化框架對比

二進制序列化框架

  • jdk 自帶對象序列化類ObjectInput(Out)Stream

1.無法跨語言。這應該是java序列化最致命的問題了。由於java序列化是java內部私有的協議,其他語言不支持,導致別的語言無法反序列化,這嚴重阻礙了它的應用。
2.序列後的碼流太大。java序列化的大小是二進制編碼的5倍多!
3.序列化性能太低。java序列化的性能只有二進制編碼的6.17倍,可見java序列化性能實在太差了。

  • google的Protobuf

1支持java,C++,Python三種語言。

2需要中間語言靜態編譯

  • faceBook的Thrift

1.Thrift支持多種語言(C++,C#,Cocoa,Erlag,Haskell,java,Ocami,Perl,PHP,Python,Ruby,和SmallTalk)
2 自帶rpc , 直接可以發佈服務

3 和底層的rpc 框架連接太緊密,無法單獨作爲一個序列化框架來用。

4 需要中間語言靜態編譯

  • kryo

1.速度快,序列化後體積小
2.跨語言支持較複雜

3 不向前向後兼容

  • hessian

1.默認支持跨語言
2.較慢

3 不向前向後兼容

  • fst

fst是完全兼容JDK序列化協議的系列化框架,序列化速度大概是JDK的4-10倍,大小是JDK大小的1/3左右。

 

序列化成json

  • 開源的Jackson

相比json-lib框架,Jackson所依賴的jar包較少,簡單易用並且性能也要相對高些。而且Jackson社區相對比較活躍,更新速度也比較快。Jackson對於複雜類型的json轉換bean會出現問題,一些集合Map,List的轉換出現問題。Jackson對於複雜類型的bean轉換Json,轉換的json格式不是標準的Json格式

  • Google的Gson

Gson是目前功能最全的Json解析神器,Gson當初是爲因應Google公司內部需求而由Google自行研發而來,但自從在2008年五月公開發布第一版後已被許多公司或用戶應用。Gson的應用主要爲toJson與fromJson兩個轉換函數,無依賴,不需要例外額外的jar,能夠直接跑在JDK上。而在使用這種對象轉換之前需先創建好對象的類型以及其成員才能成功的將JSON字符串成功轉換成相對應的對象。類裏面只要有get和set方法,Gson完全可以將複雜類型的json到bean或bean到json的轉換,是JSON解析的神器。
Gson在功能上面無可挑剔,但是性能上面比FastJson有所差距。

  • 阿里巴巴的FastJson

Fastjson是一個Java語言編寫的高性能的JSON處理器,由阿里巴巴公司開發。無依賴,不需要例外額外的jar,能夠直接跑在JDK上。FastJson在複雜類型的Bean轉換Json上會出現一些問題,可能會出現引用的類型,導致Json轉換出錯,需要制定引用。FastJson採用獨創的算法,將parse的速度提升到極致,超過所有json庫。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章