Kryo 是一个快速高效的Java二进制对象图(binary object graph)序列化框架。Kryo 以快速的序列化/反序列化,较小的序列化结果和方便易用的API为目标。无论对象是需要持久化到文件、写入数据库、或是通过网络来传输, Kryo都非常的有用。
同时 Kryo 可以自动对对象进行深浅 拷贝/克隆。这是个从对象直接到对象的过程, 中间不需要将 Object 先转成 bytes,再从 bytes 转成 Object 来过渡。
示例代码
以下是官方提供的示例代码。
<dependencies>
<dependency>
<groupId>com.esotericsoftware.kryo</groupId>
<artifactId>kryo5</artifactId>
<version>5.0.0-RC6</version>
</dependency>
</dependencies>
package cn.live;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import com.esotericsoftware.kryo.kryo5.Kryo;
import com.esotericsoftware.kryo.kryo5.io.Input;
import com.esotericsoftware.kryo.kryo5.io.Output;
public class KryoDemo {
static public void main(String[] args) throws Exception {
Kryo kryo = new Kryo();
kryo.register(SomeClass.class);
SomeClass object = new SomeClass();
object.value = "Hello Kryo!";
Output output = new Output(new FileOutputStream("D:\\file.txt"));
kryo.writeObject(output, object);
output.close();
Input input = new Input(new FileInputStream("D:\\file.txt"));
SomeClass object2 = kryo.readObject(input, SomeClass.class);
System.out.println(object2.value);
input.close();
}
static public class SomeClass {
String value;
}
}
运行结果
输出了 "D:\\file.txt" 文件,内容是 "Hello Kryo!"。
直接读取 "D:\\file.txt" 文件内容。并省略了 bytes 与 Object 对象间的转换。
小结
实现 Serializable 接口,是我常用的序列化/反序列化手段。
现在欢迎 Kryo 加入 Java 工具箱