Überblick

Im Rahmen der Roblet®-Technik1 wird eine Anwendung benötigt, die den Zugriff auf sog. Ressourcen reguliert und dabei eine Laufzeitumgebung für Roblets® bietet.  Diese Anwendung wird Roblet®-Server genannt.

Das vorliegende Paket ist im wesentlichen genau ein Roblet®-Server.  Damit eine bestimmte Ressource durch den Server bereitgestellt werden kann, muß ein sog. Modul eingesetzt und/oder entwickelt werden.  Zusätzlich ist als Zubehör noch ein Werkzeug für administrative Zwecke und die vorliegende Dokumentation dabei.

Roblet®-Server

Der Roblet®-Server reguliert den Zugriff auf Ressourcen und stellt darüber hinaus eine Laufzeitumgebung für Roblets® bereit.

Eine Ressource kann eine Datei, ein ganzes Dateisystem, eine Kommunikationsverbindung, eine Datenbankverbindung, ein einfacher Motor, ein Motor-Controller, eine Lampe, ein Schalter, ein Ultraschall-Element, ein Laserscanner, ein CAN-Controller, ein I2C-Controller, eine Netzwerk-Schnittstelle oder eines von unzählig vielen anderen Dingen sein.  Es muß sich nur irgendwie von einer Java™-Anwendung aus ansprechen lassen.

Zwei parallel laufende beliebige Java™-Anwendungen sind oft nur schlecht in der Lage, sich bei der Nutzung einer Ressource zu koordinieren.  Sie wissen nur wenig voneinander.  Ein Roblet®-Server ist zunächst auch nur eine Java™-Anwendung.

Auch Roblets® sind in gewissen Grenzen Java™-Anwendungen.  Jedoch können mehrere Roblets® gleichzeitig unter der Obhut eines Roblet®-Servers laufen.  Läßt man nun einen Roblet®-Server eine bestimmte Ressource exklusiv verwalten und greifen mehrere Roblets® darauf zu, so kann der Server den Zugriff koordinieren.

Die Laufzeitumgebung des Roblet®-Server für die Roblets® bietet diesen einerseits den Weg zu den verwalteten Ressourcen und andererseits wird aber auch der "Lebenszyklus" der Roblets® betreut.  Dazu gehört die Bereitstellung einer Möglichkeit, daß Anwendungen über ein Netzwerk Roblet®-Instanzen platzieren, aber auch, daß eine Roblet®-Instanz jederzeit beendet werden kann.

Zur Unterscheidung vom bloßen Software-Paket wird ein laufender Server als Server-Instanz bezeichnet.  Zu beachten ist, daß jeder (Neu-)Start eine neue Instanz erzeugt.  Auf einem Wirtsrechner können gleichzeitig mehrere Server-Instanzen laufen.  Ist klar, daß eine Server-Instanz gemeint ist, so wird trotzdem oft einfach von Roblet®-Server gesprochen.

Die Laufzeitumgebung bietet eine Netzwerkschnittstelle an, um Anwendungen den Zugang zu ermöglichen.  Diese Netzwerkschnittstelle wird im unterliegenden Wirtsrechner (engl. host) bzw. dessen Betriebssystem an ein sog. TCP-Port gebunden.  Zusammen mit dem im Netzwerk verwendeten Namen des Wirtsrechners führt das zum sog. Namen der Server-Instanz (host:port).  Von einem Rechner eines Netzwerkes aus gesehen, kann zu einem jeden Zeitpunkt hinter einem Server-Namen nur eine Server-Instanz stehen.  Aus Netzwerk-topologischen Gründen sind jedoch gleichzeitig mehrere Namen pro Instanz möglich.

Anwendungen, die Roblet®-Server nutzen (können), werden Roblet®-Anwendung genannt.  Roblet®-Anwendungen nutzen im Gegensatz zu "normalen" Anwendungen auch die Klienten-Bibliothek - sind aber ansonsten weiterhin normale Anwendungen.

Mit Hilfe der Klienten-Bibliothek können solche Anwendungen Roblets® in einer Server-Instanz laufenlassen.  Mit dem vorliegenden Paket wird auch eine Version der Klienten-Bibliothek mitgeliefert.  Sie dient dem Roblet®-Server, um selbst auf andere Server zugreifen zu können.  Roblet®-Anwendungen müssen jedoch nicht diese Version einsetzen.  Damit eine Roblet®-Anwendung einen Roblet®-Server nutzen kann, braucht sie im Grunde nur ein Paket der Klienten-Bibliothek verwenden.  Ein Server-Paket ist für Roblet®-Anwendungen nicht nötig.

