Über unsMediaKontaktImpressum
Dr. Jonas Helming, Dr. Maximilian Kögel & Dr. Philip Langer 29. November 2022

Eclipse Theia: die nächste Generation der Eclipse-Plattform

Eine Plattform zur effizienten Implementierung von web-basierten Tools und IDEs

Viele Unternehmen setzen auf eigene Tools und IDEs zur optimalen Unterstützung von Softwareentwicklern und Domänen-Experten. Die Eclipse-Plattform ist seit über zwei Jahrzehnten eine beliebte Plattform für die Umsetzung solcher Tools oder IDEs. Eclipse Theia ist die neue Generation dieser Plattform [1]. Theia ist webbasiert und setzt auf moderne Technologien wie beispielsweise das Language Server Protokoll (LSP). Dieser Artikel gibt einen Überblick über Theia, einen Vergleich mit VS Code, sowie das Ökosystem rund um Theia.

Spezialisierte Tools und IDEs sind für viele Geschäftsbereiche essentiell. Beispielsweise liefern Hardwarehersteller häufig eigene Softwareentwicklungsumgebungen mit ihren Produkten, welche die Programmierung und Konfiguration der Hardware maßgeblich erleichtern. Auch abseits der klassischen Softwareentwicklung werden durch domänenspezifische Tools häufig Experten bei ihrer effizienten Arbeit unterstützt, beispielsweise beim Design von Geschäftsprozessen, bei der Entwicklung von Hardware oder gar bei der Berechnung von Finanzprodukten.

Viele dieser Tools bilden komplexe Daten und Abläufe ab, ihre Umsetzung ist dementsprechend aufwändig. Um diesen Aufwand zu verringern, werden für die Umsetzung von angepassten Tools und IDEs häufig Plattformen und Frameworks wie die Eclipse-Plattform verwendet. Diese Plattformen stellen wiederkehrende Tool-Features zur Wiederverwendung quelloffen bereit und bieten einen guten initialen Rahmen für die Umsetzung von eigenen Tool-Projekten.

Lange wurden Tools und IDEs als Desktop-Anwendungen umgesetzt. Gerade in den letzten Jahren geht der Trend aber auch in diesem Bereich sehr stark in Richtung web-basierter Lösungen. Da die klassische Eclipse-Tools-Plattform an den Desktop gebunden ist, tritt Eclipse Theia hier als neue und web-basierte Generation einer vergleichbaren Tool-Plattform in den Ring.

Die nächste Generation von Eclipse?

Zunächst ist Eclipse Theia nicht als Ablöse der existierenden Eclipse-Plattform gedacht. Es gibt keine Pläne, die Eclipse-Plattform abzuschaffen oder zu einem bestimmten Zeitpunkt abzulösen. Solange es genug Kontributoren zum zugrundeliegenden Open-Source-Projekt gibt, wird die Eclipse-Plattform weiter gepflegt. Es wird also voraussichtlich noch eine ganze Zeit eclipse-basierte Anwendungen auf dem Desktop geben.

Allerdings lässt sich bei einer 20 Jahre alten Plattform nicht verleugnen, dass sie technologisch in die Jahre gekommen ist. Bestimmte Anforderungen, wie etwa die Anwendung über einen Browser ohne Installation bereit zu stellen oder modernes Look-and-feel, lassen sich auch nicht mehr auf der existierenden technologischen Basis umsetzen. Inwieweit deckt aber Eclipse Theia die Anforderungen an eine Plattform für Tools und IDEs bereits ab, was macht Eclipse Theia anders und warum kann Theia als neue Generation von Eclipse angesehen werden?

Zunächst deckt Eclipse Theia quasi alle Basis-Anforderungen der klassischen Eclipse-Plattform ab. Das beinhaltet beispielsweise eine sogenannte "Workbench", also einen Anwendungsrahmen, in dem sich Views, Editoren, Menüs, Commands, Benutzereinstellungen und vieles mehr einfach integrieren lassen (s. Abb. 1).

