RMI enables the programmer to create distributed Java-to-Java applications, in which the methods of remote Java objects can be invoked from other Java virtual machines, possibly on different hosts. A Java program can make a call on a remote object once it obtains a reference to the remote object, either by looking up the remote object in the bootstrap-naming service provided by RMI, or by receiving the reference as an argument or a return value. A client can call a remote object in a server, and that server can also be a client of other remote objects. RMI uses Object Serialization to marshal and unmarshal parameters and does not truncate types, supporting true object-oriented polymorphism.RMI Tutorial
Located on the JavaSoft website:
See the Java Distributed Systems home page for an overview of the Distributed Systems Group at JavaSoft and information on some of our upcoming projects, including an interim plug-in for Netscape 3.0 (which is JDK 1.0.2 based) that enables RMI based applets to be run.