高性能Java序列化框架Fse發(fā)布
[TOC]
使用場景
將Java對象序列化為二進制數據進行保存,以及二進制數據反向序列化為Java對象,在很多場景中都有應用。比如將對象序列化后離線存儲至其他介質,或者存儲于Redis這樣的緩存之中。
目前常見的有幾種框架可以支撐,比如 Hession ,Kryo,Protobuf,JDK原生等。有一些框架需要提前編寫元數據配置文件以支撐跨語言序列化能力,比如 Protobuf 。不過如果團隊的技術棧是統(tǒng)一的 Java 體系的話,則能夠開箱即用的序列化框架使用起來會更加方便一些,特別有些時候對象特別復雜,編寫元數據配置文件也是很繁瑣的一個事情。
Fse 框架正是應用于這樣的場景,不需要編寫元數據配置信息,開箱即用的 Java 序列化框架,對需要序列化的對象沒有任何特殊要求。在性能基準測試中,該框架的性能表現顯著優(yōu)于其他框架,下面是測試對比

image
歡迎加入技術交流群186233599討論交流,也歡迎關注筆者公眾號:風火說。
使用說明
首先在Pom文件中引入依賴,如下
<dependency>
<groupId>com.jfireframework</groupId>
<artifactId>fse</artifactId>
<version>aegean-1.0</version>
</dependency>
API 使用方式如下
Fse fse = new Fse();
TestData data = new TestData();
//創(chuàng)建一個二進制數組容器,用于容納序列化后的輸出。容器大小會在需要時自動擴大,入參僅決定初始化大小。
ByteArray buf = ByteArray.allocate(100);
//執(zhí)行序列化,會將序列化對象序列化到二進制數組容器之中。
fse.serialize(data, buf);
//得到序列化后的二進制數組結果
byte[] resultBytes = buf.toArray();
//清空容器內容,可以反復使用該容器
buf.clear();
//填入數據,準備進行反序列化
buf.put(resultBytes);
TestData result = (TestData) fse.deSerialize(buf);
assertTrue(result.equals(data));