Xtend – a modernized Java

13. September 2012Christian Hülsmeier

Xtend ist eine statisch-typisierte Programmiersprache für die Java Virtual Machine, die unter der Flagge der Eclipse Foundation entwickelt wird. Sie ist stark an Java angelehnt und kompiliert auch direkt nach Java, anstatt nach Bytecode wie etwa andere Sprachen (Groovy, Scala oder Kotlin). Dieser Aspekt stellt eine hundertprozentige Kompatibilität mit Java sicher. In Xtend implementierte Klassen können damit auch ohne Probleme in Java-Anwendungen verwendet werden – dies impliziert insbesondere auch die Programmierung von Anwendungen mit Android oder dem Google Web Toolkit (GWT).

Die Frage, die sich bei dieser Ausgangssituation stellt: Wenn Xtend komplett nach Java kompiliert bzw. transformiert, wieso brauche ich diese neue Sprache dann? Kann ich meine Anforderungen dann nicht gleich in Java umsetzen?

Im Prinzip ist diese Überlegung richtig, allerdings berücksichtigt sie nicht, dass Xtend eine deutlich kompaktere Syntax hat und zusätzlich Features bereitstellt, die Java von Haus aus nicht beinhaltet bzw. die in Java nur aufwändig abgebildet werden können. So stellt Xtend Funktionalitäten wie Typinferenz, Extension-Methoden (daher der Name der Sprache) oder Lambda-Ausdrücke zur Verfügung. Letztere ermöglichen eine funktionale Programmierung in der vor allem objektorientierten Sprache.

Gerade die Einführung von Lambda-Ausdrücken in Java 8 wird von vielen Entwicklern mit Vorfreude erwartet. Aktuell werden Lambda-Ausdrücke bzw. -Funktionen über anonyme Klassen implementiert, die dann als Parameter an Methoden übergeben werden. Ab Java 8 wird es hierfür eine wesentlich knappere Notation geben.

Lambda-Ausdrücke stehen also mit Java 8 zur Verfügung. Wieso werden sie dann in Xtend „neu erfunden“?

Dieser Einwand ist mitunter berechtigt. Allerdings muss hierbei betrachtet werden, dass die finale Version von Java 8 für September 2013 angekündigt ist. Dies würde eine Wartezeit von einem Jahr bedeuten. Stattdessen kann die Funktionalität schon jetzt genutzt werden, zumal zu vermuten ist, dass seitens des Xtend-Projekts eine entsprechende Kompatibilität zu Java 8 sichergestellt werden wird.

Extension-Methoden sind ein weiteres markantes Feature von Xtend, das beispielsweise auch in C# zu finden ist. Mit Extension-Methoden lassen sich Methoden auf vorhandenen Typen „hinzufügen“, ohne dass von dem Typ abgeleitet oder dieser auf andere Weise bearbeitet werden muss. Extension-Methoden sind wie statische Methoden zu implementieren, bei denen der erste Parameter angibt, auf welchem Typ die Methode aufgerufen werden kann. So ist vorstellbar, dass fachliche Klassen zusätzliche Methoden zum Speichern ihres Zustands in der Datenbank erhalten.

Neben der Tatsache, dass Xtend einige sinnvolle Spracherweiterungen für Java liefert und den Quelltext deutlich verkürzt, werden seitens des Xtend-Projekts Eclipse-Erweiterungen bereitgestellt, die vor allem mittels des Eclipse-Projekts Xtext erstellt wurden. Die Erweiterungen integrieren sich nahtlos in die Eclipse Java Development Tools (JDT). Beim Implementieren in Xtend ist die Bedienung der Entwicklungsumgebung genauso wie in Java.

Insgesamt betrachtet, stellt Xtend eine sinnvolle Java-Alternative/-Erweiterung dar. Quelltext wird verkürzt und an vielen Stellen deutlich vereinfacht. Die Java-nahe Syntax und die komfortable Integration in die Entwicklungsumgebung Eclipse führen dazu, dass die Lernkurve für Java-Entwickler recht flach ist. Die ausführliche Dokumentation auf der Projektseite (http://www.xtend-lang.org/) sowie die mit den Eclipse-Erweiterungen bereitgestellten Beispiele erleichtern zusätzlich den Einstieg.

Die hundertprozentige Interoperabilität mit Java lässt auch eine sukzessive Integration in bestehende Java-Projekte zu. Eine bestehende Anwendungslogik muss nicht zwangsläufig migriert werden, sodass die Risiken beim Einsatz von Xtend ähnlich überschaubar sind wie bei der Integration neuer Frameworks in das Projekt. Bei adesso wird Xtend erfolgreich in Lebensversicherungsprojekten eingesetzt, die zusammen mit der adesso-Tochtergesellschaft PSLife GmbH durchgeführt werden.

Haben Sie auch schon mit Xtend gearbeitet? Ihre Erfahrungen würden mich interessieren. Stellen Sie gern auch Fragen zu dieser Sprache. Ich freue mich auf Ihre Kommentare.

Tags: ,
Christian Hülsmeier Christian Hülsmeier ist Software-Architekt bei adesso. Seine Tätigkeitsschwerpunkte liegen im Bereich der modellgetriebenen Software-Entwicklung (u.a. mit Xtend) und der Entwicklung von Anwendungen mit Apache Wicket. Zu beiden Themen hält er unter anderem Schulungen im Rahmen des adesso-eigenen Schulungsprogramms.
Artikel bewerten:
1 Star2 Stars3 Stars4 Stars5 Stars
Loading...

Kommentar hinzufügen:

Ihr Kommentar: