Roblet®-Development-Kit
1.1 (10Juni10)
API für Anwendungen

Package org.roblet

Hier sind die zentralen Schnittstellen der Roblet®-Technik enthalten.

See:
          Description

Interface Summary
Roblet Diese Schnittstelle charakterisiert Roblet®-Klassen.
Robot Stellt den Kontext eines Roblets® dar und ermöglicht das Erfragen von Einheiten (Unit) eines Roblet®-Servers.
Unit Alle Einheiten der Roblet®-Technik müssen von diesem Typ sein.
 

Package org.roblet Description

Hier sind die zentralen Schnittstellen der Roblet®-Technik enthalten.

Im Rahmen der Roblet®-Technik werden einige Definitionen benötigt, die in allen Teilen einer verteilten Anwendung auf dieser Basis gleich sein müssen.  Diese Definitionen sind Java™-Schnittstellen (interface-Klassen).  Sie werden an anderer Stelle implementiert bzw. deren Implementierungen erwartet.  Diese Schnittstellen sind hier zusammengefaßt.

Roblet - Roblet®-Schnittstelle

Will eine Anwendung eine gewünschte Funktionalität auf einem Roblet®-Server ausführen, so muß sie eine Klasse erstellen, die die Java™-Schnittstelle Roblet implementiert1.  Zur Laufzeit können in der Anwendung bei Bedarf (beliebig viele, auch verschiedene) Instanzen von solchen Klassen erzeugt werden2.  Diese Instanzen können jederzeit zu einem Roblet®-Server geschickt werden.  Dort werden sie dann ausgeführt.3

Aus einer Roblet®-Instanz wird vom Roblet®-Server durch Ausführen der Methode Roblet.execute(Robot) ein Roblet®.  Die genannte Methode wird vom Entwickler der Roblet®-Klasse als Teil der Anwendung bereitgestellt.  Die Methode ist vergleichbar mit der Methode main(...) einer normalen Java™-Anwendung.

Eine Anwendung versendet Roblet®-Instanzen mit Hilfe eines Roblet®-Klienten.  Ein Roblet®-Klienten ist eine Instanz von Client.

Robot - Kontext

Einem Roblet® wird im Roblet®-Server beim Ausführen der o.g. Roblet.execute(Robot)-Methode eine Instanz vom Typ Robot übergeben.  Diese Instanz wird Kontext genannt.  Mit diesem Kontext kann das Roblet® auf die vom Roblet®-Server bereitgestellten Ressourcen in Form von Einheiten zugreifen.  Der Zugriff auf diese Einheiten erfolgt mit der Methode Robot.getUnit(Class).

Unit - Einheiten

Ein Roblet®-Server bietet einem Roblet® die von ihm verwalteten Ressourcen mit Hilfe von Instanzen von Klassen an, die die Java™-Schnittstelle Unit implementieren.  Roblets® können sich diese Instanzen über die (einzige) Methode des Kontexts holen:  Robot.getUnit(Class).

Definition von Einheiten

Der Themenkomplex Einheit (engl. unit) beginnt damit, daß ein Hersteller oder einfach ein Entwickler eine Ressource zur Verfügung stellen will.  Eine Ressource kann ein Stück Hardware sein, aber auch eine Software oder oft auch eine Kombination aus beidem.

Die Bereitstellung erfolgt, indem zunächst eine Java™-Schnittstelle (interface) erstellt wird.  Diese Schnittstelle muß Unit erweitern (extends).  Damit wird eine Einheit definiert.  Diese Definition sollte dokumentiert werden und kann dann an Anwendungsentwickler herausgegeben werden.

Implementierung von Einheiten

Damit die Ressource genutzt werden kann, erstellt der Hersteller der anzubietenden Ressource passend noch eine Klasse, die die o.g. eigene Schnittstelle implementiert (implements).  Diese Klasse platziert4 er als Teil eines Moduls in einem Roblet®-Server, so daß dieser bei Bedarf von ihr Instanzen erzeugen kann.

Die Implementierung der Klasse kann reines Java  sein, aber auch eine Anbindung anderer Software in C/C++ per JNI und damit praktisch auch der Zugriff auf beliebige Hardware und Bibliotheken ist möglich.  Eine solche Implementierung kann mit Treibern in Betriebssystemen verglichen werden.

Instanzen von Einheiten

Fragt ein Roblet® nach der durch die Einheitendefinition dargestellten Ressource, so gibt der Roblet®-Server daraufhin eine Instanz der Einheitenimplementierung zurück.  Der Methode Robot.getUnit(Class) des Kontexts wird dazu die Klasse der Einheiten-Schnittstelle als Parameter übergeben.

Zusammenfassung zur Thematik Einheiten

Eine Einheitendefinition ist ein Java™-interface zuzüglich einer textuellen Beschreibung, d.h. der Dokumentation der Art und Weise, wie sie benutzt werden kann und soll, inkl. Grundzustand, Fehlerfälle, Sonderfälle etc.  Diese Definition erweitert Unit.  Die Einheitenimplementierung (dann eine Java™-class) wird als Teil eines Roblet®-Servers bereitgestellt.  Ein Roblet® erhält auf Anfrage zur Laufzeit jeweils eine Instanz einer solchen Klasse und kann damit die dargestellte Ressource benutzen.

Wesentlich ist, daß nach Veröffentlichung der Definition einer Einheit keine Änderung mehr vorgenommen werden darf.  Eine Änderung würde dazu führen, daß die bereits existierenden Anwendungen nicht mehr das vorfinden, wogeben sie entwickelt wurden.

Weiterentwicklung von Einheiten

Eine Weiterentwicklung kann jedoch erfolgen, indem einfach eine weitere Definition gemacht wird.  Diese Definition kann der vorigen sehr ähnlich sein.  Auch die neue Definition muß eine Implementierung bereitgestellt werden, die aber für den Fall, daß sie der vorigen sehr ähnlich ist, auch sehr ähnlich und daher einfach sein wird.  Der Roblet®-Server kann dann möglicherweise sogar beide Implementierungen zur Verfügung stellen.

Auf diese Weise ist erfahrungsgemäß ein einfaches aber sehr tragfähiges Konzept der Versionierung gegeben.  Alte Anwendungen verwenden noch die alte Einheit (sofern verfügbar), neue Anwendungen können wählen.

Weiterführende Informationen

Auch zum Thema Einheiten sind Informationen und Beispiele auf roblet®.org verfügbar.


1  Diese Klassen werden Roblet®-Klassen genannt.
2  Diese Instanzen werden Roblet®-Instanzen genannt.
3  Eine in einem Roblet®-Server laufende Instanz wird Roblet® genannt.
4  Die Art und Weise, wie die Implementierung im Server platziert wird, ist dort beschrieben (vgl. Roblet®-Server).


Roblet®-Development-Kit
1.1 (10Juni10)
API für Anwendungen

Copyright © 2001-2010, roblet®.org, Hagen Stanek, http://roblet.org/rdk