hessian java_Hessian和java序列化对比
java的序列化
1、Java序列化的性能经常被吐槽。
2、Java序列化后的数据相对于一些优秀的序列化的工具,还是要大不少,比如probuf,这大大影响存储和传输的效率。
3、Java序列化一定需要实现Serializable接口
4、Java序列化的 serialVersionUID
也是个大坑
另外,序列化和反序列化中还需要考虑:跨语言,新旧对象版本兼容,安全,性能。今天主要来说说,Hessian2是如何来解决这些问题的?
对比
一、跨语言:hessian提供了一整套的byte[]的写入规范,这个规范为其他的语言实现hessian的序列化和反序列化提供了可能。http://hessian.caucho.com/doc/hessian-serialization.html
二、新旧对象版本兼容:hessian2将类的描述信息写入byte[]中,以便于在反序列化时候能正常。但是这样就带来了一个问题:序列化后的内容较大。
三、安全,hessian序列化时,会调用writeReplace方法得到一个新的对象,能将对象中的一些值进行加密后在进行序列化。
四、性能:hessian2的序列化在内容的序列化上做了一些优化,hessian2将需要序列化的多个相同的对象只会写入一次,其他用到该对象的只使用对象的引用,而不重新写入对象的描述信息和值信息。但是hessian2在描述信息上写入的信息来兼容动态化的反序列化支持,所以内容相对于一些描述性的序列化工具(thrift,protobuf)来说,在性能上没有优势。
结论
再回到序列化,相对于Java来说,hessian的序列化从跨语言,新旧对象的版本兼容,安全以及性能方面都做的好,主要体现在:
1、Java的序列化无法跨语言。
2、新旧对象的版本Java可以通过一个serialVersionUID来处理,这就需要开发者关注序列化的几个语义。
3、Java需要实现一个接口才能进行序列化和反序列化,序列化没有进行加解密的接
4、Java序列化后的内容比Hessian更大,这不利于序列化本身的性能和网络传输、以及存储的性能。
hessian java_Hessian和java序列化对比相关推荐
- Java序列化工具的对比
在Java开发工具当中,Java序列化工具是比较常用的,而且种类也有不少,下面小编就来做个对比: 1.Java序列化工具的技术原理对比 Binary Formats & language-sp ...
- java序列化方案对比
1.引言 目前移动客户端应用程序上,需要将用户内容持久化到设备上,一般任何feed流应用,如微博.推特.新闻客户端等都需要将内容做持久化操作,以便在内存回收后,再次进入程序能迅速恢复之前的内容.另外如 ...
- Java序列化案例demo(包含Kryo、JDK原生、Protobuf、ProtoStuff以及hessian)
文章目录 前言 一.Kryo序列化(优先选择) 介绍 快速开始 测试 二.JDK原生序列化 介绍 快速开始 测试 三.Protobuf序列化 介绍 快速开始 测试 四.ProtoStuff 介绍 快速 ...
- 在Dubbo中使用高效的Java序列化(Kryo和FST)
作者:沈理 文档版权: Apache 2.0许可证 署名-禁止演绎 完善中-- TODO 生成可点击的目录 目录 序列化漫谈 启用Kryo和FST 注册被序列化类 无参构造函数和Serializabl ...
- java 将3变为03,03 Java序列化引发的血案
1.前言 <手册>第 9 页 "OOP 规约" 部分有一段关于序列化的约定 [强制]当序列化类新增属性时,请不要修改 serialVersionUID 字段,以避免反序 ...
- 为什么我不建议你使用Java序列化
作为一名Java开发,我为什么建议你在开发中避免使用Java序列化? 如今大部分的后端服务都是基于微服务架构实现的,服务按照业务划分被拆分,实现了服务的解耦,同时也带来了一些新的问题,比如不同业务之间 ...
- Java序列化与反序列化的深度思考
目录 1.序列化与反序列化的作用 2.序列化协议 2.1 JDK序列化协议 2.1.1 Externalizable与Serializable的异同 2.2 Google ProtocolBuf 协 ...
- Java 序列化及解决方案
想要深入了解序列化,首先得提出几个问题: · 序列化具体是什么. · 序列化应用场景. · 序列化方案有哪些. · 序列化方案如何应用. 序列化简介 定义:Java序列化是 ...
- java基础(十)-----Java 序列化的高级认识
将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ...
最新文章
- 修改oracle数据库默认时间格式
- Python 基础 - Day 1 Assignment - Login 模拟登陆
- Hadoop API编程——FileSystem操作
- python2异步编程_python异步编程 (转载)
- JS获取页面鼠标点击位置的坐标
- WPF 中的 Uri 地址的不同写法
- 013.Zabbix的Items(监控项)
- 深港澳大湾区第三次.NET技术交流会圆满成功
- 基于junit4的关于个人所得税计算的等价类与边界值_《边界值分析》-有这篇就够了...
- MobileNet-v3详解
- 计算机维修英语情景对话大全,快速英语情景对话大全 日常生活对话 7 排除电脑故障...
- primefaces_Primefaces选项卡,TabMenu,TabView,TagCloud
- Java--对象复制
- WPF自定义Main函数
- 增强型植被指数EVI、ndvi数据、NPP数据、GPP数据、土地利用数据、植被类型数据、降雨量数据
- 杉车大数据:禁售燃油车政策终于实施了!!!
- 在线作图|2分钟绘制一张精美的火山图(Volcano Plot)
- 【PyTorch实战】用PyTorch实现基于神经网络的图像风格迁移
- MSP430F5529-基于ATK-IMU901角度传感器在UART的串口通信于数据显示
- eMMC mmcblk0boot0