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, fix und unfix steuern 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 explizite fix-Verankerung machen das Laufzeitverhalten vorhersehbarer.

Verwandte Grundlagen: Self-Befehle, Blue-Befehle, Smalltalk-Befehle, Java-Befehle.