eclipse che – die ide der zukunft? - oio · die idee einer cloud-ide ist nichts neues. es gibt...

4
E clipse Che ist ein Workspace-Server mit integrierter Ent- wicklungsumgebung (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 Aus- fü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 ar- beiten zu können. Die Verwaltung von Projekten und die eigent- liche Programmierung erfolgen in einer IDE im Browser. Da sich die Serverapplikation auch in der eigenen Infrastruktur in- stallieren lässt, gelangen Projekte und zugehörige Daten nicht zwangsweise nach außen. Die ursprüngliche Idee zu einer Browser-IDE entstand An- fang 2009 bei eXo Platform. Nach drei Jahren stetiger Weiter- entwicklung und steigendem Interesse an dem Projekt investier- te 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 Pro- grammcode 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. Was steckt dahinter? 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 iX Developer 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. Sonderdruck aus Juli 2016 © by Heise Medien GmbH & Co KG, Hannover

Upload: others

Post on 26-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Eclipse Che – die IDE der Zukunft? - OIO · Die Idee einer Cloud-IDE ist nichts Neues. Es gibt bereits einige wie das kürzlich von AWS übernommene Cloud9, Codeanywhe-re und Nitrous,

Eclipse Che ist ein Workspace-Server mit integrierter Ent-wicklungsumgebung (IDE). Das Projekt wird im Rahmender Eclipse Foundation quelloffen unter der Eclipse Public

License entwickelt. Neben Firmen wie IBM, SAP, Red Hat undCodenvy gehören viele Privatpersonen zum Entwicklungsteam.Die Grundidee dahinter ist einfach. Das Entwickeln und Aus-

führen von Applikationen findet auf einem zentralen Serverstatt, wodurch Programmierer ausschließlich einen Internet-Browser auf ihrem System benötigen, um an einem Projekt ar-beiten zu können. Die Verwaltung von Projekten und die eigent-liche Programmierung erfolgen in einer IDE im Browser. Dasich die Serverapplikation auch in der eigenen Infrastruktur in-stallieren lässt, gelangen Projekte und zugehörige Daten nichtzwangsweise nach außen.Die ursprüngliche Idee zu einer Browser-IDE entstand An-

fang 2009 bei eXo Platform. Nach drei Jahren stetiger Weiter-entwicklung und steigendem Interesse an dem Projekt investier-

te die Firma 9 Millionen Dollar und gründete ein eigenständigesUnternehmen namens Codenvy. 2014 gab dessen CEO, TylerJewell, die Mitarbeit im „Eclipse Cloud Development“-Projektund somit die Entwicklung von Eclipse Che bekannt. Neben derUnterstützung bei der Weiterentwicklung brachte Codenvy Pro-grammcode aus seinen Produkten in das Projekt mit ein. Codenvy baut heute auf Eclipse Che auf und liefert zusätzlicheFeatures wie eine Benutzerverwaltung und bessere Skalierung.Da ein Großteil der Entwicklung in Cherkasy (Ukraine) erfolgt,hat man sich auf den Namen „Che“ geeinigt.

Was steckt dahinter?

Che wird auf einem Server installiert, auf den mehrere Clientszugreifen können. Eine Che-Instanz lässt sich anschließend vonden Clients konfigurieren. Hierbei können Entwickler viele

iX Developer 2016 1

Eclipse Che – die IDE der Zukunft?Nach etwa zwei Jahren Entwicklung hat die Browser-IDE Eclipse Che Anfang 2016 dieBeta-Phase verlassen. Ein guter Zeitpunkt, sich die Unterschiede zum traditionellenEclipse und die Features von Che anzuschauen.

Sonderdruck aus Juli 2016

© by Heise Medien GmbH & Co KG, Hannover

Page 2: Eclipse Che – die IDE der Zukunft? - OIO · Die Idee einer Cloud-IDE ist nichts Neues. Es gibt bereits einige wie das kürzlich von AWS übernommene Cloud9, Codeanywhe-re und Nitrous,

2 iX Developer 2016

Workspaces anlegen. Ein solcher bündelt eine beliebige Anzahlan Projekten und mindestens eine Maschine. Letztere ist ein Do-cker-Container. Das bedeutet, dass die Clients die Projekte nichtlokal, sondern ausschließlich zentral auf dem Server innerhalbvon Maschinen ausführen. Somit ist garantiert, dass jeder Clientauf der gleichen Basis entwickelt werden und keine zusätzlicheSoftware lokal installieren muss. Um stark divergenten Anfor-derungen von Projekten gerecht zu werden, sind die Maschinenflexibel und individuell anpassbar. Dabei lassen sich entwederContainer-Vorlagen – sogenannte Stacks – verwenden oder einkomplett neuer Container erstellen. Hierbei bieten sich alleMöglichkeiten, die beim Erzeugen eines normalen Docker-Con-tainers existieren.Ein Stack ist eine Kombination aus vorinstallierten Techni-

ken, was dem Benutzer Arbeit ersparen soll. Che gibt es bei-spielsweise 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, wo-durch sich vordefinierte Stacks auch im Nachhinein anpassenlassen. Zudem ist die Konfiguration von Maschinen ex- und im-portierbar, womit Entwickler komplexe Konfigurationen veröf-fentlichen und teilen können.

Was kann Che?

Eclipse Che wurde mit dem Google Web Toolkit (GWT) entwi-ckelt und ist eine Java-Applikation, die sich auf gängigen Appli-kationsservern wie Apache Tomcat oder GlassFish ausführenlässt. Bei der Entwicklung von Che wurde auf eine starke Erwei-terbarkeit und Flexibilität geachtet. Um sie zu gewährleisten, lie-fert Che ein umfangreiches SDK, das ebenfalls auf GWT basiert.Beim Erstellen der Maschinen wurde auf Docker gesetzt, was dieAdministration der Maschinen für den Benutzer stark vereinfacht.

Die Entwicklung von Projekten mit Che er-folgt innerhalb der IDE, die sich über gän-gige Webbrowser aufrufen lässt.Che ist mehr als nur eine IDE. Eine

umfangreiche Feature-Palette soll Ent-wicklern den Projektalltag vereinfachen.Die IDE hat den Ansatz, mehrere Benut-zer parallel auf dem gleichen Workspacearbeiten zu lassen. Kein Benutzer musszusätzliche Software auf seinem Systeminstallieren, und neue Projektmitgliederbenötigen lediglich den Link zu Che, umbei der Entwicklung mitwirken zu kön-nen. Derzeit ist noch keine Benutzerver-waltung vorgesehen, wodurch der Linkausreichend ist, um am Projekt arbeitenzu können. Durch die ex- und importier-bare Konfiguration von Workspaces undMaschinen lassen sich diese einfach per-sistieren und über Che-Instanzen hinwegwiederverwenden.Standardmäßig sind Workspaces tran-

sient. Das heißt, es wird nicht garantiert,dass die Umgebung nach einem Neustartden gleichen Zustand wie bei der letztenAusführung besitzt. Mit sogenannten Work-space Snapshots können Entwickler denZustand eines Workspaces persistieren undjederzeit reproduzieren, um beispielsweiseTests auf der exakt identischen Umgebungerneut auszuführen oder Fehler zu behan-deln. Die Workspaces verwaltet der Work-space Master über eine umfangreicheRESTful-Schnittstelle. Sämtliche Änderun-gen in der Browser-IDE an Maschinen oderProjekten werden über diese Schnittstellean die Workspaces weitergeleitet. Da dieSchnittstelle auch von außen erreichbar ist,werden sich in Zukunft umfangreiche Er-weiterungen wie eine Desktop-IDE entwi-ckeln lassen. Um Projekte möglichst schnell auf un-

terschiedlichen Systemen testen zu kön-nen, erstellt Che die Ausführungsumge-bung über Docker. Ein Workspace kannmehrere Container umfassen, wodurchsich ein Projekt auf mehreren Containern

Mit diesen Arbeitsschritten wird die Applikationsentwicklung in Eclipse Che durchgeführt (Abb.ˇ2).

Durch diesen modularen Aufbau verwaltet Eclipse Che Workspaces und Projekte(Abb.ˇ1).

Page 3: Eclipse Che – die IDE der Zukunft? - OIO · Die Idee einer Cloud-IDE ist nichts Neues. Es gibt bereits einige wie das kürzlich von AWS übernommene Cloud9, Codeanywhe-re und Nitrous,

ausführen lässt. Che installiert in jedem Container einen Work-space Agent, der eine SSH-Verbindung von außen zulässt oderDebugging von Projekten ermöglicht.

Che im Einsatz

Sämtliches Arbeiten mit der IDE wird über Weboberflächendurchgeführt, die mit den APIs des Servers kommunizieren.Abbildung 2 zeigt eine vereinfachte Darstellung des eigent-

lichen Workflows bei der Entwicklung mit Che. Der Serverstellt die IDE als Weboberfläche zur Verfügung, über die Ent-wickler Workspaces und Projekte verwalten und bearbeiten kön-nen. Jede Änderung wird über die REST-Schnittstelle zumWorkspace Master weitergeleitet. Er umfasst die Daten allerWorkspaces. Die Änderung wird vom Workspace Master regis-triert und direkt an den betreffenden Agent des Workspace wei-tergeleitet.Das Erstellen des Projekts erfolgt anhand eines umfangrei-

chen Wizards. Entwickler können Projekte entweder von Grundauf neu erstellen oder aus Git- oder GitHub-Repositories laden.Beim Start eines neuen Projekts liefert Che „Hello World“-Vor-lagen für diverse Programmiersprachen. Je nach gewählterSprache lässt sich eine Maschine mit entsprechenden vorinstal-lierten Technologien erstellen. Ist noch kein Workspace erstelltworden, können Benutzer einen neuen Workspace anlegen undfestlegen, wie viel RAM dieser benötigt. Nach der Eingabe ei-nes Namens wird das Projekt erstellt. Anschließend kann manden Work space des Projekts in der IDE öffnen.Die Abbildung 3 zeigt die IDE-Oberfläche. Der Knopf in der

linken oberen Ecke (siehe 1) führt den Benutzer zum Dashbo-ard, über das sich Workspaces und Projekte erstellen lassen. Dieobere Menüleiste (2) umfasst sämtliche Funktionen der IDE inAktionsmenüs unterteilt. Im Project Explorer (3) können dieProjekte als Baumstruktur durchlaufen und Dateien geöffnet

werden. Der Editor (4) zeigt die geöffneten Dateien an und dientihrer Bearbeitung Mit einer weiteren Menüleiste (5) lässt sichdirekt erkennen, auf welcher Maschine das Projekt ausgeführtwird. Zudem kann man die Art der Ausführung – also beispiels-weise normaler Vorgang oder Debugging – konfigurieren. Überden Start-Knopf (6) lässt sich das Projekt mit der selektiertenKonfiguration ausführen. Bei der Ausführung klappt der untereTeil (7) auf und bietet Informationen wie ein Log und weitereHinweise.Der wohl offensichtlichste Unterschied zu den traditionellen

Eclipse-Versionen ist die dunkle und schlicht gehaltene Ober-fläche. Eclipse Neon liefert zwar auch ein dunkles Theme, es istjedoch unter Windows nicht vollständig ausgereift ist. Vergleichtman den Funktionsumfang der Browser-Entwicklungsumge-bung mit den Möglichkeiten von IDEs wie Eclipse oder IntelliJIDEA, fehlen einige Features, die viele Entwickler als gegebenvoraussetzen dürften, um produktiv mit einer IDE arbeiten zukönnen:• Die Autovervollständigung bei geschweiften Klammern istnicht vorhanden.• Die Autovervollständigung ist per Tastenkombination aufzu-rufen und wird nicht automatisch angezeigt.• Die JavaScript-Standardbibliotheken (console.log(), alert()) sindnicht in der Autovervollständigung, die restliche JavaScript-Un-terstützung funktioniert jedoch gut.Um Projekte auszuführen, müssen meist umfangreiche Konfi-gurationen manuell angelegt werden. Vor allem beim Debuggingvon Java-Applikationen ist das Debugging vorher über einenkomplexen Kommandozeilenaufruf zu starten.

Beispiel für eine Workspace-Struktur

Im Folgenden wird eine Workspace-Struktur skizziert und aufihre Vor- und Nachteile eingegangen. Beim Beispiel geht es umein Softwareunternehmen, das verschiedene Kunden hat und zujedem Kunden mehrere Kundenprojekte.Eine Möglichkeit, Che-Instanzen und -Workspaces zu struk-

turieren, ist es, für jeden Kunden eine eigene Che-Instanz auf-zusetzen. Der Einsatz mehrerer Instanzen dient der Perfor-mance und Skalierbarkeit. Für einen Kunden können mehrereKundenprojekte existieren. Um sie zu untergliedern, wird fürjedes Kundenprojekt ein Workspace auf der entsprechenden

iX Developer 2016 3

Die Entwicklungs umgebung von Eclipse Che (Abb.ˇ3).

Programmiersprachen Java, C++, JavaScript, Python, PHP, Ruby, SQLFrameworks OpenShift, AngularJS, Docker, YeomanBuildtools Ant, Bower, Grunt, Gulp, Maven, npmSonstiges Git, Orion, SSH, Subversion

Unterstützte Programmiersprachen, Frameworks und Tools

Page 4: Eclipse Che – die IDE der Zukunft? - OIO · Die Idee einer Cloud-IDE ist nichts Neues. Es gibt bereits einige wie das kürzlich von AWS übernommene Cloud9, Codeanywhe-re und Nitrous,

Instanz angelegt. Werden für ein Kundenprojekt mehrere Ap-plikationsprojekte benötigt, lassen sich innerhalb des Kunden-projekt-Workspaces beliebig viele Projekte anlegen.Che sieht vor, dass mehrere Benutzer gleichzeitig auf einen

Workspace zugreifen und kollaborativ arbeiten. Da Projekte aufdedizierten Maschinen laufen, arbeiten alle Benutzer mit dergleichen Datenbasis. Das heißt, wenn ein Benutzer eine Dateibearbeitet, bearbeitet sie möglicherweise zeitgleich ein andereBenutzer bereits.Bearbeitet nun allerdings ein Benutzer eine Datei, speichert

und will das Projekt anschließend ausführen, kann es passieren,dass zwischen dem letzten Speichern und Ausführen ein andererBenutzer die Datei bearbeitet hat. Somit führt der Erste eine an-dere Version der Datei aus als die, die ihm angezeigt wird.Für die Zukunft ist eine Multi-Cursor-Funktion angekündigt,

über die man Änderungen aller Benutzer innerhalb einer Dateiin Echtzeit verfolgen kann. Viele kollaborative Plattformen, et-wa Google Docs, haben ein solches Feature, da es das gemein-same Arbeiten an einer Datei deutlich vereinfacht. Die Visuali-sierung der Cursor mehrerer Benutzer in Echtzeit bietetinteressante Möglichkeiten im Bereich Pair Programming,bringt allerdings auch neue Fragen mit sich:• Was passiert, wenn ein Benutzer einen Variablen- oder Metho-dennamen ändert, den ein anderer Benutzer gerade verwendet?• Was passiert, wenn ein Benutzer die Dateistruktur ändert oderDateien löscht, die ein anderer Benutzer verwendet?• Was passiert, wenn ein Benutzer Compilerfehler erzeugt undein anderer Benutzer gerade den Quellcode ausführen will?Muss der Benutzer warten, bis der Compilerfehler behobenist?• Wie können mehrere Benutzer auf unterschiedlichen Branchesarbeiten? Ist für jeden Branch ein eigenes Projekt zu erstellen?Eclipse Che wird standardmäßig für den lokalen Einsatz aus-geliefert. Das bedeutet, dass sich nach der Installation dieWorkspaces nur vom lokalen System erreichen lassen. DasVerhalten lässt sich jedoch umkonfigurieren, sodass auch ver-teilte Clients auf die Workspaces zugreifen können. Hierdurchkönnen Entwickler Che entweder auf einem Server innerhalboder außerhalb der eigenen Infrastruktur installieren.Da die Server-Applikation beliebig viele Workspaces verwal-

ten kann, die ihrerseits beliebig viele Maschinen enthalten, ist da-rauf zu achten, dass nicht zu viele Workspaces beziehungsweiseMaschinen auf dem gleichen Server zur gleichen Zeit ausgeführtwerden. Ein Workspace benötigt mindestens ein Gigabyte RAM.Die offizielle Dokumentation von Che liefert derzeit zwei Alter-nativen dafür, wie sich die Last zwischen Che-Instanzen verteilen

lässt. Die erste basiert auf einer Server-Farm mit mehreren Instan-zen. Über eine Nginx-Weiterleitung werden unterschiedlicheClients zu den zugehörigen Instanzen weitergeleitet. Hierdurcharbeiten die Benutzer auf unterschiedlichen Instanzen auf unter-schiedlichen Servern, und die Last wird verteilt.Ein weiterer Weg, Che zu skalieren, ist Codenvy. Das Werk-

zeug lässt sich, ebenso wie Che, im eigenen Intranet aufsetzenoder als Cloud-Dienst einkaufen. Die Benutzung von Codenvyfür Entwicklergruppen unter zehn Personen ist kostenlos.In Zukunft ist geplant, verteilte Docker-Container zu unter-

stützen. Das heißt, dass die Che-Server-Applikation und dieContainer auf unterschiedlichen Systemen laufen und sich somitebenfalls die Last auf mehrere Systeme verteilen lässt.

Fazit

Die Idee einer Cloud-IDE ist nichts Neues. Es gibt bereits einigewie das kürzlich von AWS übernommene Cloud9, Codeanywhe-re und Nitrous, die den gleichen Ansatz wie Eclipse Che verfol-gen. Alle setzen dabei auf Docker-Container zum Ausführen vonProjekten und Weboberflächen zur Konfiguration. Der größteVorteil, den Eclipse Che gegenüber den anderen Produkten lie-fert, ist, dass Che Open Source und stark erweiterbar ist. Durchdiese Eigenschaften wird es ständig weiterentwickelt, verbessertund mit neuen Features aufgerüstet. Gerade im Bereich Plug-in-Entwicklung sind diverse Projekte wie eine Desktop-IDE ange-kündigt, die Änderungen am Projekt über die REST-Schnittstel-le weitergibt.Derzeit sind noch einige Unschönheiten wie die Last-Write-

Wins-Politik zu finden, die bei der parallelen Bearbeitung vonDateien verwendet wird. Sie wird jedoch in Zukunft durch dieMulti-Cursor-Funktion ersetzt, was beispielsweise Pair Pro-gramming ermöglicht. Die Browser-IDE ist an einigen Stellennoch nicht ganz ausgereift, was allerdings aufgrund des Altersvon Eclipse Che verständlich ist. Außerdem sind Schwachstel-len an der IDE nicht sonderlich schwerwiegend, da in ersterLinie das Gesamtkonzept funktionieren muss. Erst danach soll-te das Augenmerk auf die Optimierung der IDE gelegt werden,denn wenn das Gesamtkonzept nicht funktioniert, hilft auchkeine gute IDE.Laut der Aussage von Tyler Jewell werden in naher Zukunft

die Performance und Features bei der Verwaltung von Work-spaces (Hoch- und Herunterfahren, Erstellen und Löschen) be-handelt und optimiert. Die Erweiterung der IDE-Funktionennennt er nicht.

Dennoch sollte man Eclipse Che definitiv im Auge be-halten. Das Grundkonzept, wenn auch nicht neu, verein-facht die Applikationsentwicklung deutlich, da sich dieAnwendungen direkt auf unterschiedlichen Systemenaufsetzen und testen lassen. Zusätzlich hilft das Konzeptbeim Einführen neuer Mitarbeiter in Projekten, da siekeine Software auf ihrem lokalen System installierenmüssen.

Loris BachertLoris Bachert arbeitet als Entwickler, Berater und Trainer bei OIO – Orientation in ObjectsGmbH in Mannheim und interessiert sich besonders für neue, moderne Technologien. Das angeeignete Wissen teilt er in Form von Artikeln, Blogposts, Vorträgen oder bei einer Tasse Kaffee gerne mit anderen. ⬛

4 iX Developer 2016

Ein Beispiel für eine Strukturierung der Workspaces mit Eclipse Che (Abb.ˇ4).