genControl
Schnittstellen
Module
Einheiten

Schnittstellen

genRob®-genControl bietet zwei Schnittstellen für Software-Entwickler an: Über die Einheiten-Schnittstelle kann der Entwickler einer Roblet®-Anwendung, auf die von genRob®-genControl selbst bereitgestellte Funktionalität zugreifen.  Beispiel dafür ist das Logging.

Die Modul-Schnittstelle erlaubt einem fortgeschrittenen Entwickler eigene Einheiten für den Zugriff auf beliebige Resourcen zu entwickeln, die dann per genRob®-genControl bereitgestellt werden können.


Einschränkungen für Roblets®

Folgende Einschränkungen sind beim Entwickeln von Roblets® für die vorliegende Version von genRob®-genControl zu beachten:
  • Byte-Code
    • Kompilation von Roblets® unter JDK 1.5 oder höher ohne Angabe von -source 1.4 und -target 1.4 führt mit hoher Wahrscheinlichkeit dazu, daß sie nicht auf einem Roblet®-Server laufen, der unter JDK 1.4.2 läuft (Klassenversion paßt nicht)
  • Ressourcen
    • Direktes Benutzen von Ressourcen ohne Kontrolle durch den Server sollte grundsätzlich nicht geschehen - hierfür müssen passende Einheiten benutzt werden:
      • Terminal-E/A (System.in/out/err)
      • Prozesse (Process u.a.)
      • Dateisystem (java.io.File u.a.)
      • Netzwerk (Sockets, RMI, Corba u.a.)
      • Serielle-/parallele Schnittstellen
      • Grafik (2D, AWT, Swing, 3D, ...)
      • u.a.m.
    • Bibliotheken, die die o.g. Ressourcen direkt benutzen, anstatt über Einheiten zu gehen, dürfen ebenso nicht eingesetzt werden
    • Aufruf von System.exit(...) führt dazu, daß die JVM beendet wird, anstatt das Roblet® zu beenden
    • Insgesamt Vorsicht bei den Klassen Runtime und System, da sie auf alle Roblets® und den Server wirken
  • Ausnahmebehandlung
    • Pauschales Abfangen von Throwable oder Error und Ableitungen muß mit größter Vorsicht geschehen.  Keinesfalls darf ThreadDeath abgefangen werden, ohne danach sofort geworfen zu werden.
    • Vorsichtige Verwendung von finally, um ThreadDeath nicht auszuhebeln
  • Nebenläufigkeit
    • Starten von Threads (Thread) darf nur in der Threadgruppe (ThreadGroup) des ersten Threads des Roblets® geschehen oder in untergeordneten Gruppen
    • Verwendung von Prioritäten höher als die initiale des ersten Threads des Roblets® kann die Funktion des Servers empfindlich beeinträchtigen
  • Verwendung von finalize()-Methoden führt zu Aktivitäten nach dem Ende eines Roblets® und sollte grundsätzlich vermieden werden
  • Verwendung von native ergibt in der Roblet®-Technik keinen Sinn und sollte grundsätzlich nicht gemacht werden
  • Bei der Arbeit mit unbekannten Servern ist zu beachten:  Roblets® sollten keine Instanzen zur Anwendung zurücktransportieren, deren Code sie dort nicht schon haben. - Dies birgt ein Sicherheitsrisiko, welchem natürlich mit einem geeigneten Security-Manager anwendungsseitig begegnet werden kann.
Diese Einschränkungen sind im wesentlichen bedingt durch die Implementierung von genRob®-genControl bzw. der JVM's.  An der Aufhebung der Einschränkungen wird gearbeitet.

 

© 2002-2008 Hagen Stanek, genRob®
genSite 2.1.2