Das MOBILE-System ist hauptsächlich in Java
implementiert, deshalb soll diese Programmiersprache an dieser Stelle kurz
erläutert werden. Java ist eine plattformunabhängige,
klassenbasierte, objektorientierte Programmiersprache. Wesentliche
Eigenschaften von Java sind:
* Klassen können von genau einer Klasse erben, jedoch nicht von mehreren.
Als Ersatz für Mehrfacherbung gibt es die Möglichkeit, sogenannte
interfaces zu implementieren.
* Methoden können überladen werden.
* Java wird durch einen Java-Compiler (javac) in einen
plattformunabhängigen Zwischencode (Bytecode) übersetzt, der
von einer sogenannten virtual machine (VM) zur Laufzeit
interpretiert wird. Dieses Konzept wird ergänzt durch Just In Time
Compiler (JIT-Compiler), die den Bytecode unmittelbar vor seiner
Ausführung in plattformabhängigen, sogenannten native Code
übersetzen. Bei wiederholter Ausführung desselben Codestücks
kann so ein erheblicher Performanzgewinn erzielt werden.
* Die Sprache wird durch umfangreiche Klassen-Bibliotheken (packages)
ergänzt. Die VM, die Bibliotheken und einige Werkzeuge bilden
zusammen das sogenenannte Java-Development-Kit (JDK). Das JDK
macht seit seiner Entstehung eine immer noch rasche Entwicklung durch. Java ist
in Bezug auf seine Eigenschaften stark von der jeweils zur Verfügung
stehenden JDK-Version abhängig.
* Teil der Sprache ist die Dokumentation mittels besonderer Kommentare, die vom
Werkzeug javadoc ausgewertet und in Hypertext Markup Language
(HTML ) übersetzt werden, so daß sie mit einem WWW-Browser gesichtet
werden können.[11]
* im Sprachumfang enthalten und durch die VM unterstützt ist das
Ausführen nebenläufiger Prozesse (Multithreading).
Die Spezifikation der Sprache Java findet sich in[GJS96]. Umfangreiche
Dokumentation zu Java und der JDK ist unter[Sun98] zu finden. Eine
deutschsprachige Einführung in Java bietet[MSS96]. Daneben gibt es
zahlreiche WWW-Seiten mit Einführungen, darunter das von Sun
herausgegebene Tutorial, welches über[Sun98] zugänglich ist.
Auf der Sun wird die JDK 1.1.4, auf dem Macintosh die zur JDK 1.1.3 kompatible
Macintosh Runtime For Java verwendet.
Atomare Bausteine werden als Java-Klassen implementiert. Die
Implementationsspezifikation dazu befindet sich in[Müg97].
Wesentliche Elemente der Spezifikation sind:
1. Bausteine können über Ports mit anderen Bausteinen kommunizieren.
Dazu wird zur Experimentinstantiierungszeit ein Ausgabeport des produzierenden
Bausteins an einen Eingabeport eines diese Daten konsumierenden Ports
geknüpft. Die Ports sind Zugänge zu Datenpuffern, über die die
Kommunikation zur Experimentlaufzeit asynchron ablaufen kann.
2. Zur Instantiierungszeit werden die Parameter eines Bausteins bestimmt.
3. Über die Ports können MSL-Daten-Objekte ausgetauscht werden.
MSL-Daten-Objekte sind instantiierte MSL-Daten-Typen. MSL-Daten-Typen sind von
der Klasse Mobile.MSL.MSLData abgeleitet.
Es sind einfache Daten-Typen verfügbar wie RealNumber, Text und Boolean
oder komplexe Daten-Typen wie Matrizen, Tabellen und Zeitreihen.
4. Parameter sind ebenfalls MSL-Daten-Objekte.
5. Bausteine kapseln ihre Funktionalität, so daß für andere
Bausteine nur Ein- bzw. Ausgabeports sichtbar sind.
Im Inneren der Bausteine können zum Beispiel Simulationsmodelle
oder Auswertungmethoden - zu denen auch Visualisierungsmethoden
zählen - ablaufen. Diese sind Objekte der Klassen Simulator bzw.
Evaluator. Auch die Vorgänge des Erzeugens bzw. Bereitstellens
sowie des Aufzeichnens von Daten werden in einem Baustein gekapselt. Dies sind
Objekte der Klassen Generator bzw. Recorder.
In der Programmiersprache C oder C++ implementierte Simulationsmodelle
können über das Java Native Interface (vgl.[Ste97]) in einem
Baustein gekapselt werden. In weiteren Programmiersprachen geschriebene Modelle
können angebunden werden, sofern wie es für diese eine
Programmierschnittstelle zu C gibt.
6. Bausteine werden nebenläufig ausgeführt.
7. Die serialisierte Ausführungsreihenfolge von Bausteinen ist nicht
festgelegt, insbesondere, da sie in unterschiedlichen Experimenten Verwendung
finden können.
8. Bausteine werden in der Objektbank (ObjectBase) gespeichert.
In ihr werden neben den Bausteinen auch die MSL-Daten-Objekte gespeichert.
[11] Die für das Mobile-System automatisch erstellte Dokumentation ist unter[Müg97] und[Hup98a] verfügbar.