Einfach zauberhaft

Eclipse Xtext 2.14: Die neue Version auf einen Blick

Karsten Thoms

© Shutterstock.com / fotogestoeber

Das Xtext-Team hat vor Kurzem Version 2.14 des bekannten Language Engineering Frameworks veröffentlicht. Diese Version wird auch Teil des für den 27. Juni geplanten Releases von Eclipse Photon sein. Während in den vorhergehenden Versionen der Fokus mehr auf Stabilisierung, Performance und weiteren, für Anwender weniger sichtbaren internen Verbesserungen lag, kommt die neue Version nun wieder mit einer Fülle neuer Features daher.

Bereit für Java 9 & Java 10

Seit dem letzten Release hat sich viel in der Java- und Eclipse-Welt getan. In Bezug auf das Xtext Release galt es allem voran, die aktuellen Java-Versionen 9 und 10 zu unterstützen. Dabei hing die Entwicklung von einer Reihe weiterer Projekte ab, die ebenfalls erst die neuen Sprachstandards unterstützen mussten – insbesondere die JDT, Gradle, Maven und Eclipse Tycho. In Kooperation mit den Eclipse-Projektteams von JDT und Tycho konnten manche Patches getestet oder gar geliefert werden.

Um Xtext-basierte Projekte auf die neue Version zu upgraden, empfiehlt das Team, den New Project-Wizard zu nutzen, um ein Projekt mit ähnlicher Konfiguration hinsichtlich Zielplattform und Build-System anzulegen und die erzeugten Projekte mit den eigenen abzugleichen. Insbesondere in den Build-Deskriptoren und Manifest-Dateien ergeben sich Änderungen. Daneben sollten jedoch keine Anpassungen am eigenen Code vorgenommen werden müssen. Wie immer wird auf Rückwärtskompatibilität großen Wert gelegt.

Xtext und JUnit 5

Mit der Verfügbarkeit von JUnit 5 steigt der Bedarf, die neue Version für das Schreiben von Tests zu nutzen. Das Testing API in Xtext wurde daher um eine Unterstützung für JUnit 5 erweitert. Außerdem kann beim Anlegen von Xtext-Projekten mit dem New Project-Wizard die zu verwendende JUnit-Version selektiert werden. Der vom Wizard erzeugte Parser-Test wird dann entsprechend JUnit-5-konform angelegt.

Bis auf wenige Anpassungen an Imports, Abhängigkeiten und Build-Deskriptoren bleiben die geschriebenen Testprojekte identisch, sodass ein Upgrade leicht möglich ist.

Code Mining: Neue API in Eclipse Photon

Ein neues API der Eclipse-Photon-Plattform ist das sogenannte Code Mining. Dabei handelt es sich um in den Text eingeblendete semantische Hinweise zum Code. Xtext bietet ein eigenes API an, um die Code-Mining-Funktionalität in Xtext-Texteditoren zu unterstützen.

Das Code Mining selbst ist neu in der Eclipse-Plattform und noch nicht vollständig ausgereift. Ihr Erfinder Angelo Zerr nimmt aber gerne Bug Reports an, um das Feature schnell zu stabilisieren. In Kooperation mit dem Xtext-Team konnten so schon manche Verbesserung erreicht werden.

Die folgende Animation zeigt das Feature anhand des Domain-Model-Beispiels, das mit Xtext geliefert wird. Dessen Implementierung dient auch als Blaupause, um eine eigene Implementierung eines sogenannten Code-Mining-Providers zu erstellen.

Neues Projekt-Wizard-API

Mit der aktuellen Xtext-Version wurden nun ein neues API und Generator-Fragmente eingeführt, welche die Erstellung von solchen Wizards deutlich vereinfacht. Die erstellten Wizards unterstützen multiple Templates, die sich sehr einfach mit Xtend implementieren lassen. Die nachfolgende Animation zeigt einen damit entwickelten Projekt Wizard:

Grammatik-Annotationen

Kern jedes Xtext-Projektes ist die Definition der Sprachsyntax in einer Grammatik-Beschreibung. Bisher konnten Parser-Regeln nur mit der Annotation @Override markiert werden, wenn eine geerbte Regel überschrieben wurde. Nun können zusätzliche Annotationen genutzt werden, um die Arbeit mit den Sprachdefinitionen zu vereinfachen:

  • @Deprecated: Markiert eine Regel als veraltet. Bei Verwendung solcher Regeln werden Warnmeldungen erzeugt.
  • @Final: Eine auf diese Weise markierte Regel kann nicht überschrieben werden. Falls man dies versucht, wird eine Fehlermeldung erzeugt.
  • @Exported: Mit dieser Annotation kann auf Grammatik-Ebene schon definiert werden, welche Elementtypen in den sogenannten Xtext-Index exportiert werden. Sinnvoll eingesetzt kann dies zu verbesserter Performance und Speichernutzung sowie klarer Einschränkung von Sichtbarkeiten von Elementen bei Querverweisen führen.

Unterstützung für Language Server Protocol 3.7

Die Unterstützung des Language Server Protocols wurde ebenfalls aktualisiert. Aktuell wird die Version 3.7 des Protokolls unterstützt. Zusätzlich wird nun das VS Code Debug Protocol in Version 1.25 angebunden.

Neue Xtend-Version

Die Programmiersprache Xtend wird im Rahmen des Xtext-Projekts entwickelt und simultan mit Xtext veröffentlicht. Dabei profitiert die Sprache stets von jeglichen Verbesserungen, die am Basisframework und der Basissprache Xbase vorgenommen werden.

Mit der neuen Version können in Xtend nun auch Multi-Catch Statements wie in Java genutzt werden. Außerdem wird nun erkannt, wenn der Xtend-Code unnötige Modifier (z.B. der public-Modifier bei Klassendefinitionen) verwendet. Über einen neuen Quick Fix lassen sich diese dann einfach entfernen.

Sonstiges

Eine umfangreiche Aufstellung der neuen Features und Änderungen können den Release Notes entnommen werden. Neben den explizit beschriebenen Neuigkeiten wurde wie immer an vielen Bugfixes und der Performance gearbeitet, um das ohnehin schon ausgereifte Framework weiter zu verbessern.

Xtext 2.14 kann über die Update Site installiert werden. Sobald Eclipse Photon verfügbar ist, ist eine Installation auch vom Photon Release Repository möglich. Die von Eclipse unabhängigen Bibliotheken sind zudem auf dem Maven Central Repository verfügbar.

Das Xtext-Team freut sich über neue Ideen, Beiträge und Problemberichte auf GitHub. Weitere Neuigkeiten gibt es von @xtext auf Twitter.

 

Diese News erschien im englischem Original auf dem Blog der itemis AG

Geschrieben von
Karsten Thoms
Karsten Thoms
Karsten is a software architect at itemis and part of the Xtext team. He strongly believes that Model Driven Software Development helps to be more efficient in mission critical projects.
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: