Dr. Jan Köhnlein im Gespräch

Eclipse Oxygen Interview: Xtext & das Language Server Protocol

Dominik Mohilo

Dr. Jan Köhnlein

Wir setzen unsere Interview-Reihe zur Veröffentlichung von Eclipse Oxygen fort. Diesmal haben wir mit Dr. Jan Köhnlein, Co-Founder & Xtext-Experte von TypeFox.io, über die neuen Features seiner Projekte in Eclipse Oxygen gesprochen. Außerdem gab er eine Einschätzung zur Zukunft klassischer Desktop-IDEs und einen kleinen Vorgeschmack auf die Features, mit denen in Eclipse Photon zu rechnen ist.

JAXenter: Hallo Jan und danke, dass du dir die Zeit für das Interview genommen hast. Eclipse Oxygen ist gerade erschienen – auf welches Feature eurer Projekte freust du dich am meisten?

Dr. Jan Köhnlein: Das für mich beste Feature in Xtext ist sicherlich die Unterstützung des Language Server Protocol (LSP). Im jetzt erschienenen Xtext 2.12 haben wir diese weiter verbessert und ausgebaut. Eine Xtext-Sprache mit intelligenter Unterstützung in einem generischen Language Client wie VSCode oder Eclipse Che zu benutzen, wird also immer einfacher. Dabei bauen wir auf LSP4J auf, unserer Java-Implementierung des LSP, die ebenfalls in immer mehr anderen Projekten eingesetzt wird.

Ein weiteres tolles neues Feature von Xtext ist das Tracing API. In Xtext kann man ja dank Xtend sehr bequem Code aus der eigenen Sprache generieren. Mit dem neuen API kann man mit dem generierten Code speichern, auf welchem Quellelement einzelne Passagen basieren. Mit dieser Information ist es beispielsweise möglich, zwischen Quellcode und Generat hin und her zu navigieren oder mit dem Debugger durch den Code der Quellsprache zu steppen, während in Wirklichkeit der generierte Code ausgeführt wird. Bisher war das nur für Xbase-Sprachen möglich. Mein Kollege Miro hat zu diesem Feature für die EclipseCon France eine coole Demo gebaut, in der man mit dem Chrome-Debugger durch eine DSL debuggen kann, aus der JavaScript generiert wurde.

JAXenter: Welche anderen Projekte haben dich in diesem Jahr besonders fasziniert und warum?

Allein für die vielen kleinen Usability- und Rendering-Verbesserungen lohnt sich schon der Umstieg auf die neue Eclipse-Version

Dr. Jan Köhnlein: Der neue Generic Text Editor stellt eine gewisse Trendwende dar: Statt die Editor-Unterstützung neuer Sprachen nativ mit Eclipse APIs umzusetzen, kann man nun einfach einen vorhandenen Language Server einbinden. Dieser muss dann nicht einmal mehr in Java implementiert worden sein. Damit unterstützt Eclipse dann ohne weiteres Zutun und vor allem ohne zusätzlichen Wartungsaufwand z.B. C# oder Rust.

Eclipse Che bleibt mit Sicherheit auch sehr interessant, und erfährt jetzt offenbar starke Unterstützung durch Red Hat. Interessant ist in dem Zusammenhang, dass auch Che auf das LSP setzt. Aber auch für die vielen kleinen Usability- und Rendering-Verbesserungen lohnt sich schon der Umstieg auf die neue Eclipse-Version.

JAXenter: Eclipse Photon wird das nächste Simultaneous Release heißen – gibt es in deinen Projekten dafür schon Pläne?

Dr. Jan Köhnlein: Wir arbeiten gerade an einer neuen Infrastruktur für das Refactoring und für partielle Serialisierung in Xtext. Darauf aufbauend können wir dann die noch offenen Funktionen für das Language Server Protocol implementieren. LSP4J wird dabei einfach weiter mitwachsen. Für Xtend sind derzeit keine expliziten neuen Features geplant, es wird aber wie immer von den Bugfixes und Verbesserungen in Xtext profitieren.

JAXenter: Wie sieht es deiner Meinung nach für die Zukunft der „klassischen IDE“ aus? Werden neue Technologien die „klassischen IDEs“ irgendwann überholen und zu einem kompletten Redesign zwingen?

