java序列化技术与protobuff

java序列化技术与protobuff

ID:8789509

大小:62.50 KB

页数:0页

时间:2018-04-07

java序列化技术与protobuff_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《java序列化技术与protobuff》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Java序列化技术与Protobuff前言:    Java序列化是Java技术体系当中的一个重要议题,序列化的意义在于信息的交换和存储,通常会和io、持久化、rmi技术有关(eg:一些orm框架会要求持久化的对象类型实现Serializable接口)。    本文将提供Java自带序列化机制和ProtoStuff的序列化(仅仅当作一种数据格式)的比较,从序列化的内容和特点来对二者进行比较。    结论:1,Java序列化对象时不需要通过属性的getset方法或其它无关序列化内部定义的方法(比如readObject,writeObject是内置的序列化方法),序列化也不需要gets

2、et方法支持,反序列化是构造对象的一种手段。        2,Java序列化时类型必须完全匹配(全路径类名+序列化id)。        3,Protostuff反序列化时并不要求类型匹配,比如包名、类名甚至是字段名,它仅仅需要序列化类型A和反序列化类型B的字段类型可转换(比如int可以转换为long)即可。 java.io.Serializable    标识一个对象需要系列化,该对象类型需要实现Serializable接口。关于序列化的认识,可以参考IBM社区的文章《Java序列化的高级认识》,本文直接拿该文档的结论。    1,序列化的类型和反序列化的类型的序列化ID必须一

3、致(远程信息交换时)。    2,静态数据不会被序列化,Transient关键字修饰的字段不会被序列化。    3,对象序列化存储时,两次存储相同值对象会有优化(第二次对象写入会只存储引用)。序列化技术   序列化的目的是进行数据存储和交换,依据这个概念,xml,json也是一种序列化的技术,只是他们似乎是一种容易分辨的序列化技术,而类似于protostuff或Java自身的序列化技术似乎略神秘。   那么,Java序列化技术与其它的序列化技术究竟有什么不同呢?下文将比较Java自身的序列化技术和protostuff做比较,窥探一二。Protostuff   官网:https://

4、code.google.com/p/protostuff/。   Protostuff是基于大名鼎鼎的Googleprotobuff技术的Java版本,直接使用原生的protobuff是需要数据结构的预编译过程,需要编写.proto格式的配置文件,再通过protobuf提供的工具翻译成目标语言代码,而Protostuff动态支持了protobuff的预编译的过程。   下面的示例代码用于证明前言提出的结论   1,用于测试的实体(中括号内代表属性)   org.wit.ff.testmodel.SerializableUserA[Stringname,intage];   org.

5、wit.ff.testmodel.SerializableUserB[Stringname,intage];   org.wit.ff.testmodel.ch.SerializableUserA[Stringname,intage];   org.wit.ff.testmodel.ch.SerializableUserC[StringnoneName,doublenoneAge];   org.wit.ff.testmodel.ch1.SerializableUserA[Stringname,intage,StringfirstName];   org.wit.ff.testmo

6、del.ch1.SerializableUserB[StringnoneName,intnoneAge];   org.wit.ff.testmodel.ch1.SerializableUserC[StringnoneName,intnoneAge];   2,测试用例:packageorg.wit.ff;importstaticorg.junit.Assert.assertEquals;importstaticorg.junit.Assert.assertFalse;importstaticorg.junit.Assert.assertNotNull;importstaticor

7、g.junit.Assert.assertTrue;importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.ObjectInputStream;importjava.io.ObjectOutputStream;importorg.junit.Test;importorg.wit.ff.testmodel.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。