Anwender der in Java geschriebenen Entwicklungsumgebung Eclipse dürfen in jedem Juni auf eine neue Version hoffen, die einen astronomisch inspirierten Namen trägt – dank der Version 4.6 ist das auch im Jahr 2016 nicht anders. Der zugehörige Artikel beantwortet auch die Frage, was Neon mit Trabanten verbindet.
Nachdem Eclipse 4.5 den Codenamen Mars trug und so, anders als die Vorgänger, nicht mehr nach einem Mond hieß, nennt sich Version 4.6 nach dem Edelgas Neon. Das kommt interessanterweise häufig auf Monden vor, ist auf der Erde aber eher von grellen Leuchtröhren bekannt. Zahlenfixierte könnten bemängeln, dass Neon die chemische Ordnungszahl 10 trägt, während es sich bei der aktuellen Release ([1], [2]) um die elfte Eclipse-Iteration handelt.
Da Eclipse nicht nur eine IDE, sondern auch eine Plattform für weitere Projekte ist, etwa für das IoT-Projekt Paho [3], profitieren auch andere von den Neuerungen ([4], [5]) der aktuellen Ausgabe, die der Artikel im Detail vorstellt.
Mehr Code, mehr Arbeit
Gegenüber dem Vorjahr hat sich die Zahl der an der Release beteiligten Eclipse-Unterprojekte um fünf auf 84 [6] erhöht, zugleich ist die Codebasis auf 69 Millionen Zeilen angewachsen. Das bedeutet nicht nur, dass die Entwickler sehr fleißig waren. Der viele Code erhöht auch den Aufwand für das Testen und Koordinieren. Genau dabei will die Eclipse-Stiftung [7] helfen, die neben den Finanzen und Lizenzen auch die Infrastruktur für solche Großprojekte bereitstellt.
Als gutes Zeichen für eine funktionierende Open-Source-Community lässt sich bewerten, dass die Arbeit an Eclipse auf vielen Schultern ruht: Die Mehrzahl der an der Release beteiligten Entwickler steht nicht auf der Gehaltsliste der Stiftung. Deren Flaggschiff bleibt aber, trotz der zahlreichen Projekte in Bereichen wie Modellierung, IoT oder Cloud, die Eclipse IDE (Abbildung 1).
Plattform
Eclipse Neon gibt es als 32- und 64-Bit-Varianten für Windows 10, Linux, OS X 10.11, aber auch für AIX oder Solaris. Diese Varianten bietet die Eclipse-Stiftung jedoch nicht direkt zur Installation an. Vielmehr paketiert sie Eclipse für die Programmiersprachen C/C++, Java, Java EE und neuerdings auch für Javascript [8] sowie für PHP.
Wer Eclipse um zusätzliche Funktionen erweitern möchte, rüstet diese meist später über Plugins nach. Dank der Abwärtskompatibilität des Eclipse SDK 4.6 laufen mehrheitlich auch die Erweiterungen der Vorgängerversion. Als Mindestvoraussetzung brauchen alle Varianten eine separate Java-SE-8-VM. Über die Einstellungen kompilieren Entwickler auch ältere Java-Versionen.
Was gibt’s Neues?
Neu ist unter anderem, dass die PHP Development Tools (PDT 4.0) jetzt auf PHP 7 setzen. Neben kleineren Verbesserungen haben die Entwickler zudem an der Performance von Neon geschraubt. Dabei half der schon in der Vorgängerversion eingeführte Client für Automated Error Reporting (Aeri). Er vereinfacht es, Eclipse-Fehler zu erfassen und zu melden, und trägt so zu einer besseren Produktqualität bei. In Eclipse Neon lässt sich der Aeri-Client auch für Plugins von Dritten oder eigene RCP-Anwendungen einsetzen.
Das Docker-Tooling-Plugin (Abbildung 2, [9]) aus dem Linux-Tools-Projekt, das Docker-Images und -Container mit einem Explorer verwaltet, haben die Macher ebenfalls optimiert. Die Eclipse Tools for Cloud Foundry 1.0.0 [10] unterstützen die Arbeit mit der gleichnamigen PaaS-Plattform oder mit darauf basierenden Plattformen wie IBM Bluemix.
Code-Reviews führen Entwickler gern mit Gerrit durch. Das erhält nun Unterstützung durch ein neues E-Gerrit-Plugin [11]. Dank des Buildship-Projekts erwartet Eclipse-Nutzer zudem ein offizielles Plugin für das Buildwerkzeug Gradle [12], es bietet sich Android- oder Javascript-Projekten als moderne Alternative zu Maven oder Ant an.
Die Funktion »Smart Import« (»File | Import | General | Projects from Folder or Archive« ) importiert Projekte ohne Eclipses ».project« -Datei. Eclipse erkennt dann die in der »pom.xml« -Datei definierten Bibliotheken und Verzeichnisse und erzeugt die nötigen Ressourcen. Alternativ wählt der User einen Projektordner aus und ruft per Rechtsklick aus dem Kontextmenü den Eintrag »Configure | Configure and Detect Nested Projects« auf.
Die Aussicht
Gegenüber den Vorgängerversionen fallen zuerst das poppigere Logo und der Willkommensschirm ins Auge. Hier kündigt sich auch das neue Solstice-Theme an, das der Nutzer den eigenen Wünschen entsprechend anpasst. Es lässt sich etwa durch das Eclipse Color Theme (Appearance »sublime Text 2« ), das Clean Theme oder Eclipse Moonrise UI Theme ersetzen. Auch die Scrollbars passen endlich zu diesen dunkleren Themes.
Die Java Development Tools (JDT) unterstützen nun hochauflösende Bildschirme sowie die GTK3-Bibliothek unter Linux. Mit dem Kurzbefehl [Alt]+[F11] switcht der Eclipse-Nutzer zwischen Vollbildmodus und Normaldarstellung.
Editor erweitern
Eine seit den Anfängen ersehnte Funktion ist der automatische Zeilenumbruch. Er ist jetzt an Bord, wenn auch ausgeschaltet, er lässt sich aber über [Alt]+[Shift]+[Y] aktivieren.
Editor-Inhalte speichert Eclipse nun automatisch nach einem festen Zeitintervall. Dazu muss der User diese Einstellung über »Preferences | General | Editors | Autosave« aktivieren. Als gerade unter Windows sehr nützlich entpuppt sich die Möglichkeit, die Größe der Editor-Fonts automatisch mit [Ctrl]+[+] zu vergrößern oder über [Ctrl]+[-] zu verkleinern. Das erleichtert die Lesbarkeit bei Präsentationen oder beim Paarprogrammieren.
Null Fehler
Nullpointer-Exceptions sind in Java schwer zu diagnostizieren, da sie erst zur Laufzeit auftreten. Hierfür bietet Neon zwei hilfreiche Erweiterungen: Gibt der Entwickler »if« ein, zeigt ihm Eclipse die Codevorlagen für »ifNotNull« (»! = null« ) und »ifNull« (»== null« ) an, mit denen er die nötigen Überprüfungsbedingungen erzeugt. Alternativ nimmt der Java-Kompiler eine Nullpointer-Überprüfung für Generics vor (»Java Compiler | Errors/Warnings | Null Analysis: Improved null analysis with generics« ).
Für lokale Variablen fügt der Kurzbefehl [Ctrl]+[1] die so genannte »@NonNull« -Annotation ein. Versieht der Entwickler beispielsweise beim Aufruf von »java.util.Map.get(K)« die Parametertypen mit der »@NonNull« -Annotation, vermeidet er Nullpointer-Exceptions (Abbildung 3).
NPM im Schlepptau
Eine der am dringendsten benötigten Erweiterungen sind die Javascript Development Tools (JSDT, [13]). Red Hat übernahm das seit Langem verwaiste Projekt und führte eine Unterstützung für das aktuelle Ecma-Script 2015 (ES6) ein [14]. Dadurch kommt Eclipse mit aktuellen Javascript-Bibliotheken wie Angular JS oder Typescript zurecht, die eine statische Typisierung nutzen.
Zudem unterstützt Eclipse nun die beliebten und für effektive Javascript-Entwicklung benötigten Paketverwaltungstools Bower [15], den Node Package Manager [16] sowie die Buildtools Grunt [17] und Gulp [18]. Ein eigener Editor bearbeitet des beliebte Json-Format. Zugleich bietet Eclipse Neon einen auf den Chrome Devtools beruhenden V8-Debugger für Node.js-Anwendungen an.
Um die in der Datei »package.json« definierten und benötigten Javascript-Bibliotheken zu laden, ruft der Entwickler einfach den Node Package Manager (»npm« ) mit »Run As | npm install« auf. Analog klappt das für Bower (»bower.json« ) oder Grunt (»gruntfile.js« ). Die aufgerufenen Javascript-Werkzeuge muss er jedoch separat installieren und in der Pfadvariablen verfügbar machen.
Mit den JSDT in Version 2.0 verkleinert Eclipse endlich die Lücke zu den konkurrierenden Werkzeugen, die beim Entwickeln von Anwendungen mit Javascript, HTML und CSS helfen.
Bleibt noch Java
Als Ablaufumgebung benötigt Eclipse eine Java-Runtime-Version. Sie soll auch Dateien für ältere Java-Versionen übersetzen. Wer bereits mit einem Modul-basierten Java 9 experimentieren möchte, braucht nicht nur das aktuell noch als Beta geführte Eclipse-Java-9-Support-Plugin, sondern muss auch in der Datei »eclipse.ini« die Parameter »-vmargs« und »-addmods java.se.ee« ergänzen, um die nötigen Java-Module zu laden.
Wer den Java-Batch-Compiler für die JSP-Kompilierung in Apache Tomcat separat ausprobieren möchte, lädt die Datei herunter und führt sie aus mit:
java -jar org.eclipse.jdt.core_3.12.0. v20160601-1504_BETA_JAVA9.jar
Dass Google die Android Development Tools (ADT) nicht mehr weiterentwickelt, wirkt sich indes positiv aus. Mit Andmore [19] gibt es ein Nachfolgeprojekt, das Teil des Neon Release Trains ist.
Keine Spione
Das Eclipse-Projekt Oomph (Abbildung 4, [20]) bietet eine Option, um Nutzereinstellungen aufzunehmen und sie zwischen Workspaces zu teilen. Auch Neon sah ursprünglich eine Möglichkeit vor, die Aktionen des Entwicklers aufzuzeichnen, um dadurch später das Eclipse-UX zu verbessern. Die an sich gute Idee stieß jedoch nicht bei allen Entwicklern in der Community auf große Gegenliebe. Nach einem heftigen Commiter-Protest wurde die UUID-Funktion (Universally Unique Identifier) wieder aus den Neon-Vorversionen entfernt [21].
Ausblick
Für die klassische Java-EE- und C++-Entwicklung bleibt die Eclipse IDE der Standard. Der Bereich Cloud (Orion [22], Che [23]) sowie IoT (Paho [3]) spielen jedoch eine immer wichtigere Rolle. Hier erfüllt die Eclipse Foundation nicht nur als Anbieter einer IDE, sondern auch von Bibliotheken und Infrastruktur eine wichtige Aufgabe.
Es bleibt spannend, ob die Eclipse-IDE Synergie-Effekte aus ihrem Ökosystem nutzen kann. Vergleicht man sie mit modernen und leichtgewichtigen IDEs wie MS Visual Code, Sublime oder dem Atom-Editor, hat Eclipse mit Neon zwar etwas aufgeholt, entwickelt sich jedoch nach wie vor nicht so schnell weiter wie die Wettbewerber.
Die für 2017 geplante Eclipse-Version 4.7 setzt mit Oxygen [24] jedenfalls wieder auf einen luftigen Namen. Bis dahin will die Eclipse-Community mindestens drei Service Packs ausliefern, die nicht nur Fehlerkorrekturen enthalten sollen. Da die Plugins der Vorgängerversion auch mit Neon lauffähig sind, dürfte sich Neon mit seinen populären Erweiterungen oder Plugin-Sammlungen [25], etwa von Jboss oder Spring, schnell verbreiten. Dank der kleinen, aber feinen Änderungen lohnt ein Upgrade auf die neue Version auf jeden Fall.
Infos
- Eclipse Neon: http://www.eclipse.org/neon/
- Projektplan: http://www.eclipse.org/eclipse/development/plans/eclipse_project_plan_4_6.xml
- Paho: https://eclipse.org/paho/
- Neuerungen: http://www.eclipse.org/eclipse/news/4.6/
- Ausführliche Release Notes: https://www.eclipse.org/eclipse/development/readme_eclipse_4.6.php
- Die Eclipse-Subprojekte im Überblick: https://projects.eclipse.org/releases/neon
- Eclipse Foundation: https://eclipse.org/org/foundation/
- Eclipse 4.6 zum Download: https://www.eclipse.org/downloads/
- Eclipse Docker Tooling: https://wiki.eclipse.org/Linux_Tools_Project/Docker_Tooling
- Cloud Foundry: https://marketplace.eclipse.org/content/eclipse-tools-cloud-foundry
- E-Gerrit: https://www.eclipse.org/egerrit/
- Gradle-Plugin: http://projects.eclipse.org/projects/tools.buildship
- JDT: https://eclipse.org/jdt/
- Zu Bower, »npm« und dem Json-Editor: http://eclipse.org/community/eclipse_newsletter/2016/may/article1.php
- Bower: https://bower.io
- NPM: https://www.npmjs.com
- Grunt: http://gruntjs.com
- Gulp: http://gulpjs.com
- Andmore: https://projects.eclipse.org/projects/tools.andmore
- Oomph: https://projects.eclipse.org/projects/tools.oomph
- UUID-Bugreport: https://bugs.eclipse.org/bugs/show_bug.cgi?id=495484
- Orion: https://wiki.eclipse.org/Orion
- Che: https://eclipse.org/che/
- Oxygen: https://bugs.eclipse.org/bugs/show_bug.cgi?id=483685
- Frank Pientka, “Eignungstest”: Linux-Magazin 08/15, S. 30.










