美文网首页Java
java序列化是干什么的?

java序列化是干什么的?

作者: 冰月_by | 来源:发表于2019-08-09 16:42 被阅读4次

只会敲代码。。。。一直都用java的序列化,却没考虑过java的序列化究竟是干什么的。

我们知道,java是跨平台语言,为什么跨平台?是因为java程序编译后是class文件,class文件最终被java虚拟机解析成字节码文件,可以运行在任何平台上。

对应的,如果我们想要在网络上进行文字传输,或者想要将程序内存中的对象写入到硬盘,可以用任何的虚拟机进行解析读取。也需要一个共同识别的方式,字节码!!!而我们的java序列化就是将java内存中对象属性的值进行字节码转换。

Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在 将来重新读取 被保存的对象。Java对象序列化就能够帮助我们实现该功能。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的 静态变量。
除了在持久化对象时会用到对象序列化之外,当使用RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化。Java序列化API为处理对象序列化提供了一个标准机制。
那么序列化的字节码和.class文件字节码是否是一样的呢?答案否。
序列化保存的是对象属性的值。由程序解析使用。
class字节码是类的属性信息(类型、作用域、static或非static)和方法的信息(方法的签名信息、方法体的内容)及其他信息,由虚拟机解析使用。

简而言之:序列化的作用就是为了 不同jvm之间 共享实例对象 的一种解决方案.由java提供此机制,效率之高,是其他解决方案无法比拟的.

如何实现java序列化?
1.基于Serializable接口的序列化。
Java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化。

如果仅仅只是让某个类实现Serializable接口,而没有其它任何处理的话,则就是使用 默认序列化机制。使用默认机制,在序列化对象时,不仅会序列化当前对象本身,还会对该对象引用的其它对象也进行序列化,同样地,这些其它对象引用的另外对象也将被序列化,以此类推。所以,如果一个对象包含的成员变量是容器类对象,而这些容器所含有的元素也是容器类对象,那么这个序列化的过程就会较复杂,开销也较大。

@Transient 关键字:当某个字段被声明为@Transient后,默认序列化机制就会忽略该字段。

2.基于Externalizable接口的序列化
Externalizable继承于Serializable,当使用该接口时,序列化的细节需要由程序员去完成。
要对writeExternal()与readExternal()方法进行手动处理。

参考:https://www.cnblogs.com/qq3111901846/p/7894532.html
https://www.jianshu.com/p/94d8a599bbeb
https://www.jianshu.com/p/3556e7806d8c

相关文章

  • java序列化是干什么的?

    只会敲代码。。。。一直都用java的序列化,却没考虑过java的序列化究竟是干什么的。 我们知道,java是跨平台...

  • java序列化那些事儿

    java序列化作用 在说java序列化的作用之前,先说下什么是java序列化吧。java序列化是指把java对象转...

  • Serializable中为什么要设置UID

    1、什么是Java序列化与反序列化 Java序列化是指把Java对象保存为二进制字节码的过程,Java反序列化是指...

  • JDK 序列化

    序列化和分序列化概念 什么是序列化和反序列化 Java序列化是指把Java对象转换为字节序列的过程,而Java反序...

  • 2022-07-12

    什么是序列化与反序列化 Java 序列化是指把 Java 对象转换为字节序列的过程。 Java 反序列化是指把字节...

  • Java序列化机制

    Java序列化机制 序列化和反序列化 Java序列化是Java内建的数据(对象)持久化机制,通过序列化可以将运行时...

  • Java-序列化-反序列化

    Thanks Java基础学习总结——Java对象的序列化和反序列化java序列化反序列化原理Java 序列化的高...

  • 认识Java序列化

    我的个人博客,认识Java序列化 引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java ...

  • 两种序列化:Serializable与Parcelable

    什么是序列化 Java序列化是指把Java对象转换为字节序列的过程。而Java反序列化是指把字节序列恢复为Java...

  • 序列化

    序列化方式 1、Java序列化技术 1.1基础概念 Java 序列化是指把 Java 对象转换为字节序列的过程;(...

网友评论

    本文标题:java序列化是干什么的?

    本文链接:https://www.haomeiwen.com/subject/awphjctx.html