Java序列化技术即将被废除!!!

我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。

如果你还不熟悉 Java 序列化技术,请详细阅读《关于Java序列化你应该知道的一切》这篇文章。

目前 Oracle 公司计划废除 Java 中的古董--序列化技术,因为它带来了许多严重的安全问题(如序列化存储安全、反序列化安全、传输安全等),据统计,至少有3分之1的漏洞是序列化带来的,这也是 1997 年诞生序列化技术的一个巨大错误。

如图所示,序列化技术现在在 Java 应用中无处不在,特别是现在的持久化框架和分布式技术中,都需要利用序列化来传输对象,如:Hibernate、Mybatis、Java RMI、Dubbo等,即对象要存储或者传输都不可避免要用到序列化技术,所以删除序列化技术将是一个长期的计划。

据悉,在未来的 Java 版本中,将会有一个迷你序列化框架来替代现在的古董序列化技术。这个新框架将会支持开发者值入序列化引擎,并支持如 JSON、XML 格式,以一个更安全的方式来序列化对象。

序列化技术自 Java 诞生到现在已经发展了 20 来年了,但并未有什么改进和突破。也因为其简单易用的方式,给 Java 应用程序带来了许多安全漏洞。现在 Oracle 版本发布越来越快,让我们在新的版本中能看到更多序列化技术演进吧!

关注微信公众号获取更多JAVA动态。

原文地址:http://blog.51cto.com/honly/2131910

时间: 2024-11-14 13:49:37

Java序列化技术即将被废除!!!的相关文章

Java序列化技术与Protobuff

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

Java序列化技术

Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化? Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程. 为什么需要使用到序列化,两个不同的进程需要远程通信: 可以相互发送各种类型的数据,包括文本.图片.音频.视频等, 而这些数据都会以二进制序列的形式在网络上传送.那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可以的.如何做到呢?这就需要Java序列化与反序列化了.换句话

6种Java序列化框架

下面介绍几种常用的Java序列化技术,耗时比较,单位纳秒 0.002511:com.my.tools.serialize.KryoRegisterSerialize 0.007207:com.my.tools.serialize.FSTSerialize 0.00811:com.my.tools.serialize.KryoSerialize 0.010137:com.my.tools.serialize.GsonSerialize 0.012367:com.my.tools.serialize

【Java】Java 序列化的高级认识

如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件.那你最好再阅读该篇文章,文章对序列化进行了更深一步的讨论,用实际的例子代码讲述了序列化的高级认识,包括父类序列化的问题.静态变量问题.transient 关键字的影响.序列化 ID 问题.在笔者实际开发过程中,就多次遇到序列化的问题,在该文章中也会与读者分享. 15 评论: 杨 硕, 研究生, 东北大学软件学院 魏 强, 硕士研究生, 东北大学软件学院 2011 年 3 月 16 日 内容 引言 将 Java 对象序列

java序列化和持久化

线程安全(转载) JAVA  反射   Annotation JAVA 持久化 序列化(转载) 2011-04-19 23:05:30|  分类: JAVA |  标签:序列化  person  反序列化  java  firstname   |举报 |字号大中小 订阅 要:本文比较全面的介绍了Java 序列化技术方方面面的知识,从序列化技术的基础谈起, 介绍了Java 序列化技术的机制和序列化技术的原理.并在随后的部分详细探讨了序列化的 高级主题-如何精确的控制序列化机制.通过阅读该文章,你可

Java序列化系列教程(下)

一引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写.然而在有些情况下,光知道这些还远远不够,文章列举了笔者遇到的一些真实情境,它们与 Java 序列化相关,通过分析情境出现的原因,使读者轻松牢记 Java 序列化中的一些高级认识. 1.1serial

Java序列化工具对比

1. Java序列化工具技术原理比较 Binary Formats & language-specific ones JavaBuiltIn(java原生).JavaManual(根据成员变量类型,手工写).FstSerliazation.Kryo Binary formats-generic language-unspecific ones Protobuf(Google).Thrift(Facebook). AvroGeneric.Hessian JSON Format Jackson.Gs

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

将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只需要了解被序列化的类需要实现 Serializable 接口,使用 ObjectInputStream 和 ObjectOutputStream 进行对象的读写.然而在有些情况下,光知道这些还远远不够,文章列举了笔者遇到的一些真实情境,它们与 Java 序列化相关,通过分析情境出现的原因,使读者轻松牢记 Java 序列化中的一些高级认识. 序列化 ID 问题 情境:

序列化之Java默认序列化技术(ObjectOutputStream与ObjectInputStream)

Java默认序列化技术 主要是通过 对象输出流java.io.ObjectOutputStream 对象输入流java.io.ObjectInputStream 来实现的 package com.xingej.ser; public interface ISerializer { // 序列化,将obj序列化成字节数组 public <T> byte[] serialize(T obj); // 反序列化,将字节数组,反序列化为T public <T> T deserialize(