Java序列化详解

1. 什么是Serialization?

Serialization is the process of turning structured objects into a byte stream

序列化就是一个将结构对象转换成字节流的过程。
【笔者补充:可能在生成字节流的时候:去掉了某些对象的信息(比如某个字段),或者又添加了某些其它信息(比如jvm版本信息)】

2. 为什么需要Serialization?

for transmission over a network
for writing to persistent storage.

如上所述,就是为了跨网络传输,以及持久化存储
要知道持久化存储的目的是在未来的某个时间上,尝试进行读取、恢复等操作

3.其它问题
3.1 为什么不用结构对象进行跨网络传输和持久化存储呢?

首先明确:任何数据在计算机中的存储都是0,1进制的,所以即使不序列化对象,依然可以传输。即结构对象可以进行跨网络传输和持久化存储。

3.2 那为什么非要序列化之后再传输呢?

对象在内存中的数据本来就是二进制的啊。直接拷贝对象在内存中的数据然后写入到磁盘中不就可以了么,为什么还要搞个序列化框架呢?

  • 01.序列化所做的工作除了将数据以二进制存入本地外,还要提供筛选数据,防止重复存储等功能。但是如果直接赋值内存中的数据,肯定达不到筛选数据,防止重复存储等功能。
  • 02.跨平台、或者跨语言时,这个序列化方式就显得更重要了。例如,可以将java 对象序列化成 xml 或者 json 形式。这样即使是 python 等非java语言都可以直接使用这个xml 或者json 对象得到自己需要的信息了。
3.3 序列化 = 字节化 ?

我的理解是:序列化不等于字节化。

4.总结

通过上面的叙述。我对序列化的理解就是 序列化使得对象信息更加普通化,可读化。这样就可以使得别的进程,别的语言,别的平台都能够知道这个对象信息,从而保证了对象信息的持久化

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