Dr. Jan Köhnlein: Die klassische IDE wird sicher so schnell nicht verschwinden. Eclipse als Integrationsplattform für verschiedenste Werkzeuge hat sich ja gerade für Firmen mit großen Tool-Landschaften sehr bewährt. Allerdings scheint immer mehr Leuten die Zukunft Java-basierter UI-Toolkits wie SWT oder JavaFX unklar, wodurch Web-basierte Technologien für Multi-Platform-Werkzeuge immer mehr in den Vordergrund rücken.

Das Projekt Theia zielt genau in diese Richtung. Theia ist ein IDE-Framework mit dem man sowohl Rich-Clients als auch Browser-basierte IDEs auf Basis desselben Codes umsetzen kann. Theia ist in TypeScript geschrieben und benutzt bewährte Architekturmuster wie Dependency Injection oder Erweiterung durch Plug-ins. Die intelligente Editor-Unterstützung für Programmiersprachen wird über das LSP beigesteuert. Im Gegensatz zu Eclipse Che fokussiert sich Theia auf den Client und blendet z.B das Workspace Provisioning bewusst aus. Es ist also durchaus möglich und beabsichtigt, beide zu integrieren.

Lesen Sie auch: Eclipse Oxygen ist da!

Gleichzeitig wurde mit sprotty der Grundstein für ein Web-basiertes graphisches Visualisierungsframework gelegt, das dieselbe Client/Server-Trennung wie das LSP nur eben für Diagramme erlaubt. Natürlich setzt sprotty von vornherein auf Animationen und gute Usability. Die Kombination von Theia und sprotty erlaubt dann bereits recht mächtige integrierte Workbenches, die lokal oder in der Cloud laufen, und die langfristig Eclipse-RCP Anwendungen ablösen können.

JAXenter: Was könnte in der Eclipse IDE oder generell im Eclipse-Ökosystem vielleicht zukünftig verbessert werden?

Dr. Jan Köhnlein: Eigentlich ist alles bereits ziemlich super. Die Community ist lebendig und freundlich. Die Eclipse Foundation bietet sehr gute Unterstützung in der Infrastruktur, im Marketing und in Rechtsfragen. Die Events sind klasse. Also kein Grund zu meckern.

Ich finde es prima, dass man als Eclipse-Projekt mittlerweile nicht mehr auf Eclipse-interne Infrastruktur festgelegt ist und zum Beispiel GitHub nutzen kann.

Einige unserer Benutzer stört, dass man die meisten Eclipse-Plug-ins nicht gleichzeitig in mehreren Versionen laufen lassen kann. Das schafft oft Versionskonflikte, etwa wenn man mehrere Xtext-Sprachen unterschiedlicher Herkunft integrieren möchte. Leider ist das aus architekturellen Gründen nicht so einfach zu beheben. Language Server können hier helfen, bieten aber noch nicht ganz den Komfort einer nativen Eclipse-Implementierung.

Ich finde es übrigens prima, dass man als Eclipse-Projekt mittlerweile nicht mehr auf Eclipse-interne Infrastruktur festgelegt ist (Bugzilla, Git@Eclipse), sondern eben auch andere Open-Source-Lösungen wie GitHub benutzen kann. Ich glaube, das ist für die Sichtbarkeit des Projekts und das Onboarding neuer Committer sehr vorteilhaft. Vielleicht könnte man diese Möglichkeiten noch etwas deutlicher kommunizieren.

JAXenter: Von Eclipse abgesehen: Welche Tools bzw. Technologien haben für dich das Potential, in der zweiten Hälfte des Jahres die Entwicklerwelt aufzurütteln?

Dr. Jan Köhnlein: Es entstehen eine Reihe hochinteressanter Technologien im Umfeld der Containerisierung, sei es durch Docker oder durch Kubernetes. Ansonsten erwarte ich viele weitere spannende Entwicklungen im Bereich der Web-IDEs.

Dr. Jan Köhnlein ist Softwarearchitekt und Co-Founder von TypeFox.io. Er ist Committer der ersten Stunde beim Projekt Eclipse Xtext und der Kopf des Projektes FXDiagram. Er hat sich auf modellgetriebene Softwareentwicklung auf der Eclipse-Plattform spezialisiert und kennt sich unter anderem hervorragend mit Java, Xtext, Xtend, EMF, JavaFX, UML, GMF und GEF aus. Auf Twitter ist er mit dem Handle @jankoehnlein unterwegs.
Geschrieben von
Dominik Mohilo
Dominik Mohilo
Dominik Mohilo studierte Germanistik und Soziologie an der Goethe-Universität in Frankfurt. Seit 2015 ist er Redakteur bei S&S-Media.
Kommentare

Schreibe einen Kommentar

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