Check out the new USENIX Web site.

The Spring Object Model

Sanjay R. Radia, Graham Hamilton, Peter B. Kessler, and Michael L. Powell

SunSoft, Inc.
2550 Garcia Avenue, MTV19-216
Mountain View, CA 94043


The Spring Object Model provides a basis for building operating systems, applications, and other software components for a modern distributed computing environment. All services and abstractions- whether local or remote; system, extension, or user; library or server-are structured as objects. Objects have strongly typed interfaces specified in an interface definition language. Spring forces a clear separation of interface and implementation; no implementation properties are allowed in the interface. It supports multiple interface inheritance, which is used to structure the system abstractions and provides the basis of extending and evolving them. Interfaces are used to define boundaries of software components which can be mapped to different address space and machine boundaries. The model provides parameter passing modes that are especially useful for distributed computing but which can be optimized for the local case. This allows one to construct microkernels with the option of configuring components in the same address space for improved performance. Objects are instances of interfaces, on which clients can perform operations. A client of an object is generally unaware of the location of the object's implementation, and can perform operations on the object and pass the object around freely. The representation of a Spring object is not a fixed piece of information such as a unique identifier; instead, it can be tailored to meet different needs using the subcontract abstraction.

Download the full text of this paper in ASCII (62,517 bytes) and POSTSCRIPT (121,393 bytes) form.

To Become a USENIX Member, please see our Membership Information.