Allerdings ist diese Workbench im Fall von Theia web-basiert, das bedeutet, sie läuft im Browser. Theia-basierte Anwendungen lassen sich damit auf zwei Arten deployen. Zum einen als klassische Webanwendung mit cloud-basiertem Backend. Zum anderen lassen sich mit Theia aber auch Desktop-Tools bauen. Mit dem Framework "Electron" werden hier Backend und Frontend in eine installierbare Anwendung gepackt. Die Oberfläche wird aber auch hier mit einem in die Anwendung integrierten Browser angezeigt, nur dass das Backend eben lokal läuft.

Diese Flexibilität ist insbesondere in der Phase der Migration von Tools in das Web äußerst hilfreich. Viele Projekte steigen auf Theia um, liefern aber zunächst eine Desktop-Anwendung aus. Dieser Umstieg ist für die Nutzer weniger drastisch und es wird auch zunächst keine Cloud-Infrastruktur benötigt. Die gleiche Anwendung kann dann aber später in die Cloud verlagert werden, da sie bereits auf den entsprechenden Web-Technologien basiert. Zum Bereitstellen von theia-basierten Anwendungen in der Cloud lohnt sich ein Blick auf Theia.cloud – ein Open-Source-Framework, das auf Kubernetes basiert [2].

Das Stichwort "Web-Technologien" beschreibt einen weiteren signifikanten Unterschied von Eclipse Theia zur klassischen Eclipse-Plattform. Theia setzt auf HTML/CSS und TypeScript mit einem node-basierten Backend. Dieser Technologie-Stack ist auch im Umfeld von Geschäftsanwendungen sehr verbreitet. Damit lässt sich aus einem sehr großen Ökosystem aus Frameworks und Technologien schöpfen. Beispielsweise können eigene Oberflächen in Theia mit React, Vue oder Angular umgesetzt werden. Die Verwendung von stark verbreiteten, modernen Technologien erleichtert nicht zuletzt auch das Recruiting für Tool-Entwicklungsprojekte.

Es gibt natürlich auch im Web weiterhin Technologien, die nur für die Domäne "Tools und IDEs" relevant sind. Aber auch hier orientiert sich Theia stark an verbreiteten Standards und integriert beispielsweise das Language Server Protokoll (LSP) für die Unterstützung von Programmiersprachen, oder das entsprechende Debug Adapter Protokoll (DAP). Beide Technologien werden auch in VS Code eingesetzt.

Wie die klassische Eclipse-Plattform erlaubt Theia die flexible Anpassung der Workbench und anderer Basis-Features. Durch die konsequente Verwendung von Dependency Injection geht Theia als neue Generation aber in Punkto Flexibilität einen Schritt weiter. Es gibt wenig, dass sich in Theia nicht anpassen, austauschen oder entfernen lässt. Nicht zuletzt bietet Theia ein Modulsystem, mit dem sich Features im eigenen Tool kombinieren und erweitern lassen. Beispielsweise können beliebige existierende Open-Source-Features mit eigenen proprietären Features in eine einheitliche Lösung zu einem Produkt verschmolzen werden. Dieses Modul-System verwendet schlicht das weitverbreitete Node-Package-Format.

Allerdings geht Theia im Bereich Erweiterbarkeit wiederum einen Schritt weiter. Konkret bietet Theia sogar zwei Erweiterungsmechanismen an: Theia Extensions und VS Code Extensions [3].

Theia Extensions erlauben den direkten Zugriff auf die Theia-Kern-API. Mit ihnen lässt sich die Workbench beliebig anpassen und Features umsetzen, die eng mit Theia integriert sind. VS Code Extensions sind der Erweiterungsmechanismus von VS Code. Sie operieren gegen eine eingeschränkte API, laufen in einem eigenen Prozess und lassen sich dadurch sogar zur Laufzeit installieren. Beide Erweiterungsmechanismen haben ihre Stärken und Schwächen, abhängig vom Anwendungsfall.

