Kryo是一个快速高效的Java序列化框架,旨在提供快速、高效和易用的API。无论文件、数据库或网络数据Kryo都可以随时完成序列化。Kryo还可以执行自动深拷贝(克隆)、浅拷贝(克隆)。这是对象到对象的直接拷贝,非对象->字节->对象的拷贝。
安装
Kryo JAR可以在
发布页面
和
Maven中央仓库
下载。Kryo最新镜像可以在
Sonatype仓库
找到,包括对master分支的镜像构建。
Maven集成
要使用Kryo的官方发布版本,请将下面脚本添加到pom.xml中:
如果遇到问题,可能是因为你的classpath上已经安装了不同版本的asm。可以使用kryo-shaded jar中的asm版本,重新定位到不同的package:
如果要测试最新的Kryo镜像,请在pom.xml中使用下面代码:
快速上手
下面展示了如何使用Kryo:
Kryo类负责协调了对象序列化。Output和Input类负责缓存字节并flush到流中(这一步可选)。下面展示了序列化过程的细节和Kryo的优势。
非Maven环境使用Kryo
如果在非Maven环境下使用Kryo,请注意Kryo jar有一些外部依赖,这些JAR也需要添加到你的classpath中。包括
MinLog日志库
和
Objenesis库
。
主要特性
-
IO
-
基于Unsafe的IO
-
Serializer
-
Registration
-
默认serializer
-
FieldSerializer
-
KryoSerializable
-
Class字段注解
-
Java序列化
-
读写
-
引用
-
创建对象
-
拷贝/克隆
-
Context
-
压缩和加密
-
区块编码
-
兼容性
-
互操作能力
-
堆栈大小
-
线程
-
Kryo实例池
-
日志
-
Scala
-
Objective-C
开发资源
-
上面介绍的功能针对Kryo v2及更高版本。了解v1.x请参阅
V1文档
。 -
使用Kryo进行网络通信
KryoNet
是不错的选择。 -
kryo邮件列表
-
使用Kryo的项目:
-
KryoNet
(NIO网络通信) -
Twitter’s Scalding
(级联Scala API) -
Twitter’s Chill
(Scala版的Kryo Serializer) -
Apache Hive
(查询计划序列化) -
DataNucleus
(JDO/JPA持久化框架) -
CloudPelican
-
Yahoo’s S4
(分布式流式计算) -
Storm
(分布式实时计算系统,反过来被许多
其他工具
使用) -
Cascalog
(Clojure/Java数据处理和查询
细节
) -
memcached-session-manager
(Tomcat高可用性会话) -
Mobility-RPC
(启用RPC的分布式应用程序) -
akka-kryo-serialization
(Akka版的Kryo Serializer) -
Groupon
-
Jive
-
DestroyAllHumans
(
机器人控制
!) -
kryo-serializers
(其它Serializer)
-