Auf dieser Seite sind die Anpassungen, Erweiterungen und Änderungen aufgelistet, die für die vorliegende Version gemacht wurden. Zuerst kommen die jüngsten (neuesten) Einträge. Wie die einzelnen Versionen zusammenarbeiten ist im Kapitel Interoperabilität beschrieben.
Folgende Eintragsklassen gibt es:
- Neue Dinge,
- geänderte Sachen und
- Fehlerkorrekturen.
Für Version 2.2
- Einsatz von Maven in den Bauprozess integriert einschließlich angepaßter Versionierung
- Schlägt der Start des internen Roblet-Klienten fehl, so wird nun auch der zugehörige Stacktrace mit ausgegeben.
- Die undokumentierte Klasse genRob.genControl.client.util.Out zur Vereinheitlichung von Log-Ausgaben wurde entfernt.
- Log-Ausgaben des Servers in eine Datei erfolgen nun unabhängig von der Aktivierung server-eigener Log-Einträge.
- Überarbeitung der Dokumentation zum Thema Logbuch im Server.
- Spurious-Wakeups unterbunden
Für Version 2.1
- Neue Werkzeug-Funktion ping zum Anfragen der Existenz und des Zeitverhaltens eines Servers.
- Der Ziel-Server-Name beim Start eines Vertreter kann nun auch ohne Doppelpunkt (und Port) sein.
- Die Java™-Eigenschaft genRob.genControl.client.download, welche ermöglichte, daß Klassen vom Server zum Klienten hinuntergeladen werden konnten, ist nun generell nicht mehr verfügbar.
- Die Java™-Eigenschaft genRob.genControl.security, welche ermöglichte, daß der Server mit eingeschränkten Sicherheitsmechanismen arbeitet, ist nun generell nicht mehr verfügbar.
- Das Laden von Modulen in den Server, die von genRob.genControl.modules.Module abgeleitet sind (Typ 1), ist nun von einer Warnung begleitet, da in naher Zukunft derartiges nicht mehr unterstützt wird.
- Der Server endet nun während der Initialisierung bei jeglichen Ausnahmen java.lang.Throwable und auch wenn diese in statischen Initialisierern geschehen.
- Der Klient wirft nun wirklich, d.h. wie dokumentiert, Ausnahmen der org.roblet.Roblet.execute(Robot) direkt aus genRob.genControl.client.Slot.run(Roblet). Die undokumentierten Ausnahme genRob.genControl.client.server.ExecutionException wird für Ausnahmen (abgeleitet von java.lang.Exception) nicht mehr geworfen!
- Der Server entfernt nun Stack-Elemente von Ausnahmen der Roblets®, die Implementierungsdetails des Servers darstellen.
- Der Klient fügt nun lokale Stack-Elemente zu Ausnahmen der Roblets® hinzu, so daß der Stack insgesamt lokale und ferne Elemente netzwerktransparent enthält.
- Neues Protokoll 5, bei dem der Server nun ein Download-Anfrage eines Klienten sogar abweist - bisher hat nur der Klient nicht angefordert.
- Unbehandelte Ausnahmen von sekundären Threads von Roblets werden nun privilegiert. Damit können sie nun vollständig loggen und weitere Prozesse anstoßen.
- Ausgaben im Terminal für direkt geloggte Ausnahmen nun ausführlicher mit Klassennamen und Klassenlader für den loggenden Thread und dessen Thread-Gruppen.
- Die Ausführung von Aufrufen ferner Instanzen wird nun ausführlicher unter Angabe von Aufrufdetails geloggt.
- Direkt geloggte Ausnahmen erscheinen nun generell bei eingeschalteter Terminal-Ausgabe als erweiterte Ausgabe zuzüglich Stacktrace.
Für Version 2.0
I) Hauptsächlich für Administratoren wichtig
- Alle Java™-Archive arbeiten nur noch mit JDK 1.5 oder höher. Alle Klassen sind nun gegen JDK 1.5 kompiliert. Die Dokumentation wurde passend verknüpft.
- Bei Angabe von 0 als gewünschtes Port wählt der Server die nächste (vom Betriebssystem vergebene) freie Nummer.
- Der Server als Java™-Programm definiert nun Rückgabewerte, welche in Start-Scripten oder -Batches genutzt werden können.
- Die Ausgabe der Rechte- und Versionsinformationen kann nun mit Hilfe der Java™-Eigenschaft org.roblet.server.quiet unterdrückt werden.
- Die Befehlszeile kennt nun den neuen Befehl h zur Anzeige einer Kurzübersicht aller Befehle.
- Der Verzeichnisdienst kann nun mit Hilfe von Roblets angesprochen werden. Um den Inhalt von Verzeichnisdiensten anzuzeigen, wurde das Werkzeug passend erweitert. Klient und Server nutzten das nach Möglichkeit auch. Die Interoperabilität mit alten Verzeichnisdiensten, Klienten und Servern bleibt aber noch gewahrt.
- Der Verzeichnisdienst kann nun hinsichtlich des Loggings justiert werden.
- Das Logging von Verzeichnisdienst-Zugriffen des Servers und des Vertreters wird nun mit dem Schlüsselwort directories (statt bisher jini) gesteuert.
- Das Logging von Verzeichnisdienst-Zugriffen des Klienten wird nun mit dem Schlüsselwort directories (statt bisher genMediator) gesteuert. Das betrifft sowohl den Server-internen Klienten als auch Klienten von Anwendungen.
- Die alte Modul-Schnittstelle genRob.genControl.modules.Module ist nun abgekündigt. Der Server wird alte Module aber noch einige Zeit unterstützen.
- genRob.genControl.client.jar nun direkt im Klassenpfad von org.roblet.jar mit enthalten.
- Module neuen Typs werden nun vor Modulen alten Typs geladen. Die Reihenfolge innerhalb der Typen bleibt ansonsten erhalten.
- Der Klient unterstützt keine RMI-basierte Kommunikation zu (alten) Roblet®-Servern mehr. Das Setzen der Java™-Eigenschaft genRob.genControl.client.protocol.RMI führt nun dazu, daß der Klient eine Ausnahme erzeugt.
- Die Java™-Eigenschaft genRob.genControl.disregards wird nicht mehr verwendet.
- Server endet im Fehlerfall nun mit Fehlermeldung, auch wenn kein Logging aktiviert ist. Insbesondere endet nun der Server, wenn das gewünschte Port besetzt ist.
- Der Verzeichnisdienst startet keinen RMI-Dämon (rmid) mehr. Es wird auch kein temporäres Verzeichnis mehr benötigt. Der Start mehrerer Verzeichnisdienste auf dem gleichen Rechner ist nun möglich.
- Die Jini™-Dateien tools.jar, reggie-dl.jar und jini-examples-dl.jar sind entfallen. jini-core.jar, jini-ext.jar, reggie.jar und jini-examples.jar werden nun aus den Quellen mit JDK 1.5 gebaut.
- Ausnahmen der Art java.lang.IllegalStateException: discovery terminated vermieden
II) Hauptsächlich für Anwendungsentwickler wichtig
- Alle Java™-Archive arbeiten nur noch mit JDK 1.5 oder höher. Alle Klassen sind nun gegen JDK 1.5 kompiliert. Die Dokumentation wurde passend verknüpft.
- Die Methoden warten nun "unendlich" lang auf die Möglichkeit, eine Verbindung zum Server aufzubauen. Sie geben im wesentlichen nur noch eine java.lang.InterruptedException zurück, wenn sie durch einen anderen Thread unterbrochen wurden.
- Die Methode genRob.genControl.client.Client.getServer(String) akzeptiert nun jegliche Server-Namen, auch wenn sie möglicherweise ein falsches Format haben. Der Aufrufer muß selbst im Bedarfsfall für passende Prüfungen sorgen.
- genRob.genControl.unit.log.Logger2.log(..) ignoriert nun null-Nachrichten.
- Das Logging von Verzeichnisdienst-Zugriffen des Klienten wird nun mit dem Schlüsselwort directories (statt bisher genMediator) gesteuert. Das betrifft sowohl den Server-internen Klienten als auch Klienten von Anwendungen.
- Die Verbindungsaufnahme beim Erzeugen von Server-Repräsentanten wurde überarbeitet, korrigiert und parallelisiert.
- Die Schnittstelle des Fach-Repräsentanten wurde auf angepaßt und im besonderen sind nun genRob.genControl.client.Slot.getInputStream() und genRob.genControl.client.Slot.getOutputStream() abgekündigt.
-
Die bisher schon abgekündigte Einheiten
- genRob.genControl.unit.log.Log und die zugehörigen Hilfsklassen genRob.genControl.unit.log.LogEntry und genRob.genControl.unit.log.ThreadInfo
- genRob.genControl.unit.log.Logger
- genRob.genControl.unit.Version
-
Die bisher schon abgekündigte Methoden run(...) von
- genRob.genControl.client.Client
- genRob.genControl.client.Nominee
- genRob.genControl.client.Server
- Die undokumentierte Einheit genRob.genControl.unit.JiniPublisher wurde entfernt.
- Owner-Konzept wurde entfernt.
- TCP-Verbindungswiederaufbau des Klienten nun mit Abbruchbedingung
III) Hauptsächlich für Entwickler von Modulen wichtig
- Die Methode genRob.genControl.modules.Module2.initModule(ModuleContext) beendet bei Werfen einer Ausnahme doch wieder den Server.
- Module neuen Typs werden nun vor Modulen alten Typs geladen. Die Reihenfolge innerhalb der Typen bleibt ansonsten erhalten.
- Die alte Modul-Schnittstelle genRob.genControl.modules.Module ist nun abgekündigt. Der Server wird alte Module aber noch einige Zeit unterstützen.
- Owner-Konzept wurde entfernt.
Für Version 1.3
- Neuer Modultyp Module2 mit automatischer Behandlung von Abgrenzungsmechanismen
- Neues Schlüsselwort unit zum Loggen von Server-Aktivitäten hinsichtlich Einheiten-Ersatzinstanzen
- Das Kapitel Server-Sicherheit wurde ausführlicher gestaltet.
- Unterbrochene Aufrufe ferner Instanzen führten nicht zur definierten java.lang.RuntimeException mit verketteter java.lang.InterruptedException, sondern stattdessen zu einer java.lang.reflect.UndeclaredThrowableException, da die Methoden der fernen Instanzen in aller Regel keine InterruptedException deklariert hatten.
- Der Aufruf einer fernen Instanz durch ein Roblet® führte zu einer java.lang.NullPointerException für den Fall, daß auf der lokalen Seite der Anwendung keine fernen Instanzen (mehr) angeboten wurden.
- Der Mechanismus zum Laden von Klassen auf Serverseite wurde erweitert, um auch Felder korrekt behandeln zu können.
Für Version 1.2
- Das Java™-Archiv org.roblet.jar ist nun von allen anderen Archiven abhängig. Daher braucht bei Kompilation und Ausführung nur noch dieses eine angegeben werden. Sämtliche Dokumentation wurde entsprechend vereinfacht. Da im Laufe der Zeit alle anderen Archive nach und nach entfallen werden, ist ein schrittweiser Umstieg sinnvoll.
- Der Server, das (Server-)Werkzeug, der Verzeichnisdienst und der Browser können nun über org.roblet.jar gestartet werden. Start-Scripte und Start-Batches (server.sh, directory.sh und browser.sh bzw. server.bat, directory.bat und browser.bat) wurden entsprechend angepaßt.
- Das Werkzeug zum Vertreter wurde entfernt, da die Funktionalität nicht mehr benötigt wird.
- Der Vertreter stellt keine Einheiten mehr bereit. Damit ist auch genRob.genGate.unit.Version entfallen.
- Der Server nimmt ab dieser Version als Standard-Port-Nummer 2001 an. Er gibt nun keine Fehlermeldung mehr aus, wenn für ihn keine Port-Nummer angegeben wurde.
- Ab dieser Version sind die Sicherheitsmerkmale des Server standardmäßig aktivert. In absehbarer Zeit wird dann eine Abschaltung nicht mehr möglich sein.
- Anwendungen brauchen bei Servern, die am Standard-Port 2001 laufen, im Servernamen keine Port-Nummer mehr anzugeben. Im wesentlichen wurde dazu genRob.genControl.client.Client.getServer(String) angepaßt. Entsprechend wurde auch das Server-Werkzeug überarbeitet.
- Server und Klient verstehen zusätzlich eine Version des Roblet®-Protokolls (Version 4). Dieses Protokoll wird nur zur Verfügung gestellt, wenn die Sicherheitsmerkmale aktiviert sind. Damit nutzt die Implementierung dann auch keine RMI-Klassen mehr. Zu beachten ist, daß dann RMI-Server vor einem Transport auch nicht mehr in RMI-Stubs gewandelt werden.
Für Version 1.1
- org.roblet.Version und org.roblet.client.Version werden nicht mehr unterstützt. Sie wurden verändert bzw. sind entfallen und werden nicht mehr dokumentiert.
- Sämtliche Java™-Archive inkl. aller Programme geben nun als Versionshinweis das RDK aus
- org.roblet.math.Robiant wird nicht mehr unterstützt. Die Klasse steht nun zukünftig als Hilfsklasse genRob.genMap.unit.Robiant der genRob®-genMap-Einheiten zur Verfügung.
- Die bisherige Dokumentation der Roblet®-Bibliothek und der Klienten-Bibliothek wurde vollständig in die RDK-Dokumentation integriert. Die bisherige API-Dokumentation ist jetzt Teil der API-Dokumentation für Anwendungen.
- genControl.bat und genControl.sh wurden in server.bat bzw. server.sh umbenannt
- Die bisherige Dokumentation des Roblet®-Servers genRob®-genControl wurde vollständig in die RDK-Dokumentation integriert. Die bisherige API-Dokumentation ist jetzt Teil der API-Dokumentation für Module.
- genMediator.bat und genMediator.sh wurden in directory.bat bzw. directory.sh umbenannt
- Die bisherige Dokumentation des Verzeichnisdienstes genRob®-genMediator wurde vollständig in die RDK-Dokumentation integriert.
- genGate.bat und genGate.sh wurden in proxy.bat bzw. proxy.sh umbenannt
- Die bisherige Dokumentation des Vertreterdienstes genRob®-genGate wurde vollständig in die RDK-Dokumentation integriert. Die bisherige API-Dokumentation ist jetzt Teil der API-Dokumentation für Vertreter.
- Die Einheiten genRob.genControl.unit.Version und genRob.genGate.unit.Version wurden als deprecated gekennzeichnet und werden bei der nächsten Änderung am Server entfallen.
- Die Einheit genRob.genControl.unit.Streams wurde als deprecated gekennzeichnet und wird bei der nächsten Änderung am Server entfallen. Ersatz sind dann wie schon jetzt die fernen Instanzen (vgl. genRob.genControl.unit.Proxies und genRob.genControl.unit.Remotes).
Für Version 1.0
- Initiale Version
- Roblet®-Bibliothek 2.3 hinzugefügt
- Klienten-Bibliothek 2.4 hinzugefügt
- Roblet®-Server genRob®-genControl 6.3 hinzugefügt
- Verzeichnisdienst genRob®-genMediator 1.4 hinzugefügt
- Stellvertreterdienst genRob®-genGate 1.3 hinzugefügt
- Dateien der Subpakete, die nicht die Dokumentation betreffen, wurden ins Hauptverzeichnis verlegt.
- run.* von genControl und genGate wurden in genControl.* und genGate.* umbenannt