首先看一下RMI的官方文档
http://java.sun.com/j2se/1.5.0/docs/guide/rmi/spec/rmiTOC.html
RMI出现的背景
-
在分布式系统中JavaTM最先支持的是Socket;
优点:Socket的灵活性和扩展性很强;
缺点:Socket需要客户端和服务端在应用级定义通信协议,这是非常麻烦的一件事; - Remote Procedure Call (RPC) 远程过程调用;
特点:其抽象了过程调用级别的通信接口,程序员可以调用一个本地的程序,这个调用其实是传到了远 端目标;RPC实用了一种扩展的表示类型来编码,例如XDR;(external data representation 外部数据表示,是指在网络上传输的数据形式,因为计算机系统并不都使用相同的内部数据表示方法,并且客户和服务器可能运行在两种不同的计算机上,远程过程调用技术必须解决从一种数据表示到另一种数据
表示的转化问题。一种广泛采用的方法是定义标准的外部表示,这要求双方都进行数据的外部表示和内部表示之间相互转化。)
通信桩程序:在RPC模型中,需要附加的程序来实现通信,这些程序称为通信桩程序(Communication stub)或者代理(Proxy),客户端和服务器端的两个桩程序负责处理所有的通信细节;
RMI Interfaces and Classes
The java.rmi.Remote
Interface
The interface java.rmi.Remote
is a marker interface that defines no methods:
public interface Remote {}
A remote interface must at least extend the interface java.rmi.Remote
(or another remote interface that extends java.rmi.Remote
).(为什么呢?Remote接口是一个空接口呀,这是我最大的疑问!!)