Emerald ist eine verteilte, objektorientierte Sprache, die ab Mitte der 1980er Jahre an der University of Washington von Andrew P. Black, Norman Hutchinson, Eric Jul und Henry Levy entwickelt wurde. Ziel war es, verteilte Anwendungen so einfach zu machen wie lokale: Objekte sind auf allen Knoten des Netzes gleich behandelt, egal ob lokal oder entfernt.
Grundprinzipien
- Einheitliches Objektmodell: Der Objektbegriff gilt für private lokale Objekte und gemeinsame entfernte Objekte gleichermaßen (uniform object model).
- Feingranulare Mobilität: Objekte können zur Laufzeit zwischen Knoten wandern;
move,locate,fixundunfixsteuern Aufenthaltsort und Verankerung. - Typen: Emerald hat ein starkes Typsystem mit abstrakten Typen und Schnittstellen; Konstanten sind unveränderlich (immutable).
- Prozesse: Nebenläufigkeit ist eingebaut; Objekte können Prozesse kapseln.
Typische Sprachmuster
object g % Objekt definieren
const x <- 1 % unveränderliche Bindung
export op -> [r : Integer] % Schnittstelle exportieren
...
end object g
move g to someNode % Objekt zur Laufzeit verschieben
locate g % Aufenthaltsort abfragen
fix g % Objekt am Knoten verankern
Die Verteilung ist für den Programmierer weitgehend transparent: Der Aufruf einer Methode auf einem entfernten Objekt sieht aus wie ein lokaler Aufruf.
Praxis-Tipps
- Emerald wurde auf Netzwerken von VAX-Rechnern implementiert und ist eines der frühesten Systeme mit Objektmigration.
- Das verteilte Objektmodell gilt als Wegbereiter für Java RMI, CORBA und moderne verteilte Systeme.
- Immutable Konstanten (
const) und explizitefix-Verankerung machen das Laufzeitverhalten vorhersehbarer.
Verwandte Grundlagen: Self-Befehle, Blue-Befehle, Smalltalk-Befehle, Java-Befehle.