Java对象序列化给分布式计算带来的方便

转载 2007年09月24日 16:15:00
在面向对象程序语言中做分布式计算的时候,经常需要将对象在不同的主机之间传输,我这次在实现分布式计算的时候,需要将一个计算对象从中央服务器Server分发给所有的客户端client。
通过网络TCP,建立Socket,传输一个对象,就需要将对象转换成一段字节流,也就叫做对象的序列化。同时,也要求可以从这段字节流,创建出对应的对象出来。
C++里面的做法就是在每个类里面实现两个接口函数,自己通过写读和写对象的方法,来实现序列化。因为每个类的成员变量的值和成员变量的类型作者自己肯定晓得,所以就需要自己来通过把一个个成员变量写到流里面,最终实现了对象到字节流的转换。
C++里面针对纯数据类型的结构体,就是成员变量没有指针的对象的话,还可以通过拷贝内存块到字节流的方法memcpy,也可以很容易实现序列化,但是这只能是针对成员变量都是数据类型,没有指针类型的对象。
在Java里面就比较方便了,直接通过实现java.io.Serializable接口,JVM就能自动来将类实现序列化。同时,java.io.Serializable接口没有任何接口函数,只是一个空接口,唯一的作用就是标志一下这个类是可以序列化。
其实,Java里面的对象序列化,是JVM在做的,因为JVM可以掌控整个对象的内部数据结构,就可以简单遍历树的方法,来实现把一个对象的所有成员变量写到字节流里面。当然,居然怎么做的,我也不太清楚,但是所有JVM来说,要做这一点还是很容易的。
Java 里面,几乎所有的类只要实现了java.io.Serializable接口,就可以实现序列化。但是要求这个类里面的所有成员变量也是可以序列化的。比 如类A有个成员变量对象是类B,如果A能序列化,要求B也要能够序列化,也就是A实现了java.io.Serializable,要求B也一定实现 java.io.Serializable。
网上关于具体实现序列化的Sample代码很多了,我这里只是贴出一段参考:
序列化对象都是通过Java的ObjectInputStream和ObjectOutputStream来实现的。
写:
       
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(A);
       读:
 
ObjectInputStream ios =new ObjectInputStream(is);
A a
=(A)ios.readObject();
 

Java对象序列化给分布式计算带来的方便

 在面向对象程序语言中做分布式计算的时候,经常需要将对象在不同的主机之间传输,我这次在实现分布式计算的时候,需要将一个计算对象从中央服务器Server分发给所有的客户端client。通过网络TCP,建...
  • tangl_99
  • tangl_99
  • 2006年08月21日 17:32
  • 2916

Java对象序列化给分布式计算带来的方便 (转)

在面向对象程序语言中做分布式计算的时候,经常需要将对象在不同的主机之间传输,我这次在实现分布式计算的时候,需要将一个计算对象从中央服务器Server分发给所有的客户端client。通过网络TCP,建立...
  • conan0268
  • conan0268
  • 2006年08月27日 04:54
  • 640

Java开发Spring总结

Spring 春天嘛
  • Main_CSDN_String
  • Main_CSDN_String
  • 2017年10月27日 17:10
  • 163

分布式计算框架综述

本来是发表到科技论在线的,谁知道被退稿了,那就发到这里来吧。 0      引言 随着互联网的发展,web2.0时期[1]的到来,人类正式进入了信息爆炸时期的。海量的信息在很多应用都会出现,比...
  • s120922718
  • s120922718
  • 2014年01月02日 10:25
  • 9953

从系统角度看分布式系统的挑战

在《分布式计算:原理、算法与系统》书中,1.8.1小节综述了设计和构建分布式系统时需要仔细考虑的10个方面,这10个方面也可以作为观察一个分布式系统的10个角度。 设计和构建分布式系统时,以...
  • kobejayandy
  • kobejayandy
  • 2015年11月02日 20:07
  • 795

科技和互联网教育带来的好处就是尽可能给学生带去机会,带来公平

“教育最大的不公平就是不能真正做到因材施教,而科技和互联网教育带来的好处就是尽可能给学生带去机会,带来公平”,出身于教育世家,在教育领域深耕30多年的陈冬华有着这样的感悟。于是2012年,他在国内推出...
  • gnicky
  • gnicky
  • 2017年02月06日 14:40
  • 518

Java 对象序列化机制详解

对象序列化的目标:将对象保存到磁盘中,或允许在网络中直接传输对象。 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,通过网络将这种二进制流...
  • zuiwuyuan
  • zuiwuyuan
  • 2014年10月09日 22:24
  • 1102

Java 对象序列化详解以及实例实现和源码下载

Java中的序列化机制有两种实现方式: 一种是实现Serializable接口 另一种是实现Externalizable接口 区别: 实现Serializable接口 1 系统自动储存必要的...
  • u010156024
  • u010156024
  • 2015年03月16日 16:45
  • 1484

《并行与分布式计算》实验六——Java RMI编程

这篇博文一个多月前就发表过,但因当时在课程上该实验还未结束提交而删除了;对老师教学造成的不便深感歉意;写这些不是为了什么,也知道自己写的不好,只是记录自己的学习心历路程,同时也当作一个笔记,将来翻看的...
  • AngOn823
  • AngOn823
  • 2016年12月22日 12:46
  • 614

控制反转为程序开发带来的好处是什么?

IOC全称是Inversion of Control,即反转控制,或者说是依赖注入更为合适。选择别纠结这些全称的专业词。我们可以用别外一些方式去理解它,IOC,是一种设计模式。它的延生所要实现的是把藕...
  • H12KJGJ
  • H12KJGJ
  • 2017年06月23日 09:29
  • 969
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java对象序列化给分布式计算带来的方便
举报原因:
原因补充:

(最多只允许输入30个字)