九、编解码技术

一、Java序列化
基于Java提供的对象输入和输出流(ObjectInputStream和ObjectOutputStream),可以把Java对象作为可存储的字节数组写入文件,也可以传输到网络中。对于我们开发人员来说,基于JDK默认的序列化机制可以避免操作底层的字节数组,从而提升开发效率。 序列化的目的: (1)网络传输 (2)对象持久化 当进行远程跨进程服务调用时,需要把被传输的Java对象编码为字节数组或者ByteBuffer对象,而当远程服务读取到ByteBuffer对象或者字节数组时,需要将其解码为发送时的Java对象。这就是Java对象的编解码技术。而Java序列化仅仅是Java编解码技术的一种。

二、Java序列化的缺点
(1)无法跨语言 对于跨继承的服务调用,服务提供者可能会使用C++或者其它语言开发,当我们需要和异构语言进程交互时,Java序列化就难以支持。 由于Java序列化技术是Java语言内部的私有协议,其它语言并不支持,对于用户来说,就是个黑盒。由于Java序列化后的字节数组,别的语言无法进行反序列化,这就严重限制了它的应用。

(2)序列化后的码流太大

(3)序列化性能太差

通过对比Java序列化和二进制编码的性能差异,可以得到序列化后的码流大小和序列化的性能,表现的都很差,因此并不会选择Java序列化作为远程跨节点调用的编解码框架。业界有许多优秀的编解码框架,在克服了JDK默认序列化框架的缺点的基础上,还增加了很多亮点,比如说Google的Protobuf、Facebook的Thrift等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值