RCP-Entwicklung um XML-basierte Sprache erweitert

Rich Client Markup Language (RCML)

Stephan Wilczek

Mithilfe des Projektes Rich Client Markup Language (RCML) lassen sich domänenspezifische Konzepte und Elemente auf Basis der Eclipse Rich Client Platform (RCP) erstellen. Die Elemente und ihr Verhalten können anschließend mit einer Kombination aus XML und einer Script-Sprache konfiguriert bzw. programmiert werden.

Objektorientierte Frameworks sind eine effektive und weit verbreitete Technologie für die Wiederverwendung von Software. Die Nutzung komplexer Frameworks stellt den Entwickler vor einige Herausforderungen: Er muss lernen, von welchen Klassen er Unterklassen bilden kann, welche Interfaces implementiert und welche Methoden überschrieben werden müssen. Die Entwicklung von Rich-Client-Anwendungen auf Basis von Eclipse RCP setzt die Kenntnis eines konzeptionell sehr guten aber durchaus komplexen Frameworks voraus. Der Einstieg in die RCP-Entwicklung wie auch die erfolgreiche Nutzung fortgeschrittener RCP-Konzepte fordern daher eine signifikante Einarbeitungszeit und oft die Kenntnis eines großen Teils des Frameworks.

RCP als „general purpose platform“

Es gibt jedoch eine Vielzahl von Problemstellungen, bei der Entwickler nicht die volle Komplexität des Frameworks benötigen. Sei es, weil die Aufgabenstellung nur bestimmte Konzepte erfordern oder weil sich das Entwicklungsteam auf die Verwendung einer definierten Teilmenge geeinigt hat. Beides lässt sich durch Entwicklung und Nutzung eines weiteren Frameworks erreichen, das auf dem vorhandenen RCP-Framework aufsetzt. Betrachtet man Java als „general purpose language“ für nahezu jede Art von Problem, haben sich daneben domänenspezifische Sprachen herausgebildet, die für bestimmte Aufgabenstellungen maßgeschneidert wurden und es dem Programmierer erlauben, mit wenigen Zeilen Code eine beschränkte Anzahl domänenrelevanter Funktionen bzw. Werkzeuge zu nutzen. Im Vergleich damit stellt RCP eine „general purpose platform“ für jede Art von Rich Client dar.

Frameworks vs. Mini-Languages

Die Spezialisierung für eine bestimmte Domäne bzw. Aufgabenstellung kann durch ein Java-basiertes Framework, wie oben beschrieben, erfolgen. Hier werden die RCP-Konzepte auf Java-Ebene in neuen, vermeintlich einfacheren Konzepten gekapselt und wiederum als Framework zur Verfügung gestellt. Für viele domänenspezifische Aufgabenstellungen kann es aber völlig ausreichen, auf relativ hoher Ebene beispielsweise Perspectives, Views, Editors usw. und spezifische Komponenten (bspw. eine Datenzugriffskomponente oder eine Auswertungskomponente) mithilfe einer deklarativen Sprache konfigurieren und scripten zu können (Stichwort „Mini-Languages“). Ähnliche Konzepte haben sich in der Vergangenheit als sehr erfolgreich erwiesen. Die Verbreitung von Lotus Notes ist unter anderem darauf zurückzuführen, dass mithilfe eines Editors und einer Script-Sprache Elemente wie Agenten, Felder, Dokumente, Masken und Ansichten als Bausteine für dokumentenorientierte Rich-Client-Anwendungen sehr effizient konfiguriert und mit Scripts hinterlegt werden konnten.

RCML als Kombination aus XML und JavaScript

RCML greift diese Idee auf und erlaubt die Definition eigener Elemente und Komponenten auf Basis von RCP, die anschließend mithilfe einer Kombination aus XML und JavaScript konfiguriert bzw. programmiert werden können. Erwähnenswert ist an dieser Stelle, dass Macromedias MXML, OpenLaszlo oder Microsofts XAML für Aufgabenstellungen im Bereich der Rich-Client-Entwicklung einen technologisch ähnlichen Weg einschlagen. RCML erlaubt darüber hinaus die Entwicklung eigener, domänenspezifischer XML-Sprachen, die verschiedene Basiselemente für eine Anwendungsdomäne (etwa Banken, Versicherungen, Gesundheitswesen) unterstützen können. So hat zum Beispiel ein Architekturteam die Möglichkeit, eigene Sprachelemente für bestimmte Aspekte zu entwerfen und dem Team diese zur Nutzung bereitzustellen.

Eigenschaften von RCML
  • Ergänzung zum RCP-Framework: RCML versteht sich nicht als JavaScript für RCP-Anwendungen. Das RCP-Framework wird hier um einen deklarativen Ansatz ergänzt, der für bestimmte Problemstellungen einen effizienteren Ansatz als die Java-Programmierung bietet.
  • Vollständige RCP Integration: RCML kann in jedes RCP-Projekt integriert werden. Teile der Anwendung können auf dem traditionellem Weg entwickelt, andere Teile parallel mithilfe der XML-basierten Sprache programmiert werden. Sowohl aus Java als auch aus JavaScript heraus lassen sich Elemente der jeweils anderen Umgebung ansprechen.
  • Erweiterbarkeit: RCML ist beliebig erweiterbar und erlaubt die Definition eigener Komponenten und Elemente, die, ähnlich wie eine Tag-Library, im darauf aufsetzenden XML-Code Verwendung finden können.
  • Spezialisierung auf eine Domäne: Neben der Erweiterung durch Elemente und Komponenten erlaubt RCML deren Bündelung zu einer spezifischen Sprache. So können für eine spezielle Domäne bzw. ein spezielles Projekt eigene XML-basierte Sprachen mit entsprechenden Elementen definiert werden.
Status von RCML

RCML befindet sich in einer frühen Entwicklungsphase. Auf der Projektseite stehen Download-Beispiele zur Verfügung, die zeigen, wie die aus dem Eclipse-Wizard generierte RCP-Mail-Anwendung mit RCML geschrieben werden kann und wie eine Datenzugriffskomponente mit RCML konfiguriert und eingesetzt wird [Zwei RCML-Beispiele]. Gerade das erste Beispiel ist eng an die Konzepte von RCP gebunden, was keine zwingende Voraussetzung für den Einsatz von RCML ist. Das Projektteam plant Anfang 2007 mit einer ersten Version von RCML und entsprechendem Tooling für die XML-basierte Sprache. Das Team ist insbesondere an Praxisprojekten interessiert, die sich vorstellen können, den hier dargestellten Ansatz in einem Teilprojekt zu realisieren.

Geschrieben von
Stephan Wilczek
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.