Eclipse Modeling Day der JAX 2012

Eclipse Modeling an der Schwelle zum Java Mainstream

Hartmut Schlosser

Wer an Eclipse Modeling denkt, kommt am großen X nicht vorbei: Das Technologie-Quartett Xcore, Xbase, Xtext und Xtend bildete denn auch den roten Faden durch das Programm des Eclipse Modeling Day der JAX 2012, der in diesem Jahr wieder vom bewährten Moderatoren-Team Ed Merks, Sven Efftinge und Eike Stepper geleitet wurde. Thematisch wurde der Modellierungsworkshop durch das Modell-Repository und Runtime Persistence Framework CDO ergänzt, mit dem sich Modelle auch in Echtzeit-Projekten nutzen lassen.

Ed Merks führte das Projekt Xcore vor, eine erweiterte Syntax für die Modeling-Kernsprache Ecore, die in Kombination mit der Expression Language Xbase vollständige Programmiersprachen darstellen kann. Die Teilnehmer erfuhren, wie sich mittels Xcore in kürzester Zeit Modelle definieren, eine Datenschicht generieren, ein geteiltes Repository aufsetzen und ein Kollaborationsinterface einrichten lässt – und das deutet schon an, wo die Stärken der Softwaremodellierung liegen: in der Geschwindigkeit, mit der man komplette Enterprise-Anwendungen einrichten kann.

Doch der Geschwindigkeitsaspekt ist nur die eine Seite der Medaille. Eike Stepper, Leiter des Modell-Repositorys CDO, sieht die Vorteile der Softwaremodellierung auch darin, dass das Geschäftswissen einer bestimmten Domäne auf einem hohen Niveau und dadurch für eine längere Zeit konserviert werden kann, als dies mit Low-Level-Technologien wie Java oder EJB getan werden könnte. Zudem seien langfristig handfeste Kosteneinsparungen zu erzielen, da man durch Modeling die Codebasis drastisch reduziert und so schlicht weniger Code übrigbleibt, den man ja üblicherweise über lange Zeiträume warten muss.

Auf dem Modeling Day kam das CDO Model Repository nicht nur zur Entwicklungszeit zum Einsatz. Gerade mit CDO können die Modelle auch zur Laufzeit verwendet werden. Die Teilnehmer erfuhren, wie sich Applikationen auf einfachen Knopfdruck hin um Features wie Datenbank-Anbindung, automatisches Laden und Entladen einzelner Objekte, Änderungsnotifizierung im Netzwerk, Transaktionalität und Multi Thread Separation erweitern lassen.

Der Nachmittag gehörte Sven Efftinge und Sebastian Zarnekow, die sich dem DSL-Framework Xtext annahmen. Eingefleischten Eclipse-Usern muss man Xtext nicht weiter erklären – wie Sven berichtete, entschuldigen sich Sprachdesigner auf der EclipseCon sogar dafür, wenn sie das Tooling für ihre Sprache nicht mit Xtext erzeugen. Einer breiteren Java-Community muss man Xtext aber eventuell nochmals vorstellen:

Sven Efftinge: „Xtext ist ein Framework, mit dem ich mir sehr einfach domänen-spezifische Sprachen (DSL) bauen kann. Das Besondere an Xtext ist der hohe Abstraktionsgrad: Ich muss lediglich durch ein paar Regeln beschreiben, wie die Syntax meiner Sprache aussieht. Als Ergebnis bekomme ich ein fertiges Eclipse Plug-in mit speziellem Editor. Dabei eignet sich Xtext für kleine DSLs, die man in wenigen Minuten entwickelt, genauso wie für ausgewachsene Sprachen. Beispiele hierfür sind Googles protocol buffers [1] oder Sigasis IDE für VHDL, eine Sprache zum Design von Hardware [2].“

Ganz neu positioniert sich das Xtext-Team mit einer Sprache, die auch außerhalb der Modeling-Szene Furore machen könnte: Xtend. Das Besondere an Xtend liegt laut Efftinge darin, dass es versucht, die Vorzüge von Sprachen wie Groovy, Scala, Python und Smalltalk, aber auch Java, zu vereinen – und dabei direkt in lesbaren Java-Quelltext übersetzt.

Sven Efftinge: „Die Sprache ist statisch getypt und zwar mit dem Java-Typsystem, was bedeutet, dass es keinerlei konzeptionellen Lücken bei der Interoperablität gibt. Tatsächlich haben wir die Konzepte sogar so entworfen, dass existierende Java APIs mit Xtend wesentlich eleganter benutzt werden können. Tom Schindl hat beispielsweise in seinem Blog vor Kurzem beschrieben, wie er Xtend für die Entwicklung von JavaFX-Applikationen einsetzt [3], [4]. Die Sprache wird auch gerne zur Entwicklung von Android- oder GWT-Applikation verwendet. Xtend erlaubt es, sehr ausdruckstarken Code zu schreiben, ohne dabei die Java-Welt zu verlassen.

Wir haben auch von Anfang an besonderes Augenmerk auf die Werkzeugunterstützung gelegt, weil dieser Aspekt ein essentieller Bestandteil der User-Experience einer Sprache ist. Obwohl die Sprache noch sehr jung ist, kommt die Unterstützung innerhalb von Eclipse schon heute sehr nah an das heran, was wir von Java gewohnt sind.“

Spannende Neuerungen stehen in Xtext sowie Xtend im kommenden Juno-Release an:

Sven Efftinge: „Die nächste Version von Xtend enthält neben neuen interessante Sprachfeatures vor allem eine nahtlose Integration mit den Java Development Tools (JDT) von Eclipse. Debugging, Typ- und Aufrufhierarchien, Rename-Refactoring usw. funktionieren zwischen Xtend- und Java-Quelltext transparent und werden über die gleichen Tastaturkürzel ausgelöst.

Das Juno Release von Xtext kommt mit zahllosen Bugfixes und Performance-Verbesserungen. Weiterhin ist die Unterstützung für DSLs, die auf die JVM übersetzt werden, noch besser geworden. Man kann nun in ca. 20 Minuten eine Sprache entwickeln, die volle Unterstützung für Ausdrücke und das Java-Typsystem hat. Die meisten Funktionen, die in Xtend zur Verfügung stehen, haben wir tatsächlich innerhalb des Xtext-Frameworks implementiert, so dass sie für alle JVM-basierten Sprachen automatisch zur Verfügung stehen. Beispielsweise wird das Debugging von DSLs nun automatisch unterstützt.“

Weitere Infos zu Xtext und Xtend verraten Sven Efftinge und Sebastian Zarnekow in folgendem Interview von der JAX:

Fazit

Eclipse bildet mit seiner lebendigen Community das Gravitationszentrum um die moderne Software-Modellierung. Hier werden neue Wege beschritten, die nichts mit der Schwerfälligkeit des alten MDA-Konzepts oder der Komplexität aufgeblähter Standards wie UML zu tun haben. Modeling dient bei Eclipse stets der Lösung Praxis-relevanter Probleme – und steht mit Technologien wie Xtext, Xcore und CDO an der Schwelle, den engen Bereich der Eclipse-Insider zu verlassen und sich in den Java Mainstream zu begeben: zweifellos eine innovative Bereicherung, die der gesamten Java Community gut stünde.

Geschrieben von
Hartmut Schlosser
Kommentare

Schreibe einen Kommentar

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