Most of the methods you need for working with remote objects are in three packages: java.rmi , java.rmi.server, and java.rmi.registry. The java.rmi package defines the classes, interfaces, and exceptions that will be seen on the client side. You need these when you’re writing programs that access remote objects but are not themselves remote objects. The java.rmi.server package defines the classes, interfaces, and exceptions that will be visible on the server side. You use these classes when you are writing a remote object that will be called by clients. The java.rmi.registry package defines the classes, interfaces, and exceptions that are used to locate and name remote objects. These packages are part of the core API starting in Java 1.1.


In this chapter and in Sun’s documentation, the server side is always considered to be “remote” and the client is always considered “local”. This can be confusing, particularly when you’re writing a remote object. When writing a remote object, you’re probably thinking from the viewpoint of the server, so that the client appears to be remote.

The Server Side

To create a new remote object, you first define an interface that extends the java.rmi.Remote interface. The Remote interface does not have any methods of its own; its sole purpose is to tag remote objects so that they can be identified as such. One definition of a remote object is an instance of a class that implements the Remote interface, or any interface that extends ...

Get Java Network Programming, Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.