|
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
|
|