Durch die Unterstützung von VS Code Extensions lässt sich bei der Umsetzung von theia-basierten Produkten auf das riesige Ökosystem von VS Code Extensions zugreifen und deren Funktionalitäten für das eigene Produkt nutzen. Dies ist insbesondere für Features im Bereich Programmierung, wie zum Beispiel Unterstützung von Programmiersprachen, Linting, Code-Analyse, usw. besonders wertvoll. Da sich VS Code Extensions zur Laufzeit installieren lassen, kann man Benutzern eines theia-basierten Tools sogar erlauben, ihre eigenen Extension auszuwählen. Dazu eignet sich der offene Marktplatz für Extensions: OpenVSX [4].

Da es neben dem Support von VS Code Extensions noch einige weitere Ähnlichkeiten von VS Code und Eclipse Theia gibt, widmet sich der nächste Abschnitt dem direkten Vergleich beider Projekte.

Eclipse Theia oder VS Code?

Häufig wird nach den Unterschieden zwischen Eclipse Theia und VS Code gefragt [5]. Zunächst weisen beide Technologien einige direkte Ähnlichkeiten auf. Genauer gesagt verwendet Eclipse Theia direkt einige Konzepte von VS Code wieder. Das beinhaltet neben den bereits besprochenen VS Code Extensions z. B. auch das Language Server Protokoll (LSP) und den Monaco Code Editor. Theia verwendet also den identischen, ausgereiften Monaco Editor für die Bearbeitung von textuellen Dateien, typischerweise für die Programmierung. Weiterhin adaptiert Theia in seiner Standardform weitestgehend das äußerst beliebte Usability-Konzept von VS Code. Eine unangepasste theia-basierte Anwendung ist daher von VS Code kaum zu unterscheiden.

Es gibt jedoch signifikante Unterschiede zwischen Theia und VS Code:

VS Code ist ein erweiterbares Tool, Eclipse Theia ist eine offene Plattform für die Umsetzung von (erweiterbaren) Tools.

Während sich in VS Code sehr einfach bestimmte Features über VS Code Extensions hinzufügen lassen, lassen sich in Theia über Theia Extensions nahezu uneingeschränkt Anpassungen vornehmen. In Theia lassen sich eigene Logos einfügen, existierende Menü-Einträge oder ganze Views entfernen oder der Aufbau der ganzen Workbench anpassen. Kurz: Es lassen sich mit Eclipse Theia vollständig auf die eigenen Anforderungen angepasste Tools und IDEs umsetzen.

Ein typisches Beispiel für so eine Anpassung ist das Hinzufügen einer Toolbar. In VS Code ist das Hinzufügen einer Toolbar nicht möglich, da es das Tool selbst und auch die Extension API nicht vorsieht. In Theia sind Erweiterungen wie eine Toolbar schon immer möglich und beispielsweise in der auf Theia basierenden Arduino IDE 2.0 umgesetzt [6]. Seit Anfang 2022 unterstützt die Plattform dieses Feature sogar direkt ohne eigene Erweiterungen (s. Abb. 3).

Der zweite wesentliche Unterschied zwischen Eclipse Theia und VS Code ist die Governance des jeweiligen Open-Source-Projekts.

VS Code ist ein proprietäres Tool, welches zum großen Teil auf dem VS-Code-Open-Source-Projekt basiert. VS Code wird im Wesentlichen von Microsoft getrieben und gesteuert. Eclipse Theia basiert vollständig auf quelloffenen Komponenten, wird von der unabhängigen Eclipse Foundation verwaltet und wird von einem Konsortium verschiedener Kontributoren getrieben.

