java实现序列化_java序列化实现⽅式总结
什么是序列化,可能⼤家都知道,但⼜不很清楚,呵呵,就像我⼀样,下⾯是⼀段百度百科的说明,说的很清楚,可以参考下
序列化 (serialization)
将对象的状态信息转换为可以存储或传输的窗体的过程。在序列化期间,对象将其当前状态写⼊到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
序列化使其他代码可以查看或修改那些不序列化便⽆法访问的对象实例数据。确切地说,代码执⾏序列化需要特殊的权限:即指定了SerializationFormatter 标志的 SecurityPermission。在默认策略下,通过 Internet 下载的代码或 Intranet 代码不会授予该权限;只有本地计算机上的代码才被授予该权限。
通常,对象实例的所有字段都会被序列化,这意味着数据会被表⽰为实例的序列化数据。这样,能够解释该格式的代码有可能能够确定这些数据的值,⽽不依赖于该成员的可访问性。类似地,反序列化从序列化的表⽰形式中提取数据,并直接设置对象状态,这也与可访问性规则⽆关。
对于任何可能包含重要的安全性数据的对象,如果可能,应该使该对象不可序列化。如果它必须为可序列化的,请尝试⽣成特定字段来保存不可序列化的重要数据。如果⽆法实现这⼀点,则应注意该数据会
java技术介绍百度百科被公开给任何拥有序列化权限的代码,并确保不让任何恶意代码获得该权限。
序列化解释
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
序列化的⽬的
1、以某种存储形式使⾃定义对象持久化;
2、将对象从⼀个地⽅传递到另⼀个地⽅。
NET Framework 提供两种序列化技术
* ⼆进制序列化保持类型保真度,这对于在应⽤程序的不同调⽤之间保留对象的状态很有⽤。例如,通过将对象序列化到剪贴板,可在不同的应⽤程序之间共享对象。您可以将对象序列化到流、磁盘、内存和⽹络等等。远程处理使⽤序列化“通过值”在计算机或应⽤程序域之间传递对象。
* XML 序列化仅序列化公共属性和字段,且不保持类型保真度。当您要提供或使⽤数据⽽不限制使⽤
该数据的应⽤程序时,这⼀点是很有⽤的。由于 XML 是⼀个开放式标准,因此,对于通过 Web 共享数据⽽⾔,这是⼀个很好的选择。SOAP 同样是⼀个开放式标准,这使它也成为⼀个颇具吸引⼒的选择。
⽬前java对序列化有多种实现⽅式,主要如下:
1. 对实现serialiable接⼝的java对象,可以通过ObjectOutputStream与ObjectInputStream俩个重要类进⾏序列化与反序列化,当然还有其他java类的⽀持,⽐如ByteArrayOutputStream序列化为⼆进制字节,或者FileOutputStream序列化为⼆进制⽂件。
2. 通过⼀些第三⽅开源框架如XStream(当然还有很多这类框架,有空可以研究下性能),可以把java对象序列化为json⽂本⽂件或者为xml ⽂本⽂件,这对与开放的⽹络传输⾮常⽅便,很多跨语⾔通信都通过json格式传输或xml传输;就传输效率来讲json格式⽐xml格式效率⾼,占⽤空间⼩。
3. 可以⾃⼰实现⼀种序列化框架,序列化最主要的就是暂存在某个地⽅,将来某个时间重新实例化,这个留个⾃⼰以后研究。
好了,就写这些吧,其实没写多少,太懒了,没办法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论