Kryo:快速、高效的序列化框架

Kryo是一个快速高效的Java序列化框架,旨在提供快速、高效和易用的API。无论文件、数据库或网络数据Kryo都可以随时完成序列化。Kryo还可以执行自动深拷贝(克隆)、浅拷贝(克隆)。这是对象到对象的直接拷贝,非对象->字节->对象的拷贝。

kryo

安装

Kryo JAR可以在发布页面Maven中央仓库下载。Kryo最新镜像可以在Sonatype仓库找到,包括对master分支的镜像构建。

Maven集成

要使用Kryo的官方发布版本,请将下面脚本添加到pom.xml中:

XHTML

1

2

3

4

5

<dependency>

    <groupId>com.esotericsoftware</groupId>

    <artifactId>kryo</artifactId>

    <version>3.0.3</version>

</dependency>

如果遇到问题,可能是因为你的classpath上已经安装了不同版本的asm。可以使用kryo-shaded jar中的asm版本,重新定位到不同的package:

XHTML

1

2

3

4

5

<dependency>

    <groupId>com.esotericsoftware</groupId>

    <artifactId>kryo-shaded</artifactId>

    <version>3.0.3</version>

</dependency>

如果要测试最新的Kryo镜像,请在pom.xml中使用下面代码:

XHTML

1

2

3

4

5

6

7

8

9

10

11

<repository>

   <id>sonatype-snapshots</id>

   <name>sonatype snapshots repo</name>

   <url>https://oss.sonatype.org/content/repositories/snapshots</url>

</repository>

<dependency>

   <groupId>com.esotericsoftware</groupId>

   <artifactId>kryo</artifactId>

    <version>3.0.4-SNAPSHOT</version>

</dependency>

快速上手

下面展示了如何使用Kryo:

Java

1

2

3

4

5

6

7

8

9

10

Kryo kryo = new Kryo();

// ...

Output output = new Output(new FileOutputStream("file.bin"));

SomeClass someObject = ...

kryo.writeObject(output, someObject);

output.close();

// ...

Input input = new Input(new FileInputStream("file.bin"));

SomeClass someObject = kryo.readObject(input, SomeClass.class);

input.close();

Kryo类负责协调了对象序列化。Output和Input类负责缓存字节并flush到流中(这一步可选)。下面展示了序列化过程的细节和Kryo的优势。

非Maven环境使用Kryo

如果在非Maven环境下使用Kryo,请注意Kryo jar有一些外部依赖,这些JAR也需要添加到你的classpath中。包括MinLog日志库Objenesis库 

主要特性

开发资源

开源地址:https://github.com/EsotericSoftware/kryo

猜你喜欢

转载自blog.csdn.net/yangbosos/article/details/88919766