Was dieser konzeptionelle Unterschied in der Praxis bedeutet, zeigt sich am besten an zwei konkreten Beispielen. Das erste Beispiel ist die zuvor erwähnte Toolbar. Im Falle von VS Code als "Tool" entschieden die Macher von VS Code, dieses Feature nicht zu unterstützen und auch keine entsprechenden Kontributionen anzunehmen. Es gibt zwar viele User von VS Code, die so eine Toolbar gerne hätten (Feature-Request für Toolbars [7]), allerdings können die UX-Verantwortlichen natürlich zu dem Schluss kommen, dass es für VS Code als Produkt insgesamt besser ist, das Feature nicht zu berücksichtigen. Solche Entscheidungen sind nicht unbedingt trivial, im Fall von Eclipse Theia als Plattform ist eine solche Entscheidung einfacher. Sobald genügend Interesse von Adoptern der Plattform besteht, kann Theia eine Toolbar optional anbieten. Ob sie dann in Tools und IDEs, welche auf Theia basieren, verwendet wird, bleibt den jeweiligen theia-basierten Projekten überlassen.

Ein weiteres, ähnliches Beispiel ist das Herauslösen von Views in eigene Fenster. Dies wird von VS Code nicht unterstützt (Feature-Request für herauslösbare Views [8]). Erneut ist Theia hier als Plattform flexibler, es erlaubt das Herauslösen ausgewählter Views und ermöglicht Anwendern der Plattform, eigene Views so umzusetzen, dass sich die Views herauslösen lassen (weitere Details zur Unterstützung von herauslösbaren Views in Theia [9]).

Parallel zu den erwähnten zwei Beispielen zeigen sich die Unterschiede zwischen Tool und Plattformen in vielen Bereichen. Um sich konkret zwischen VS Code und Eclipse Theia zu entscheiden, sollte das eigene Projekt sehr sorgfältig gegen die beiden Technologien evaluiert werden.

VS Code ist vermutlich der aktuell verbreitetste und vielleicht beste generische Code-Editor. Wer mit einer eigenen Tool-Komponente, beispielsweise einem Code-Analyse-Werkzeug, eine möglichst große Zahl an Entwicklern erreichen möchte, ist vermutlich mit einer VS Code Extension am besten beraten. Als VS Code Extension können Tool-Komponenten direkt allen Anwendern von VS Code über den Marketplace zur einfachen Installation in VS Code zur Verfügung gestellt werden.

Wer ein eigenes, auf spezifische Anforderungen angepasstes Tool umsetzen möchte, dem nutzt sicherlich der flexible Aufbau von Eclipse Theia und die Möglichkeit, die Plattform nahezu beliebig anzupassen, um Anwendern letztlich ein eigenes Produkt anbieten zu können.

Da solche Tool-Projekte meist strategische und langfristige Investitionen sind, muss auch die Governance der Basis-Technologien sorgsam abgewogen werden. VS Code basiert zum großen Teil auf Open Source, ist jedoch stark von einer Partei kontrolliert. Theia ist von der unabhängigen Eclipse Foundation verwaltet, es wird von mehreren Kontributoren gepflegt und die strategische Ausrichtung des Projektes lässt sich durch Teilnahme am Open-Source-Prozess beeinflussen.

Ist ein Tool oder eine IDE für den hausinternen Einsatz gedacht, sind schließlich die proprietären Anteile von VS Code – insbesondere die eingebaute Telemetrie – zu prüfen, inwieweit sie mit der eigenen Compliance vereinbar sind. Entsprechende proprietäre Komponenten sind in Eclipse Theia natürlich erst gar nicht vorhanden.

Am Ende gibt es Projekte, bei denen die Entscheidung zwischen Theia und VS Code sehr klar ausfällt. In anderen Fällen kann es sogar sinnvoll sein, über VS Code Extensions beide Technologien zu unterstützen. Da es in diesem Artikel jedoch primär um Theia gehen soll, wirft der folgende Abschnitt einen Blick auf die typischen ersten Schritte mit der Plattform.

Die ersten Schritte mit Eclipse Theia

