Runtime-Object-Visualization
Adrian Anthamatten, Jeyanthan Ravindran · HSR (HSR University of Applied Sciences Rapperswil) · 2015
Ausgangslage: Ziel dieser Arbeit ist das Auslesen von Java-Objektinformationen (z.B. Änderung der Attribute, Initialisierung von Instanzen) einer bestehender Applikation (z.B. .jar-File) zur Laufzeit. Für den Object-Graph-Visualizer (OGV) soll ein Interface implementiert werden, damit dieser später um die Fähigkeit erweitert werden kann, diese Daten darzustellen. Die Verbindung zu diesem Interface soll technologieunabhängig sein, damit die Objektinformationen von verschiedenen Programmiersprachen (neben Java z.B. auch von C#, C++, etc.) im OGV dargestellt werden können. Vorgehen: In der Evaluation wurden Technologien für das Auslesen von Java-Objektinformationen miteinander verglichen. Bei der Gegenüberstellung dieser Technologien konnte der Java Debug Interface (JDI) die gestellten Anforderungen am besten erfüllen. Für die technologieunabhängige Kommunikation wird JSON-RPC über Socket-Verbindungen verwendet, weil dieses einen sehr simplen Aufbau hat und von vielen Plattformen unterstützt wird. Um die spätere Einbindung des Tools in OGV zu realisieren, wurde zusammen mit dem Auftraggeber ein Interface definiert. Ergebnis: Entstanden ist ein Runtime-Object-Observer (ROO), welcher eine Java-Applikation (z.B. .jar-File) startet und zur Laufzeit Objektinformationen mittels JDI ausliest. Die ausgelesen Informationen werden mit JSON-RPC einem Serverstub übermittelt. Die RPC-Calls werden anschliessend an ein Interface weitergegeben, dessen Implementierung vom Auftraggeber gemacht wird. Weiter wurde ein Proof of Concept eines ROO in C# entwickelt, um zu demonstrieren, dass das Konzept auf anderen Sprachen/Technologien erweiterbar ist.