Codegenerierung für jeden Anwendungsfall mit Xtext 2.3

Die Effizienzmaschine

Jens Geyer

Einer der wesentlichsten Zeitfresser in größeren Softwareprojekten ist die Erstellung der Datenstrukturen sowie vergleichsweise einfache, aber mehr oder weniger aufwändig zu kodierende Standardoperationen. Gerade solcher Code kann aber prima generiert werden. Stellt die verwendete Entwicklungsumgebung für das konkrete Problem keine geeigneten Werkzeuge bereit, kann man sich diese dank Xtext auch recht schnell selbst schreiben, was mit der aktuellen Version noch einfacher geworden ist.

Erfahrungsgemäß setzt sich der Code jedes größeren Softwareprojekts aus zwei Arten von Code zusammen. Einerseits sind da spezifische Algorithmen, die die Kernfunktionalität des Produkts beinhalten. Sie sind typischerweise recht speziell und bestehen nicht selten aus in aufwändiger Arbeit hochoptimiertem Code. Der Rest des Projekts hingegen ist mehr oder weniger Standardcode; oder zumindest Code, der häufig wiederkehrende Dinge erledigt und daher idealerweise gut standardisiert und durch wiederverwendbare binäre oder Quellcodekomponenten abgedeckt ist.

Moderne IDEs stellen für die Anwendungsfälle aus dieser zweiten Gruppe von Haus aus vielerlei Handreichungen, Tools und Assistenten bereit, mit deren Hilfe ein Teil des Quellcodes generiert wird. Einige praktische und täglich benutzte Beispiele hierfür sind die UI-Gestaltung mit grafischen Tools wie Formulareditoren, die dann Ressourcendateien, XAML und Quellcode produzieren. Ein anderes typisches Beispiel sind Codegeneratoren, die Modul-Kontrakte in Form von Typbibliotheken, WSDL oder ähnlichen Metadaten importieren und dem Entwickler in Form von generiertem Quellcode zur gefälligen Verwendung bereitstellen.

Trotz des wirklich beeindruckenden Leistungsumfanges moderner IDEs ist es gelegentlich wünschenswert, derartige Tools auch für eigene, spezielle Anwendungsfälle einzusetzen, die von der IDE entweder gar nicht oder nur mit in den hochpreisigeren Editionen verfügbaren Mitteln, wie etwa UML-Modellierung, unterstützt werden. Gar nicht so selten erweist sich die Bedienung dieser teuren Tools für den Gelegenheitsnutzer als recht umständlich, oder die produzierten Artefakte entsprechen aus dem einen oder anderen Grunde nicht so ganz den hauseigenen Coding-Standards. An dieser Stelle glänzen Tools wie Xtext, mit denen sich mit vergleichsweise überschaubarem Aufwand auch als absoluter Neuling bereits nach kurzer Einarbeitungszeit beeindruckende Ergebnisse produzieren lassen.

Xtext ist ein Werkzeug, mit dem sich vergleichsweise effizient eigene domänenspezifische Sprachen (DSL) entwickeln und nutzen lassen. Das Xtext-System, zu dem auch Xtend, Xpand und einige weitere Komponenten gehören, wurde ursprünglich als openArchitectureWare entwickelt und ist seit Eclipse Galileo ein Bestandteil des Eclipse-Modeling-Projekts. Primär wird Xtext als „ein anderer Weg, Java-Applikationen zu schreiben“, positioniert; tatsächlich lassen sich aber mit Xtext praktisch alle textbasierten Ausgabeformate erzeugen, was es als Alternative zu Microsofts T4 für alle Entwickler interessant macht.

Um in den Genuss der aktuellen Version zu kommen, laden Sie zunächst das in [1] unter „Download Eclipse and Install Xtext“ benannte Paket herunter und entpacken es in ein Verzeichnis Ihrer Wahl. Da Eclipse auf Java basiert, sollte außerdem eine aktuelle Java Runtime installiert sein. Sind diese Vorbereitungen abgeschlossen, lässt sich die Eclipse-Umgebung normalerweise ohne weitere Installations- oder Konfigurationsarbeiten problemlos starten. Folgen Sie nun den in besagtem Blogposting beschriebenen Schritten zur Installation des Xtext SDK. Dieser Vorgang, der je nach Internetanbindung durchaus einige Minuten dauern kann, schließt die Einrichtung von Xtext auf dem System ab. Während die Installation läuft, sollten Sie vielleicht die Gelegenheit nutzen und gleich ein wenig weiter in Sven Efftinges Blog stöbern, in dem viele gute Beispiele und Use Cases zu finden sind.

Geschrieben von
Jens Geyer
Kommentare

Schreibe einen Kommentar

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