Die Schnittstellen der Roblet®-Bibliothek sind im Java™-Paket org.roblet zu finden:
org.roblet.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 org.roblet.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 execute(...) 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 der Klienten-Klasse. Die Klienten-Klasse ist Teil der Klienten-Bibliothek, welche von roblet®.org betreut und weiterentwickelt wird. Dort gibt es auch weitere Informationen und Beispiele dazu.
org.roblet.Robot - Kontext
Einem Roblet® wird im Roblet®-Server beim Ausführen der o.g. execute()-Methode eine Instanz vom Typ org.roblet.Robot übergeben. Diese Instanz wird Kontext genannt. Mit diesem Kontext kann das Roblet® auf die vom Roblet®-Server bereitgestellten Einheiten zugreifen. Der Zugriff auf diese Einheiten erfolgt mit der Methode getUnit(...).
org.roblet.Unit - Einheiten
Ein Roblet®-Server bietet einem Roblet® die von ihm verwalteten Ressourcen mit Hilfe von Instanzen von Klassen an, die die Java™-Schnittstelle org.roblet.Unit implementieren. Roblets® können sich diese Instanzen über die (einzige) Methode des Robot holen: getUnit(...).
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.
Gemacht wird das, indem 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 Nutzer herausgegeben werden.
Implementation von Einheiten
Der Hersteller einer anzubietenden Ressource erstellt passend eine Klasse, die die o.g. eigene Schnittstelle implementiert (implements). Diese Klasse platziert4 er 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 und damit auch der Zugriff auf Hardware 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 getUnit(...) des Kontext 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
Jedoch kann eine Weiterentwicklung 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 genRob®-genControl).