Ein typischer erster Schritt mit Eclipse Theia ist das Ausprobieren der Plattform aus Sicht eines Anwenders. Dabei stellt sich allerdings sofort die Frage, was man genau ausprobieren soll. Theia ist ja eine Plattform, mit der man Tools und IDEs entwickeln kann, und eigentlich nicht direkt ein Tool selbst. Glücklicherweise stellt das Projekt jedoch Theia Blueprint bereit, ein Standard-Template-Tool basierend auf Theia [10].

Theia Blueprint kann als installierbare Desktop-Version unbegrenzt und online für jeweils 30 Minuten genutzt werden. Weiterhin sind – wie alles bei Theia – die Sourcen und CI Scripts von Theia Blueprint quelloffen und bieten mit der verfügbaren Dokumentation einen guten Startpunkt für die Umsetzung eigener Tools basierend auf Theia.
 
Für weitere Schritte mit Theia fasst die Theia-Project-Website die wichtigsten Informationen mit entsprechenden Links und Videos zusammen [11]. Fragen werden im aktiven Userforum von der Community zeitnah beantwortet. Der einmal wöchentlich stattfindende "Dev Call" erlaubt es jeder interessierten Partei, direkten Kontakt mit dem Kern-Entwicklungsteam aufzunehmen. Schließlich werden für Eclipse Theia auch professioneller Support, konkrete Trainings, Beratung und Implementierungs-Dienstleistungen angeboten [12].

Das Ökosystem um Eclipse Theia

Theia ist ein Open-Source-Projekt, das von der Eclipse Foundation betrieben wird. Die Eclipse Foundation legt dabei ein ausgereiftes Regelwerk fest, mit dem unterschiedliche Stakeholder des Projekts offen und transparent zusammenarbeiten können. Im Falle von Eclipse Theia ist diese Zusammenarbeit äußerst erfolgreich. Zahlreiche Firmen tragen aktiv zur Weiterentwicklung bei, beispielsweise Ericsson, EclipseSource, Red Hat, TypeFox, Arm oder STMicroelectronics. Auf der Theia-Website findet sich eine Liste der bekannten Kontributoren und Adopter. Diese Liste ist in Wahrheit noch deutlich länger, da sich längst nicht alle Adopter auflisten lassen wollen.

Die beteiligten Parteien bei Theia arbeiten aber nicht nur isoliert voneinander an ihren eigenen Features der Plattform. Es gibt zahlreiche Initiativen, bei denen sich Firmen bei der Entwicklung abstimmen und direkt zusammenarbeiten. Konkrete Beispiele dafür sind Theia Blueprint, die herauslösbaren Views oder die Kompatibilität mit VS Code Extensions. Eclipse Theia ist daher ein äußerst offenes Projekt, in dem Open Source Collaboration ganz unterschiedlicher Parteien zu einem besseren Ganzen und damit zu einem Mehrwert aller führt.

Neben Theia selbst bildete sich in den letzten Jahren ein breites Ökosystem an zusätzlichen Komponenten für die Entwicklung von web-basierten Tools und IDEs, die im Rahmen der Eclipse Cloud Development Tools Working Group verwaltet werden [13]. Diese Technologien sind meist nicht direkt an Theia gebunden und lassen sich z. B. auch in anderen Umgebungen wie VS Code nutzen. Die Flexibilität von Theia erlaubt aber sehr ausgereifte Integrationen, welche die Projekte meist direkt bereitstellen. Ein Beispiel ist die Graphical Language Server Plattform (Eclipse GLSP) für das Umsetzen von Diagrammeditoren [14]. Mit GLSP lassen sich effizient graphische Editoren umsetzen, die auch mit anderen Teilen der Workbench (z. B. anderen Editoren oder der Problems View) zusammenspielen (s. Abb. 5).

