Eclipse bekommt Flügel: IDE-Provisionierung 2.0
Welcher Softwareentwickler kennt das nicht? Ein neues Projekt steht an, ein neuer Eclipse-Workspace muss eingerichtet werden. Da gilt es, das richtige Eclipse-Package zu beschaffen, die erforderlichen Plug-ins und Repositories zu finden und obendrein das gesamte Setup mit den Teamkollegen abzustimmen. Dabei können schon mal mehrere Tage ins Land ziehen, bevor man tatsächlich produktiv mit der IDE arbeiten kann. Dieser Artikel zeigt, mit welchen Open Source- bzw. kostenlosen Tools sich die zeitraubende projektspezifische Eclipse-Einrichtung automatisieren und auf wenige Mausklicks verkürzen lässt.
Konfigurierst Du noch oder programmierst Du schon?
Stellen Sie sich vor, Sie kommen als Java-Entwickler in ein spannendes neues Softwareprojekt. Sie können es gar nicht erwarten, in die Tasten zu greifen und Ihren Code beizusteuern. Doch dann trübt sich die Vorfreude, denn Sie erinnern sich: Bevor Sie produktiv arbeiten können, werden Sie sich wie üblich mit lästigen Konfigurationsarbeiten herumschlagen müssen. Die haben Ihre Geduld schon bei manch anderem Projekteinstieg auf die Probe gestellt. Entwickelt wird mit Eclipse. Also fragen Sie – nicht anders kennen Sie es aus früheren Projekten – zunächst den Projektleiter, welches Package, welche Plug-ins und Repositories Sie benötigen, um Ihre IDE und den Workspace für das Projekt einzurichten.
Ein allzu bekanntes Szenario, ist Eclipse doch nach wie vor die meistgenutzte Entwicklungsumgebung weltweit. Jeder, der die IDE verwendet, weiß um ihre Mächtigkeit, aber auch, dass an vielen Stellen Verbesserungsbedarf besteht. Entwickler, die in ein neues Projekt einsteigen, können ein Lied davon singen, denn bereits die projektspezifische Einrichtung der IDE erweist sich als wahre Produktivitätsbremse. Mühsam müssen die Setup-Informationen für den Workspace zusammengetragen werden. Oft vergehen dabei mehrere Tage wertvoller Arbeitszeit, bevor man loslegen kann. Doch das alles muss nicht sein. Denn mittlerweile gibt es mehrere Open Source-Projekte, die darauf abzielen, Projektstarts mit Eclipse zu automatisieren und dadurch zu beschleunigen, etwa die Provisionierungs-Tools Eclipse Oomph und oasp4j-ide. Yatta Profiles for Eclipse ist ein weiteres, öffentlich und frei verfügbares Tool, das auf Oomph basiert und neben einer automatisierten Workspace-Einrichtung auch das Teilen von Setup-Informationen in Form von Profilen ermöglicht. Im Folgenden möchten wir alle drei Tools vorstellen.
oasp4j-ide
Bei oasp4j-ide [1] handelt es sich um ein Open Source-Tool zum automatisierten Aufsetzen von IDEs in Java-Projekten. Das Projekt ist Teil der OASP4J-Plattform (Open Application Standard Platform for Java), die wiederum einen Architekturstandard, einen Best-of-Breed-Technologiestack sowie bewährte Praktiken und Code-Konventionen für einen cloudfähigen, springbasierten Server bereitstellt.
oasp4j-ide bietet eine isolierte Entwicklungsumgebung auf Dateibasis. Nach dem KISS-Prinzip ("Keep It Small and Simple") hat das Projektteam bewusst auf eine tiefe Integration mit einzelnen Technologien verzichtet. So wird gewährleistet, dass das Tool mit jeder neuen Version von Java, Eclipse, Maven, Angular usw. funktionsfähig ist. oasp4j-ide stellt Konfigurations-Templates für die verschiedenen Tools zur Verfügung, die der Project Owner je nach Bedarf anpassen kann. Diese individuellen Templates werden an das verwendete Versionskontrollsystem (VCS) committet. Die Entwickler erhalten dann ein Update vom jeweiligen VCS. Ein einziger Klick auf das Skript genügt, um die Einstellungen in allen Workspaces zu aktualisieren. Nutzer können (und sollten) die UI und die persönlichen Einstellungen anpassen.
Software-Package, Script-Package, IDE-Settings
Um mit oasp4j-ide zu arbeiten, muss der Nutzer ein Software-Package erstellen, also eine einfache ZIP-Datei, die die folgende Struktur aufweisen sollte:
- software
- eclipse
- java
- maven
- tomcat
- …
Für jedes Tool wird also ein eigener Ordner innerhalb des Software-Ordners angelegt, der nach ihm benannt ist. Dabei ist es wichtig, bei Kleinbuchstaben zu bleiben und auf Großbuchstaben zu verzichten. Enthält ein Tool-Ordner einen bin-Unterordner, setzt oasp4j-ide diesen automatisch an den Anfang der PATH-Variablen in der Shell. Dadurch erfordern die Tools keine tatsächliche Installation auf das Betriebssystem. Auf demselben Rechner können so mehrere oasp4j-ide-Instanzen für unterschiedliche Projekte ausgeführt werden (Stichwort Multitenancy), ohne sich gegenseitig zu beeinträchtigen. Dass die Tool-Ordner keine Versionsnummern enthalten, ist beabsichtigt. Hintergrund ist, dass die Konfigurationen die Tools über deren Pfad referenzieren und die Software-Pakete jederzeit problemlos aktualisierbar sein sollen.
Die meisten Tools lassen sich einfach in ihrer aktuellen Version in das oben gezeigte Datei-Layout einfügen, so dass sich beispielsweise folgende Struktur ergibt: software/maven/bin/mvn (statt software/maven/apache-maven-3.2.0/bin/mvn). Bei Eclipse gibt es einige Besonderheiten zu beachten. Eine detaillierte Schritt-für-Schritt-Anleitung findet sich in der Dokumentation [2].
Kern von oasp4j-ide ist ein Script-Package [3], eine Sammlung von Skripten, die ebenfalls in einer einfachen ZIP-Datei namens oasp4j-ide-scripts-<version>.zip bereitgestellt werden und sich lokal ausführen lassen. Hier können u. a. die nutzerspezifischen Einstellungen abgelegt werden [4].
Das Software-Package ZIP hat den Nachteil, dass der User keine eigenen Änderungen vornehmen kann, ohne dass diese bei einem Update (neues ZIP) überschrieben werden oder umständlich händisch nachgezogen werden müssen.
Die dritte Komponente, die man benötigt, um mit oasp4j-ide arbeiten zu können, sind die IDE-Settings [5], also die projektspezifischen Einstellungen, die in das VCS eingecheckt werden. Als Einstieg kann man die vom Projektteam zur Verfügung gestellten Settings verwenden, die als Script-Package zum Download bereitstehen [6]. Unter Windows empfiehlt es sich, beim Extrahieren ein Extract-here-Feature, beispielsweise von 7-Zip, zu verwenden. Das ZIP-Programm des Windows Explorers kann bei längeren Dateinamen Probleme verursachen. Sobald alle Komponenten vorhanden sind und ein neues Projektverzeichnis erstellt wurde, erfolgt die "Installation" von oasp4j-ide in wenigen unkomplizierten Schritten [7].
oasp4j-ide unterstützt die Arbeit mit mehreren parallelen Workspaces für verschiedene Branches. Neue Workspaces können mit nur wenigen Klicks erstellt und aktualisiert werden. Der Name des aktiven Workspaces findet sich in der Titelzeile der IDE. Ein Nachteil von oasp4j-ide ist, dass dabei ein ZIP-Paket verwendet wird. So kann der Anwender keine eigenen Änderungen machen, ohne dass diese bei einem Update (welches ein neues ZIP bedeutet) überschrieben werden.
Eclipse Oomph
Oomph [8] ist ebenfalls ein Open Source-Projekt, das unter dem Dach der Eclipse Foundation entwickelt wird. Es wurde 2014 auf der EclipseCon Nordamerika aus der Taufe gehoben. Die Provisionierungstechnologie zielt darauf ab, ein speziell auf ein Eclipse-Entwicklungsprojekt zugeschnittenes Setup per Konfiguration zusammenzustellen. Dazu gehören z. B. installierte Plug-ins, Einstellungen, Repositories oder Projekte im Workspace. Der gesamte Installationsprozess zur projektgebundenen Einrichtung der IDE, inklusive der nutzerspezifischen Einstellungen und der bevorzugten Werkzeuge, wird somit automatisiert. Dadurch bringt Oomph – getreu seinem Namen – Schwung ins Eclipse-Projekt.
Im Kern besteht Oomph aus einer modellbasierten Setup-Engine, die die verschiedenen IDE-Einrichtungstasks übernimmt. Eine vollkommen automatisierte Erstellung eines Profils ist allerdings nicht möglich – ein Wizard begleitet den Nutzer zwar Schritt für Schritt durch den Installationsprozess und merkt sich die Einstellungen für den nächsten Projektstart, fordert ihm aber bei erstmaliger Verwendung recht viel kleinschrittige manuelle Arbeit ab. Dieser Ansatz hat den Vorteil, dass sich die Konfiguration sehr feingranular festlegen lässt.
Oomph bietet auch die Möglichkeit, Konfigurationen entlang von Hierarchien zu vererben. So ist Oomph also ein mächtiges Werkzeug, allerdings mit einer recht steilen Lernkurve, das eher für Eclipse-Experten als für den durchschnittlichen Nutzer geeignet ist. Darüber hinaus hat Oomph keine einfache Lösung parat, wenn es darum geht, externe Abhängigkeiten (wie von Java oder Maven) zu installieren. Hier bietet oasp4j-ide mehr Möglichkeiten.
Yatta Profiles for Eclipse
Yatta Profiles for Eclipse [9] setzt auf Oomph auf – die Entwickler der Yatta Profiles sind gleichzeitig als Committer im Eclipse-Oomph-Projekt tätig. Mit Yatta Profiles sind sie einen Schritt weitergegangen und haben eine kostenlose und frei verfügbare Out-of-the-box-Lösung kreiert, die ein einfaches und schnelleres Starten, Verwalten und Teilen individueller Eclipse-Workspace-Konfigurationen ermöglicht.
Während Oomph auf eine feingranulare Konfiguration abzielt, liegt der Fokus bei Yatta Profiles eher auf den Sharing-Funktionen und damit auf der Teamarbeit in Eclipse-Projekten: Projektspezifische Setups lassen sich im Handumdrehen in der Cloud speichern und per E-Mail oder Social Media mit anderen Projektmitgliedern teilen. Die sogenannten Profile müssen dann nur noch mit einem Klick heruntergeladen werden – und richten Eclipse automatisiert ein. Das vereinfachte Teilen und Einrichten soll auch die Einstiegsbarriere für die Nutzung des Tools senken.
Darüber hinaus steht mit dem eHub [10] eine öffentlich zugängliche Plattform zur Verfügung, auf der vorkonfigurierte Eclipse-Setups hinterlegt und heruntergeladen werden können, um sie mit der Community zu teilen. Bei einem Profil handelt es sich, kurz gesagt, um ein Paket aus Setup-Daten, die ein automatisches Einrichten von Eclipse und Workspace ermöglichen. Einerseits lassen sich Profile herunterladen, andererseits kann aus einem laufenden Profil heraus ein "Schnappschuss" erstellt werden, der dann wiederum mit anderen Entwicklern geteilt werden kann.
Bestandteil der Yatta Profiles ist der Launcher, eine leichtgewichtige Desktop-App und zugleich der zentrale Ort, von dem aus alle Eclipse-Profile eingesehen, verwaltet und geteilt werden können. Teilen und bearbeiten lässt sich ein Profil aber auch direkt aus der Eclipse-IDE heraus: Ein Klick auf das Raketen-Icon in der Menüleiste öffnet ein entsprechendes Dropdown-Menü (s. Screenshot).
Unterschiede zwischen den Tools
Die Stoßrichtung aller drei hier vorgestellten Projekte ist ähnlich: Alle verfolgen das Ziel, das Aufsetzen einer brandneuen Eclipse-Umgebung zu automatisieren bzw. übertragbar zu machen. Alle sind innerhalb eines relativ kurzen Zeitraumes entstanden. Wie bereits gesehen, hat jedes Tool allerdings auch eigene Charakteristika: oasp4j-ide ist insgesamt sehr flexibel und tolerant, was die Verwendung verschiedener Technologien und Softwareversionen betrifft. Es kann isolierte Entwicklungsumgebungen im Prinzip mit allen Binaries deterministisch provisionieren: Maven, Java, NodeJS usw. Allerdings bietet es nur rudimentäres Tooling, um Eclipse-Einstellungen zu teilen. Da es konsolen- bzw. dateibasiert ist, stellt es keine UI bereit, um Setups zu starten oder zu verwalten. So verliert man schnell den Überblick über die verschiedenen Eclipse-Versionen – und es entsteht unter Umständen ein Wildwuchs. Darüber hinaus ist das Tool systemabhängig (Architektur, Betriebssystem) und es ist schwierig, neue Präferenzen zu den "Managed Preferences" hinzuzufügen.
Eclipse Oomph ist ein mächtiges Tool zur Eclipse- und Workspace-Provisionierung. Vorgefertigte Konfigurationen lassen sich installieren, Quellcode klonen und Projekte importieren. Beim erstmaligen Einrichten werden die Nutzerpräferenzen aufgezeichnet, was den Installationsprozess bei nachfolgenden Installationen beschleunigt. Allerdings muss man eine steile Lernkurve durch die kleinschrittige manuelle Konfiguration in Kauf nehmen.
Yatta Profiles for Eclipse basiert auf dem Oomph-Projekt, legt den Fokus aber auf das Teilen von Profilen und weniger auf die feingranulare Konfiguration, die bei Oomph im Vordergrund steht. Es verfolgt eher einen Top-down-Ansatz. Anders als die anderen beiden Tools ist es nicht Open Source, aber frei verfügbar ("free as in free beer").
Fazit
Wer wie wir und Millionen von Entwicklern weltweit jeden Tag mit der Eclipse IDE arbeitet, kennt neben ihren Vorzügen auch ihre Stolpersteine und Produktivitätsbremsen nur allzu gut. Fakt ist aber auch: Eclipse ist und bleibt die meistgenutzte Entwicklungsumgebung für professionelle Softwareentwicklung weltweit. Schon allein dank ihres lebendigen Ökosystems, das Eclipse zu weit mehr als einer IDE macht. Mehrere hundert Mitgliedsunternehmen und mehr als 1.500 Committer tragen zu rund 300 Open Source-Projekten bei, die der offenen Technologie-Plattform angehören. Sie gewährleisten Unabhängigkeit von einzelnen Software-Komponenten, die nicht Open Source sind.
In vielen Bereichen der Eclipse-IDE ist allerdings noch reichlich Luft nach oben. Das beginnt schon beim Aufsetzen eines neuen Entwicklungsprojekts. Die Einrichtung des Workspaces und die manuelle Installation unzähliger Plug-ins stellt sich in der Praxis leider oft als wahre Produktivitätsbremse heraus. Hier setzen Tools wie oasp4j-ide, Eclipse Oomph und Yatta Profiles for Eclipse an, die alle darauf abzielen, durch ein automatisiertes Aufsetzen der IDE Entwicklern den Einstieg in ein neues Projekt zu erleichtern. Sie alle sind kostenlos verfügbar und können sofort ausprobiert werden. Im Übrigen schließen sie sich keineswegs gegenseitig aus – im Gegenteil: Yatta Profiles basiert auf Oomph und oasp4j-ide lässt sich problemlos auch in Kombination mit Yatta Profiles verwenden.