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

http://hao.jobbole.com/kryo/


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)

你可能感兴趣的:(序列化-概述)