Beispiele für weitere Zusatz-Technologien in Theia sind Eclipse Sprotty (auf dem GLSP basiert), EMF.cloud (für die Umsetzung von Modellierungstools) und CDT.cloud. Letzteres ist die Fortsetzung des bekannten Eclipse-CDT-Projekts: CDT.cloud bietet Komponenten, mit denen sich C-/C++-Tools im Web umsetzen lassen [15]. Mit diesem Fokus entsteht hier ein Ökosystem im Ökosystem, beispielsweise beinhaltet CDT.cloud die nächste Generation von Trace Compass, einer bekannten Trace-Lösung, sowie einen umfangreichen Memory Inspector (s. Abb. 6). Eine auf Theia basierende Standard Distribution, CDT.cloud Blueprint, fasst wiederum alle diese Einzel-Komponenten zu einem direkt nutzbaren Tool zusammen, welches wiederum als Basis für eigene C-/C++-Tools dienen kann.

Um ein Tool basierend auf Theia und der beschriebenen Komponenten aus dem Ökosystem zu entwickeln, müssen entsprechend kompatible Versionen ausgewählt werden. Die Eclipse-Desktop-Plattform löste dieses Problem über den so genannten Release Train, ein simultanes Release zahlreicher zueinander kompatibler Projekte aus dem Ökosystem.

Theia als Plattform folgt einem monatlichen Release-Zyklus. Seit September 2022 bietet Theia aber zusätzlich alle 3 Monate mit dem "Community Release" einen festen Integrationspunkt für Zusatztechnologien an [16]. Diese können am Community Release teilnehmen und entsprechend kompatible Versionen liefern.

Fazit

Eclipse Theia ist eine moderne Plattform für die Umsetzung von web-basierten Tools und IDEs. Von der klassischen Eclipse-Plattform auf dem Desktop erbt Theia die grundlegenden Anforderungen. Allerdings basiert Theia als nächste Generation auf einem neuen und modernen Technologie-Stack, der viele Standards aus dem Bereich der Web-Applikationsentwicklung nutzt. Damit ist die Plattform zugleich deutlich schlanker, aber auch flexibler, als das klassische Eclipse. Weiterhin nutzt Theia das Language-Server-Protokoll, Debug-Adapter-Protokoll und unterstützt sogar VS Code Extensions.

Theia-basierte Applikationen lassen sich sowohl als Desktop-Anwendungen, sowie auch als cloud-basierte Browser-Anwendungen verwenden. Die Plattform unterstützt für web-basierte Tools innovative Features wie beispielsweise eine flexible Toolbar und herauslösbare Views. Damit ist Theia eine ideale Plattform für die Migration von angepassten und domänen-spezifischen Tools und IDEs ins Web.

Eclipse Theia ist bei der Eclipse Foundation hersteller-neutral beherbergt. Theia ist ein sehr offenes und diverses Projekt. Rund um Theia entstand in den letzten Jahren ein zusätzliches Ökosystem an Komponenten, beispielsweise Eclipse GLSP für Diagrammeditoren oder CDT.cloud für C-/C++-Tools. Vor diesem Hintergrund kann Eclipse Theia zurecht als die nächste Generation der erfolgreichen Eclipse-Plattform angesehen werden.

Autoren

Dr. Jonas Helming

Dr. Jonas Helming ist Berater, Trainer und Software Engineer, sowie Geschäftsführer der EclipseSource GmbH. Sein Fokus liegt auf der Entwicklung von Tools und IDEs, auf Modellierung und web-basierten Tools.
>> Weiterlesen

Dr. Maximilian Kögel

Dr. Maximilian Kögel ist Software-Architekt sowie Geschäftsführer der EclipseSource GmbH. Sein Fokus liegt auf der Entwicklung von (Modellierungs-)Tools und IDEs – web- und desktop-basiert.
>> Weiterlesen

Dr. Philip Langer

Dr. Philip Langer ist Geschäftsführer der EclipseSource in Wien und unterstützt Unternehmen bei der Konzeption, Architektur und Entwicklung von domänen-spezifischen Software-Werkzeugen.
>> Weiterlesen
Das könnte Sie auch interessieren
Kommentare (0)

Neuen Kommentar schreiben