Einheiten

Einheiten vermitteln die von einem Roblet®-Server zur Verfügung gestellten Ressourcen.  Auf der Ebene eines Roblets® wird nur mit Einheiten gearbeitet.  Der Roblet®-Server arbeitet hingegen zusätzlich mit Modulen.

Einheiten können stets aus zwei Blickrichtungen betrachtet werden.  Meistens liegt die Sichtweise eines Nutzers vor, der Einheiten in seinen Roblets® als Teil einer Anwendung und damit die dahinterliegenden Ressourcen verwendet.  Ein Nutzer verwendet Einheiten-Definitionen, um mit Hilfe des Kontexts (org.roblet.Robot) Einheiten-Instanzen zu erhalten.

Die andere Blickrichtung wird gewöhnlich von Herstellern einer Ressource betreut.  Hersteller bieten Module zur Nutzung der Ressource an.  Sie sind es in der Regel, die Ressource in Form von Einheiten-Definitionen bereitstellen.  Eine solche Definition sind eine oder mehrere Java™-Schnittstellen, die org.roblet.Unit erweitern, zusammen mit Hilfsklassen und einer Dokumentation.  Die Dokumentation umfaßt mindestens eine Schnittstellenbeschreibung z.B. als Javadoc, aber auch weitere Unterlagen oder Beispiele sind für eine Festlegung hilfreich.  Wesentlich ist, daß Nutzer im allgemeinen ausschließlich mit den Einheiten-Definitionen umgehen und die zugehörigen Klassen-Dateien auch mit ihrer Anwendung ausliefern.

Die Implementierung von Einheiten durch Hersteller wird für den Roblet®-Server im Rahmen von Modulen vorgenommen.  Dabei werden die definierten Einheiten in Form von Java™-Klassen implementiert und zusätzlich gewisse Regeln spezifisch für Module eingehalten.  Die erstellten Java™-Klassen können ihrerseits auf beliebige andere Java™-Teile zugreifen, aber auch über Mechanismen wie JNI2 Teile aus anderen Programmiersprachen nutzen.

Modul

Ein Modul ist aus Sicht des Roblet®-Servers eine Klasse, die eine von ihm definierte Schnittstelle erfüllt.  Diese Schnittstelle erlaubt dem Server, daß Modul nach Einheiten zu befragen bzw. von diesem sog. Einheiten-Instanzen zu erhalten.  Ebenso teilt der Server über diese Schnittstelle einem Modul mit, wenn ein Roblet® endete bzw. genauer, daß eine gewisse Einheiten-Instanz nicht mehr weiter verwendet werden wird.  Auf diese Weise läßt sich für jede von Java™ aus bedienbare Ressource eine Logik bereitstellen, die diese koordiniert.

Beim Start eines Servers wird festgelegt, welche Module er verwendet.  Auf diesem Wege lassen sich beliebige Ressourcen bereitstellen.  Ressourcen, wie z.B. das Logbuch, werden vom Roblet®-Server selbst angeboten und stehen den Roblets® ebenso über Einheiten zur Verfügung.

Damit eine Roblet®-Anwendung eine spezielle Ressource einer Roblet®-Server-Instanz nutzen kann, braucht sie die Definition der zugehörigen Einheit.  Eine solche Definition besteht aus einer oder mehreren Java™-Schnittstellen und ev. noch zugehörigen Hilfsklassen.  Die Einheiten-Definitionen der Ressourcen des Roblet®-Servers sind Teil der Klienten-Bibliothek und auch dort dokumentiert.  Einheiten-Definitionen zu den Modulen liegen für gewöhnlich den Modulen selbst bei und sind dort dokumentiert.  Sie sind in aller Regel beim Administrator eines Servers erhältlich oder dieser kann zumindest darüber Auskunft geben, wo man sie bekommen kann.

Werkzeug

Das Werkzeug ist ebenso wie der Server eine Java™-Anwendung.  Mit ihm lassen sich z.B. Log-Informationen eines Servers holen und anzeigen.


1  Auf roblet®.org gibt es mehr Informationen zu dem Thema Roblet®-Technik.
2  engl. Java™ Native Interface

powered by genRob®erzeugt am 04.11.2008 um 18:34:02.128 CET mit
genRob®-genSite 3.3