Xtend ist eine statisch typisierte Programmiersprache aus dem Eclipse-Umfeld (Xtext-Projekt), die zu lesbarem Java-Quellcode kompiliert. Sie begann als „Xtend2“ und wurde mit Eclipse Juno (Juni 2012) ein eigenständiges Projekt. Xtend erweitert Java um moderne Sprachfeatures, ohne die JVM-Kompatibilität zu verlieren.

Kompilierung

  • Quelldateien: .xtend, eine Klasse pro Datei
  • Der Compiler erzeugt Java-Quellcode im Ordner xtend-gen, der dann normal von javac weiterverarbeitet wird
  • Eclipse: Xtend-Plugin (Eclipse Update Site, Editor + Compiler integriert)
  • Maven: xtend-maven-plugin mit Goal xtend:compile (bzw. xtend:testCompile)
  • Gradle: Plugin org.xtext.xtend, Abhängigkeit org.eclipse.xtend:org.eclipse.xtend.lib

Syntax-Highlights

class Hallo {
  def String gruesse(String name) {
    val text = "Hallo " + name
    return text
  }
}
  • def – Methoden-Definition (kompiliert zu Java-Methoden)
  • val – unveränderliche Variable, var – veränderliche Variable; Typinferenz inklusive
  • Lambdas: list.map[ it.length ] mit implizitem it
  • Extension Methods: "hallo".toFirstUpper erweitert geschlossene Typen ohne Vererbung
  • Active Annotations: Annotationen nehmen zur Übersetzungszeit am Kompilierungsprozess teil (Boilerplate-Erzeugung, z. B. für Visitor- oder Observer-Muster)
  • Template-Expressions: mehrzeilige Strings mit «ausdruck»-Interpolation

Praxis-Tipps

  • Da Xtend nach Java übersetzt wird, bleiben Debugging (mit Debug-Informationen) und Bibliotheksnutzung unkompliziert
  • Kein separater Standalone-Compiler: Aufbau über IDE, Maven oder Gradle

Verwandte JVM-Sprachen: Java-Befehle, Kotlin-Befehle, Groovy-Befehle, Scala-Befehle. Weitere JVM-Nachbarn: Gosu-Befehle und X10-Befehle.