Roblet®-Development-Kit
2.2 (30Dez2015)
API für Module

Roblet®-Development-Kit
2.2 (30Dez2015)
API für Module

Dies ist die Beschreibung der API (application programming interface - Anwendungsprogrammierschnistelle) für Module zum Roblet®-Server.

See:
          Description

Module
genRob.genControl.modules Dieses Java™-Package enthält wesentliche Teile dessen, was die API für Module zum Roblet®-Server ausmacht.

 

Dies ist die Beschreibung der API (application programming interface - Anwendungsprogrammierschnistelle) für Module zum Roblet®-Server.  Module bieten die Möglichkeit, Ressourcen in Form von Einheiten für Roblets® bereitzustellen.  Ressourcen sind prinzipiell alles, was über die grundlegenden Möglichkeiten einer Java™-Klasse in einer JVM, wie Ablaufkontrolle, Methodenaufrufe, Instanzerzeugung, Threading etc., hinausgeht.  Dazu gehören die Daten der Laufzeitbibliothek genauso wie Dateisystem, Netzwerk, Datenbank, grafische Oberfläche usw.  Auch native Zugriffe (per JNI - Java™ native interface) fallen darunter.

Warum das?

Roblets® können vom Roblet®-Server jederzeit ohne deren Widerspruchsmöglichkeit beendet werden.  Dieses "harte" Beenden trifft die einzelnen Threads eines Roblets® dann in einem beliebigen Punkt ihres Ablaufs.  Die Klassen eines Roblets® werden nach einem solchen Ende nicht mehr weiterverwendet sondern verfallen einfach.  Die Ressourcen-verwaltenden Bibliotheken insbesonderes die des JDK (Java™ Development Kit) werden jedoch auch von anderen Teilen eines Roblet®-Servers verwendet und können nicht verfallen.  Diese Bibliotheken sind aber in der Regel auf derartiges nicht vorbereitet (weswegen ThreadGroup.stop() auch abgekündigt und nicht mehr empfohlen ist).  Stattdessen muß der Roblet®-Server dafür Sorge tragen, daß Threads eines Roblets® nicht innerhalb der o.g. Bibliotheken "hart" enden.

Um das bewerkstelligen zu können, gibt es das Konzept der Einheiten.  Die Einheiteninstanzen, die ein Modul zur Verfügung stellt, werden vom Roblet®-Server nicht direkt an das jeweilige Roblet® weitergegeben.  Stattdessen erhält das Roblet® automatisch eine Ersatzinstanz, die das obige Problem des "harten" Endes löst und gleichzeitig noch Aspekte der Sicherheit berücksichtigt.

Wie geht das?

Ein Entwickler muß für ein Modul die Schnittstelle Module2 implementieren.  Dabei hat er sich hauptsächlich nur darum zu kümmern, daß eine Regel eingehalten wird:

Alle Instanzen, die ein Modul an ein Roblet® herausgibt und die im Modul über ihre Methoden etwas verändern können, müssen vom Typ Unit sein.  Darüberhinaus muß an den Stellen, wo derartige Instanzen zurückgegeben oder als Parameter an das Modul übergeben werden, ein Schnittstellentyp (interface) stehen.

Dieser Schnittstellentyp läßt es dann zu, daß der Roblet®-Server diese Instanzen zur Laufzeit erkennt und seine Arbeit hinsichtlich der Ersatzinstanzen erfüllen kann.

Wo steht noch mehr?

Das Kapitel Entwicklung enthält Informationen hinsichtlich der Architektur des Roblet®-Serves.  Dort ist auch ein Beispiel-Modul erläutert.  Zur Einstiegsseite des RDK kommt man hier.


Roblet®-Development-Kit
2.2 (30Dez2015)
API für Module

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