EMERALD: An object-based language for distributed programming
N.C. Hutchinson · 1987
Distributed systems have become more common, however constructing distributed applications remains a very difficult task. Numerous operating systems and programming languages have been proposed that attempt to simplify the programming of distributed applications. We present a programming language called Emerald that simplifies distributed programming by extending the concepts of object-based languages to the distributed environment. Emerald supports a single model of computation: the object. Emerald objects include private entities such as integers and Booleans, as well as shared, distributed entities such as compilers, directories, and entire file systems. Emerald objects may move between machines in the system, but object invocation is location independent. The uniform semantic model used for describing all Emerald objects makes the construction of distributed applications in Emerald much simpler than in systems where the differences in implementation between local and remote entities are visible in the language semantics. Emerald incorporates a type system that deals only with the specification of objects--ignoring differences in implementation. Thus two different implementations of the same abstraction may be freely mixed in an Emerald program. Emerald has been implemented. The compiler accepts the responsibility of providing an efficient implementation from object definitions, generating multiple implementations tuned to different usage patterns from the same source code. We discuss these implementation considerations and provide performance data to justify our claim that Emerald can be efficiently implemented.