Which books are worth reading as the tutorial of RMI.
I strongly command the guys who want start his RMI with http://java.sun.com/docs/books/tutorial/rmi/overview.html
It is really simple but very useful. you can also get the following resource as reference:
1. http://www.oreilly.com/catalog/javarmi/index.html
2. The appendix A of the Mastering EJB which you can get from
http://www.theserverside.com/books/masteringEJB/download/Mastering_EJB2.pdf
What does the figure illustrate to us?
You can know the whole structure of a RMI application suc as how can client let the server run its program and the way server get the code from client. I will try to explain them as plain as I can.
1. The RMI application are often comprise of two seperate part. one is client and another is server. since sometimes the client's machine is not powerful enough it really needs a server to help them handle with the information they get. A typical server creates the remote object which will create some stub in client's environment someting like the clients holds the reference of some object which server creates. A typical client gets the remote reference (the stub) and invoke the method on it. the argument of the method of stub should be serializable in this way the argument can be copied and transfered to the server
2. Whe the Server start up it should using Naming.rebind to regist the remote object in registry for the bootstrapping purposes (or you may use aother naming service as one that uses JNDI) .
3. The RMI registry is using for finding the reference to the remote objects, it is a simple remote objeect name service that allows remote clients to get a reference to the remote object by name. it runs only in server for the security reason. as you can told the RMI registry is part of the server. also you can see it reside in the server side in the figure.
4.The client will invoke Naming.lookup to get the stub through the registry(it only provide the naming service which can lead the user to where the object reside)
5. Client invoke the method in the stub and pass his local object to the server. RMI will handle with this procedure and then the server will take response to continue the other work, run it return value or exception(note all this are passing by value)
Summay:
As the mechanism we describe above. RMI has ability to download the bytecodes (or simply code) of an object's class if the class is not defined in the receiver's virtual machine.