Issue No. 03 - May/June (1997 vol. 17)
DOI Bookmark: http://doi.ieeecomputersociety.org/10.1109/40.591654
By providing a homogeneous view to a heterogeneous group of machines and by safely allowing the dynamic downloading of code into a running process, Java has changed the usual set of assumptions that have governed distributed computing systems. Coupled with a strongly-typed language, the Java platform gives an environment for developing the first truly object-oriented, as opposed to object-based, distributed computing system. The first step towards such a system has been taken in the Java Developers Kit release 1.1. That release includes the Java Remote Method Invocation system. This system allows a Java object running in one virtual machine to make method calls on other Java objects in other virtual machines, perhaps on a different physical machine. The overall design of RMI has much in common with other distributed object and remote procedure call systems. However, since RMI assumes that the calls are made from one Java object to another Java object, the system is able to pass object arguments and return values by their actual type rather than their declared type, allowing full distributed polymorphism. If the class of such a passed object is not present in the receiving machine, the system allows the code for the type to be dynamically loaded. The system also utilizes the garbage collection present on the base platform to implement a distributed garbage collection scheme, enhanced to be robust in the face of network failures. In this paper, we will describe the Java RMI system, including the underlying object serialization system that is used to convert Java objects into a form that can be transmitted from one virtual machine to another. We will show how a language-centered approach to distributed systems leads to a distributed object model that is a natural extension of the language's object model. This in turn makes the programming of such a system comparatively simple, and enhances the functionality and robustness of the distributed infrastructure.
Java, distributed computing, remote method invocation
J. Waldo, A. Wollrath and R. Riggs, "Java-Centric Distributed Computing," in IEEE Micro, vol. 17, no. , pp. 44-53, 1997.