We show a distributed object model for the JavaTM System [1,6] (hereafter referred to simply as "Java") that retains as much of the semantics of the Java object model as possible, and only includes differences where they make sense for distributed objects. The distributed object system is simple, in that a) distributed objects are easy to use and to implement, and b) the system itself is easily extensible and maintainable. We have designed such a model and implemented a system that supports remote method invocation (RMI) for distributed objects in Java. This system combines aspects of both the Modula-3 Network Objects system [3] and Spring's subcontract [8] and includes some novel features.
To achieve its goal of seamless integration in the language, the system exploits the use of pickling [14] to transmit arguments and return values and also exploits unique features of Java in order to dynamically load stub code to clients. The final system will include distributed reference-counting garbage collection for distributed objects as well as lazy activation [11,16].
[1]
James G. Mitchell,et al.
Subcontract: a flexible base for distributed programming
,
1994,
SOSP '93.
[2]
Graham Hamilton,et al.
The Spring Nucleus: A Microkernel for Objects
,
1993
.
[3]
David Robson,et al.
Smalltalk-80: The Language and Its Implementation
,
1983
.
[4]
Guy L. Steele,et al.
The Java Language Specification
,
1996
.
[5]
Bjarne Stroustrup,et al.
The Annotated C++ Reference Manual
,
1990
.
[6]
Lewis Pinson.
Object-Oriented Programming with Objective-C
,
1991
.
[7]
Ted Wobber,et al.
Distributed Garbage Collection for Network Objects
,
1993
.
[8]
Edward Wobber,et al.
Network objects
,
1994,
SOSP '93.
[9]
Stephen A. Rago,et al.
UNIX system V network programming
,
1993,
Addison-Wesley professional computing series.
[10]
Jim Waldo,et al.
Simple Activation for Distributed Objects
,
1995,
COOTS.