Eclipse Che – die IDE der Zukunft?

Nach etwa zwei Jahren Entwicklung hat die Browser-IDE Eclipse Che Anfang 2016 die Beta-Phase verlassen. Ein guter Zeitpunkt, sich die Unterschiede zum traditionellen Eclipse und die Features von Che anzuschauen.

Werkzeuge  –  9 Kommentare
Eclipse Che – die IDE der Zukunft?

Eclipse Che ist ein Workspace-Server mit integrierter Entwicklungsumgebung (IDE). Das Projekt wird im Rahmen der Eclipse Foundation quelloffen unter der Eclipse Public License entwickelt. Neben Firmen wie IBM, SAP, Red Hat und Codenvy gehören viele Privatpersonen zum Entwicklungsteam.

Die Grundidee dahinter ist einfach. Das Entwickeln und Ausführen von Applikationen findet auf einem zentralen Server statt, wodurch Programmierer ausschließlich einen Internet-Browser auf ihrem System benötigen, um an einem Projekt arbeiten zu können. Die Verwaltung von Projekten und die eigentliche Programmierung erfolgen in einer IDE im Browser. Da sich die Serverapplikation auch in der eigenen Infrastruktur installieren lässt, gelangen Projekte und zugehörige Daten nicht zwangsweise nach außen.

Die ursprüngliche Idee zu einer Browser-IDE entstand Anfang 2009 bei eXo Platform. Nach drei Jahren stetiger Weiterentwicklung und steigendem Interesse an dem Projekt investierte die Firma 9 Millionen Dollar und gründete ein eigenständiges Unternehmen namens Codenvy. 2014 gab dessen CEO, Tyler Jewell, die Mitarbeit im "Eclipse Cloud Development"-Projekt und somit die Entwicklung von Eclipse Che bekannt. Neben der Unterstützung bei der Weiterentwicklung brachte Codenvy Programmcode aus seinen Produkten in das Projekt mit ein. Codenvy baut heute auf Eclipse Che auf und liefert zusätzliche Features wie eine Benutzerverwaltung und bessere Skalierung. Da ein Großteil der Entwicklung in Cherkasy (Ukraine) erfolgt, hat man sich auf den Namen "Che" geeinigt.

Durch den modularen Aufbau der Server-Applikation werden Workspaces und Projekte verwaltet (Abb. 1).

Che wird auf einem Server installiert, auf den mehrere Clients zugreifen können. Eine Che-Instanz lässt sich anschließend von den Clients konfigurieren. Hierbei können Entwickler viele Workspaces anlegen. Ein solcher bündelt eine beliebige Anzahl an Projekten und mindestens eine Maschine. Letztere ist ein Docker-Container. Das bedeutet, dass die Clients die Projekte nicht lokal, sondern ausschließlich zentral auf dem Server innerhalb von Maschinen ausführen. Somit ist garantiert, dass jeder Client auf der gleichen Basis entwickelt und keine zusätzliche Software lokal installieren muss. Um stark divergenten Anforderungen von Projekten gerecht zu werden, sind die Maschinen flexibel und individuell anpassbar. Dabei lassen sich entweder Container-Vorlagen – sogenannte Stacks – verwenden oder ein komplett neuer Container erstellen. Hierbei bieten sich alle Möglichkeiten, die beim Erzeugen eines normalen Docker-Containers existieren.

Ein Stack ist eine Kombination aus vorinstallierten Techniken, was dem Benutzer Arbeit ersparen soll. Che gibt es beispielsweise mit Stacks für Java, Node.js, PHP und ASP.NET. Sie basieren auf Linux-Distributionen wie Ubuntu und Debian. Die Docker-Maschinen bieten ebenfalls einen SSH-Zugriff, wodurch sich vordefinierte Stacks auch im Nachhinein anpassen lassen. Zudem ist die Konfiguration von Maschinen ex- und importierbar, womit Entwickler komplexe Konfigurationen veröffentlichen und teilen können.

Eclipse Che wurde mit dem Google Web Toolkit (GWT) entwickelt und ist eine Java-Applikation, die sich auf gängigen Applikationsservern wie Apache Tomcat oder GlassFish ausführen lässt. Bei der
Entwicklung von Che wurde auf eine starke Erweiterbarkeit und Flexibilität geachtet. Um sie zu gewährleisten, liefert Che ein umfangreiches SDK, das ebenfalls auf GWT basiert. Beim Erstellen der Maschinen wurde auf Docker gesetzt, was die Administration der Maschinen für den Benutzer stark vereinfacht. Die Entwicklung von Projekten mit Che erfolgt innerhalb der IDE, die sich über gängige Webbrowser aufrufen lässt.

Che ist mehr als nur eine IDE. Eine umfangreiche Feature-Palette soll Entwicklern den Projektalltag vereinfachen. Die IDE hat den Ansatz, mehrere Benutzer parallel auf dem gleichen Workspace arbeiten zu lassen. Kein Benutzer muss zusätzliche Software auf seinem System installieren, und neue Projektmitglieder benötigen lediglich den Link zu Che, um bei der Entwicklung mitwirken zu können. Derzeit ist noch keine Benutzerverwaltung vorgesehen, wodurch der Link ausreichend ist, um am Projekt arbeiten zu können. Durch die ex- und importierbare Konfiguration von Workspaces und Maschinen lassen sich diese einfach persistieren und über Che-Instanzen hinweg wiederverwenden.

Standardmäßig sind Workspaces transient. Das heißt, es wird nicht garantiert, dass die Umgebung nach einem Neustart den gleichen Zustand wie bei der letzten Ausführung besitzt. Mit sogenannten Workspace Snapshots können Entwickler den Zustand eines Workspaces persistieren und jederzeit reproduzieren, um beispielsweise Tests auf der exakt identischen Umgebung erneut auszuführen oder Fehler zu behandeln. Die Workspaces verwaltet der Workspace Master über eine umfangreiche RESTful-Schnittstelle. Sämtliche Änderungen in der Browser-IDE an Maschinen oder Projekten werden über diese Schnittstelle an die Workspaces weitergeleitet. Da die Schnittstelle auch von außen erreichbar ist, werden sich in Zukunft umfangreiche Erweiterungen wie eine Desktop-IDE entwickeln lassen. Derzeit unterstützt Che nativ folgende Programmiersprachen, Frameworks und Tools:

  • Programmiersprachen Java, C++, JavaScript, Python, PHP, Ruby, SQL
  • Frameworks: OpenShift, AngularJS, Docker, Yeoman
  • Build-Tools: Ant, Bower, Grunt, Gulp, Maven, npm
  • Sonstiges: Git, Orion, SSH, Subversion

Um Projekte möglichst schnell auf unterschiedlichen Systemen testen zu können, erstellt Che die Ausführungsumgebung über Docker. Ein Workspace kann mehrere Container umfassen, wodurch sich ein Projekt auf mehreren Containern ausführen lässt. Che installiert in jedem Container einen Workspace Agent, der eine SSH-Verbindung von außen zulässt oder Debugging von Projekten ermöglicht.