温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java序列化有啥用

发布时间:2026-10-25 16:25:21 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

Java 序列化(Serialization)简单来说,就是把 Java 对象转换成字节流,反过来再把字节流恢复成 Java 对象(反序列化)。
它的主要用途可以从下面几个方面理解:


一、核心作用

1️⃣ 对象持久化(存到磁盘)

把内存中的对象保存到文件或数据库中,下次程序启动时还能恢复。

ObjectOutputStream oos = new ObjectOutputStream(
    new FileOutputStream("user.dat"));
oos.writeObject(user);
oos.close();

适用场景:

  • 缓存对象
  • 保存配置 / 状态

2️⃣ 网络传输(远程通信)

在分布式系统中,把对象从一台机器传到另一台机器。

典型场景:

  • RMI(远程方法调用)
  • RPC 框架
  • 早期 Dubbo / Hessian
// 服务端把对象发给客户端
socket.getOutputStream().write(序列化后的字节);

3️⃣ 进程间通信

比如:

  • Android(Intent 传递对象)
  • JVM 之间传递数据

4️⃣ 深拷贝(不常用但可行)

通过序列化 + 反序列化实现对象的“深拷贝”。

User copy = deserialize(serialize(user));

二、Java 序列化怎么用

1️⃣ 实现 Serializable

import java.io.Serializable;

public class User implements Serializable {
    private String name;
    private int age;
}

2️⃣ 序列化 / 反序列化

// 序列化
ObjectOutputStream oos = new ObjectOutputStream(
    new FileOutputStream("a.bin"));
oos.writeObject(user);

// 反序列化
ObjectInputStream ois = new ObjectInputStream(
    new FileInputStream("a.bin"));
User u = (User) ois.readObject();

三、Java 原生序列化的问题

❌ 效率低(慢、体积大)
❌ 安全风险(反序列化漏洞)
❌ 跨语言差(只能 Java 用)

所以现在更常用:

  • JSON(Jackson / Gson)
  • Protobuf
  • Kryo / Hessian
  • MessagePack

四、什么时候还用 Java 序列化?

✅ 简单本地 demo
✅ 老系统 / RMI
✅ 不跨语言、不追求性能

❌ 高并发
❌ 跨语言
❌ 安全敏感系统


如果你愿意,我也可以:

  • 对比 Java 序列化 vs JSON
  • 讲 transient / serialVersionUID
  • 讲反序列化安全问题

你想看哪块?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手