序列化简单的说就是把对象的字节序列永久的保存到硬盘上,但是一些文件操作类也能实现把对象保存到本地(文件流保存XML文件),在存储对象的结果上是没有什么差别的(序列化能保存对象的类型[pototype],而文件操作不能),只不过最后文件类型不同,但是在把对象保存到本地后想对对象在进行操作就有很大差别了,比如说保存了一个类对象,类对象的结构和数据都可以取到,但是文件操作类没有办法去调到类对象中的方法。文件操作类保存过得对象的类型就是字符串,没有办法再转换成之前对象的类型
而且序列化也还有一些好处,比方说在面向服务的编程中要传输的对象被序列化之后安全性也可以得到保障,也可以实现跨平台,在传统编程中,你在表示层实例化一个业务对象,然后调用业务对象中的方法,你想过为什么能这样调用吗?这样做耦合度太高,很不好。如果序列化以后通过特定的协议传输数据就不一样了,表示层通过代理或通道向服务层发送特定的数据格式,这个数据就是序列化以后的,比如XML,服务端接收到以后要进行反序列化,生成服务端可识别的数据格式,比如一个类,然后对数据进行操作,再序列化发送到客户端,客户端再反序列化。这样客户端可以使用和服务端完全不同的开发平台,只要它能够对xml数据进行反序列化,而xml是具有工业标准的数据格式,基本各平台都支持。这也适用于在进程间通信。如果在进程内通信,也可以做到更高的安全性,对象不再通过调用栈交互,而是通过代理或通道。