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序列化对比相关推荐

  1. Java序列化工具的对比

    在Java开发工具当中,Java序列化工具是比较常用的,而且种类也有不少,下面小编就来做个对比: 1.Java序列化工具的技术原理对比 Binary Formats & language-sp ...

  2. java序列化方案对比

    1.引言 目前移动客户端应用程序上,需要将用户内容持久化到设备上,一般任何feed流应用,如微博.推特.新闻客户端等都需要将内容做持久化操作,以便在内存回收后,再次进入程序能迅速恢复之前的内容.另外如 ...

  3. Java序列化案例demo(包含Kryo、JDK原生、Protobuf、ProtoStuff以及hessian)

    文章目录 前言 一.Kryo序列化(优先选择) 介绍 快速开始 测试 二.JDK原生序列化 介绍 快速开始 测试 三.Protobuf序列化 介绍 快速开始 测试 四.ProtoStuff 介绍 快速 ...

  4. 在Dubbo中使用高效的Java序列化(Kryo和FST)

    作者:沈理 文档版权: Apache 2.0许可证 署名-禁止演绎 完善中-- TODO 生成可点击的目录 目录 序列化漫谈 启用Kryo和FST 注册被序列化类 无参构造函数和Serializabl ...

  5. java 将3变为03,03 Java序列化引发的血案

    1.前言 <手册>第 9 页 "OOP 规约" 部分有一段关于序列化的约定 [强制]当序列化类新增属性时,请不要修改 serialVersionUID 字段,以避免反序 ...

  6. 为什么我不建议你使用Java序列化

    作为一名Java开发,我为什么建议你在开发中避免使用Java序列化? 如今大部分的后端服务都是基于微服务架构实现的,服务按照业务划分被拆分,实现了服务的解耦,同时也带来了一些新的问题,比如不同业务之间 ...

  7. Java序列化与反序列化的深度思考

    目录 1.序列化与反序列化的作用 2.序列化协议 2.1 JDK序列化协议 2.1.1  Externalizable与Serializable的异同 2.2 Google ProtocolBuf 协 ...

  8. Java 序列化及解决方案

      想要深入了解序列化,首先得提出几个问题:   · 序列化具体是什么.   · 序列化应用场景.   · 序列化方案有哪些.   · 序列化方案如何应用.   序列化简介   定义:Java序列化是 ...

  9. java基础(十)-----Java 序列化的高级认识

    将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ...

最新文章

  1. 修改oracle数据库默认时间格式
  2. Python 基础 - Day 1 Assignment - Login 模拟登陆
  3. Hadoop API编程——FileSystem操作
  4. python2异步编程_python异步编程 (转载)
  5. JS获取页面鼠标点击位置的坐标
  6. WPF 中的 Uri 地址的不同写法
  7. 013.Zabbix的Items(监控项)
  8. 深港澳大湾区第三次.NET技术交流会圆满成功
  9. 基于junit4的关于个人所得税计算的等价类与边界值_《边界值分析》-有这篇就够了...
  10. MobileNet-v3详解
  11. 计算机维修英语情景对话大全,快速英语情景对话大全 日常生活对话 7 排除电脑故障...
  12. primefaces_Primefaces选项卡,TabMenu,TabView,TagCloud
  13. Java--对象复制
  14. WPF自定义Main函数
  15. 增强型植被指数EVI、ndvi数据、NPP数据、GPP数据、土地利用数据、植被类型数据、降雨量数据
  16. 杉车大数据:禁售燃油车政策终于实施了!!!
  17. 在线作图|2分钟绘制一张精美的火山图(Volcano Plot)
  18. 【PyTorch实战】用PyTorch实现基于神经网络的图像风格迁移
  19. MSP430F5529-基于ATK-IMU901角度传感器在UART的串口通信于数据显示
  20. eMMC mmcblk0boot0

热门文章

  1. 招标投标、政府采购法知识点梳理
  2. 新萝卜家园GHOST XP Sp3装机版V2012.10下载
  3. 2015年工作中遇到的问题:61-70
  4. mybatis中的ResultMap使用
  5. mybatis 列索无效的问题:
  6. 新朋实验室之玩具遥控车改装为ARDUINO蓝牙遥控小车(代码及制作过程开源)
  7. 易乐惠系统开发功能总结--易乐惠APP开发源码分享
  8. 驾轻就熟项目符号和编号”
  9. Thrift 详情介绍
  10. vue-cli3+ 、vant UI、移动端适配