JavaSpaces

Ein JavaSpace ist eine spezielle, objekt-orientierte Datenbank in der Tradition des Tuplespace. Die in der Datenbank gespeicherten Objekte sind die sogenannten Entries. Bei Entry ist ein Java-Objekt, dessen Instanzvariablen ausschließlich als public deklariert sind und deren Werte serialisierbare Objekte sein müssen.

Die Manipulation des Datenbankinhalts geschieht über sechs einfache Operationen:

• read - liest ein Entry, das auf ein Template passt,
• readIfExists - wie read, wenn kein passendes Entry vorhanden ist, wird jedoch nicht gewartet,
• contents - liest alle Entries, die auf ein oder mehrere Templates passen,
• take - entnimmt ein oder mehrere Entries, die auf ein oder mehrere Templates passt,
• takeIfExists - wie take, jedoch wird nicht auf das Auftauchen eines passenden Entries gewartet,
• write - schreibt ein oder mehrere Entries in den JavaSpace.

Eine weitere Operation, notify, dient dazu, Listener zu registrieren. Die Listener erhalten einen Event, wenn ein auf ein Template passendes Entry in den JavaSpace geschrieben wird.

Mit der Operation registerForAvailabilityEvent kann ein Listener für mehrere Templates registriert werden, der auf die Sichtbarkeit (Entry kann mit read gelesen werden) oder die Verfügbarkeit (Entry kann mit take entnommen werden) von passenden Entries reagiert.

Alle Operationen können transaktionsgesichert ausgeführt werden.

Für Transaktionen, registrierte Listener und Entries werden Leases vergeben (siehe Lease).

JavaSpaces werden von E. Freeman, S. Hupfer und K. Arnold in dem Buch "JavaSpaces: Principles, Patterns and Practice" (Addison-Wesley, 1999) beschrieben.

JavaSpaces sind ein Teil von Jini, einer von Sun Microsystems entwickelten Technologie für vernetzte Heim- und Consumer-Geräte. Informationen zu Jini finden sich im Internet unter www.sun.com/software/jini.


Anlage

Abbildung: JavaSpaces und Clients (Quelle und Copyright: Sun Microsystems, Inc.).