The Java Remote Method Invocation API
(Java RMI)
Overview
Java Remote Method Invocation (Java RMI) enables the programmer
to create distributed Java technology-based to Java
technology-based applications, in which the methods of remote Java
objects can be invoked from other Java virtual machines, possibly
on different hosts. RMI uses object serialization to marshal and
unmarshal parameters and does not truncate types, supporting true
object-oriented polymorphism.
Security Recommendations
See RMI Security Recommendations to improve the security of your RMI applications.
API Specification
Architecture and Functional Specification
Tutorials
- Getting
Started
The Getting Started Tutorial shows you the steps to follow to
create a distributed version of the classic Hello World program
using Java RMI. The Hello World applet makes a remote method call
to the server from which it was downloaded to retrieve the message
"Hello World!"
- Using Custom Socket
Factories with Java RMI
The "Using Custom Socket Factories with Java RMI" tutorial shows
you how to create a version of the distributed Hello World program
in which the Java RMI runtime uses sockets of a type chosen by the
programmer. This tutorial also includes a discussion of how Java
RMI can be used over SSL sockets.
- The Activation
Tutorials
The Activation Tutorials describe how to use the Java RMI APIs to
implement, to register, and to use activatable objects. Each
tutorial presents a different way to implement an activatable
object. All tutorials use the same parameterized setup program that
registers information about an activatable object with the Java RMI
Activation System Daemon (rmid).
- Configuring
inetd
to Launch rmid
The Internet services daemon inetd
, supported
on the Solaris Operating System (Solaris OS), provides an
alternative to starting up services at system boot time. This
daemon, a server process for Internet standard services, can be
configured to start services on demand.
- Designing Services to be
Launched from
inetd
This tutorial describes how to structure a service program
(employing a specially exported local registry) so that the service
can be started from inetd
when clients connect to the
service's local registry, and how to configure inetd
to launch the service program.
- Dynamic code downloading using Java
RMI (Using the
java.rmi.server.codebase
Property)
One of the most significant capabilities of the Java platform is
the ability to dynamically download Java software from any URL to a
VM running in a separate process, usually on a different physical
system. The result is that a remote system can run a program, for
example an applet, which has never been installed on its disk. This
tutorial describes the use of dynamic code downloading in a Java
system, and how it can be used with Java RMI.
- The Java
RMI trail of The Java Tutorial
This trail provides a brief overview of the Java RMI system and
then walks through a complete client/server example that uses Java
RMI's unique capabilities to load and to execute user-defined tasks
at runtime. The server in the example implements a generic compute
engine, which the client uses to compute the value of pi.
Enhancements
- Java RMI Release Notes
The release notes describe enhancements and changes to the Java RMI
APIs and implementation, as well to the associated tools,
rmic
, rmiregistry
, and
rmid
.
More Information