This document discusses Remote Method Invocation (RMI) in Java. RMI allows a method to be invoked on an object residing in a different Java Virtual Machine (JVM). It works through stubs and skeletons - stubs act as proxies for remote objects on the client side, while skeletons handle incoming calls on the server side. Developing RMI applications involves creating a remote interface, implementing it in a remote class that extends UnicastRemoteObject, compiling the class to generate stubs and skeletons, starting the RMI registry, and having the client access remote objects by lookup or direct construction.