1 Einführung
Wer sich professionell mit Eclipse beschäftigt, dürfte recht schnell bemerken, dass es sich bei Eclipse um weit mehr als nur eine Entwicklungsumgebung für Java handelt. Mit Eclipse liegt in erster Linie ein Framework für Anwendungsentwicklung vor, eine vitale Open-Source-Community, die eine Vielzahl nützlicher Technologien bereitstellt. Dieses erste Kapitel gibt eine kurze Einführung in die Vielfalt von Eclipse, der Rich Client Platform (RCP) im Speziellen sowie seiner Weiterentwicklung zu Eclipse 4. Dabei wird insbesondere darauf eingegangen, warum man mit Eclipse 4 eine Art Neuanfang gewagt hat, und aus welchen grundlegenden Komponenten die neue Plattform besteht.
1.1 Was ist Eclipse?
Eclipse hat seit seinem ersten Erscheinen vor mehr als zehn Jahren einen erstaunlichen Reife- und Entwicklungsprozess erlebt. Ursprünglich als der Nachfolger der Software „Visual Age for Java“ von IBM, und zu Beginn auch nur als Entwicklungsumgebung konzipiert und gedacht, kam spätestens ab Version 2.x der große Durchbruch. Eclipse überzeugte die Mehrheit der Java-Entwickler und fand so seinen Platz auf Millionen Rechnern weltweit.
Der wohl mit Abstand bekannteste Teil von Eclipse ist das Integrated Development Environment (IDE) für Java – die Java Development Tools (JDT). Mit aktuell knapp 65 % Marktanteil ist Eclipse der Platzhirsch unter den IDEs. Benutzer schätzen den ausgefeilten Editor, den inkrementellen Compiler, die Auto Completion (CTRL+SPACE), den Quick Assist (CTRL+1) und die umfangreiche Refactoring-Unterstützung. Durch die hohe Verbreitung und die offene Architektur der JDT gibt es außerdem kaum eine relevante Technologie, die nicht in Eclipse eingebunden ist. So stehen für CVS, SVN, Git und viele andere Versionskontrollsysteme Integrationen bereit. Gleiches gilt für die Unterstützung von Frameworks wie Spring, Hibernate oder dem Google Web Toolkit (GWT). Seit Kurzem stellt Google mit dem Window Builder endlich auch einen UI-Editor zur Verfügung, der kaum Wünsche offen lässt. Und sollte doch etwas fehlen oder sollte es einmal nicht Java sein, Eclipse ist nicht nur eine Java-IDE, sondern ein IDE-Framework.
1.1.1 Eclipse ist ein IDE-Framework
Eines der Kernkonzepte von Eclipse ist seine modulare Architektur. Sie erlaubt das Hinzufügen und Entfernen von Features. Diese Features werden als Komponenten – in Eclipse „Plugins“ oder „Bundles“ genannt – bereitgestellt. Entfernt man die Java-Development-Tools-(JDT-)Komponenten, bleibt eine mächtige IDE zurück, die allerdings ziemlich unbrauchbar ist. Das volle Potenzial wird dann ausgeschöpft, wenn eine Unterstützung für andere Sprachen als Komponente hinzugefügt wird. Ein Beispiel sind die C/C++ Developer Tools (CDT), die sich ein Kopf-an-Kopf-Rennen mit Visual Studio um die beliebteste IDE für C liefert. Weitere Unterstützung gibt es für PHP (PDT), Fortran, sowie mit dem Dynamic Languages Toolkit Project (DLTK) für Sprachen wie Ruby, JavaScript oder Python. Die Eclipse Foundation bietet hierfür zahlreiche vorkonfigurierte IDE-Pakete zum Download an. Durch das Plugin-Konzept kann die eigene IDE aber auch den individuellen Wünschen angepasst werden und beispielsweise Java und C gleichzeitig unterstützen.
1.1.2 Eclipse ist eine Toolplattform
Eclipse wurde ursprünglich von IBM entwickelt. Dass der Name „Eclipse“ (Sonnenfinsternis) eine Spitze in Richtung Sun sein sollte, gehört wohl ins Reich der Mythen. Hauptkonkurrent im relevanten Bereich ist eindeutig Microsoft. Was vielleicht weniger bekannt ist: Das Ziel von Eclipse war nicht primär, eine neue Java-IDE zu schaffen. Vielmehr sollte mit Eclipse ein zum Ende des letzten Jahrtausends immer mehr auftretendes Problem gelöst werden: In den neunziger Jahren, mit dem Aufkommen von Technologien wie Java und dem Internet, wurde eine Reihe mächtiger Tools entwickelt. Allein IBM hatte mit Tools wie VisualAge for Java, dem WebSphere Studio oder WebFacing eine stetig wachsende Produktpalette - aus heutiger Eclipse-Sicht kaum mehr vorstellbar: Viele dieser Tools waren weitestgehend eigenständig entwickelt. Aus dem Blickwinkel des Benutzers gab es daher kein einheitliches Bedienkonzept und keine Möglichkeit, die Artefakte eines gesamten Projekts uniform und integriert zu verwalten.
Eclipse sollte verschiedene Tools zu einem konsistenten Ganzen integrieren, egal ob es sich um Code, Property-Dateien oder XML handelt. Aus Sicht des Toolherstellers war das Problem vielleicht noch drastischer. Ohne eine gemeinsame Basis der Tools mussten Features und Bug Fixes in mehreren Produkten und für mehrere Plattformen parallel gepflegt werden. Ein Beispiel für ein Feature, das fast die gesamte Produktpalette betrifft, ist die Integration eines neuen Versionsverwaltungssystems, wie das im Jahr 2000 erschienene Subversion. Und schließlich kosten die parallele Installation und Ausführung verschiedener Produkte auch Speicher. Für komplexe Entwicklungswerkzeuge damals, aber auch heute noch, ein wichtiger Faktor. So begann IBM im November 1998 mit der Entwicklung der Eclipse Platform.
Dass JDT von Anfang an eines der wichtigsten Teile von Eclipse war und heute noch ist, überrascht nicht. Zum einen war Java zur Geburtsstunde von Eclipse die wohl am stärksten wachsende Programmiersprache. Mit dem WebSphere Studio Application Developer, der Visual Age for Java ablöste, brachte IBM sein erstes kommerzielles Tool auf Basis von Eclipse auf den Markt. Zum anderen bietet JDT Support für die Entwicklung von Eclipse selbst, das eben auch in Java entwickelt wird. Heute, zehn Jahre später, existieren auf Basis von Eclipse Hunderte, wenn nicht Tausende von Tools verschiedenster Hersteller. Neben typischen Entwicklertools, wie den Data Tools für die Datenbankadministration oder den Web Tools für Webentwickler, gibt es auch zahlreiche Angebote außerhalb der reinen Softwareentwicklung. Mit den Business Intelligence and Reporting Tools (BIRT) erstellen Businessanalysten textuelle und grafische Auswertungen. Ein besonders stark wachsender Teil von Eclipse findet sich im Bereich Modellierung, bedingt durch den stabilen und pragmatischen Standard des Eclipse Modeling Frameworks (EMF). Der Eclipse Marketplace bringt seit Eclipse Helios Ordnung in diese Vielfalt und erlaubt es, über so genannte „Marketplaces“, ähnlich wie Apples AppStore, nach Lösungen zu suchen und diese komfortabel mit einem Klick in die eigene Eclipse-Installation zu integrieren. Der Yoxos Marketplace erlaubt das Testen ausgewählter Lösungen sogar direkt aus dem Browser.
Ein Grund für diesen enormen Erfolg dürfte neben der hervorragenden Java-IDE sicherlich auch die Tatsache gewesen sein, dass man die Plattform durch Plug-ins nahezu beliebig erweitern kann. Selbstverständlich stellen auch andere Entwicklungsumgebungen (etwa Visual Studio von Microsoft) ähnliche Möglichkeiten zur Verfügung. Die technische Umsetzung des Plug-in-Mechanismus rund um Extensions und Extension Points in Eclipse überzeugte allerdings so viele Entwickler, dass zahlreiche von ihnen recht schnell auf die Idee kamen, diese Technik auch als Grundlage für die eigene Anwendungsentwicklung einsetzen zu wollen.
1.1.3 Eclipse ist eine Anwendungsplattform
Die Eclipse-Community reagierte auf diesen Trend und stellte schließlich ab Version 3.0 mit einem radikalen Umbau ihrer Software und der Einführung von OSGi-Technologie die Weichen für die Rich Client Platform (RCP). Zu diesem Zeitpunkt wurde aus Eclipse, der IDE, also eine Plattform für die Entwicklung von Rich-Client-Anwendungen. Die bis heute immer weiter verbesserte Java-Entwicklungsumgebung, die bereits weiter oben erwähnten Java Development Tools (JDT) wurden in diesem Zuge konsequent in einen Satz Plugins ausgelagert. Damit ist die Java-IDE ebenfalls „nur“ eine Rich-Client-Anwendung, die auf Basis der RCP läuft. Seit Erscheinen der Rich Client Platform konnte sich die Technologie schnell etablieren und wird heute in unzähligen Projekten weltweit erfolgreich eingesetzt1.
Ein sehr frühes, aber immer noch prominentes Beispiel einer Adaption von Eclipse RCP findet sich bei der NASA. Im Jet Propulsion Lab (JPL) wird RCP bereits seit 2005 eingesetzt, beispielsweise für Maesto, ein Tool, mit dem Mars Rover gesteuert werden können.
Schnell kamen weitere Frameworks hinzu, die das Entwickeln mit RCP zusätzlich unterstützen. Riena beispielsweise ist ein Framework für Client-Server-basierte Geschäftsanwendungen. Riena Widgets, so genannte „Ridgets“, erweitern SWT um typische Businessanforderungen wie beispielsweise die Livevalidierung der Eingabe. Zusätzlich unterstützt Riena den Workflow eines UI sowie die Client/Server-Kommunikation. An dieser Stelle verlassen wir über eine fließende Grenze den Bereich Rich Client. In Wirklichkeit ist Eclipse technologisch gesehen so flexibel, dass es für ziemlich jeden Zweck eingesetzt werden kann. Daher haben auch viele, die gar nichts mit Softwareentwicklung zu tun haben, bereits die Eclipse-Technologie verwendet, ohne es zu wissen. So steckt Eclipse beispielsweise in den automatischen Kartenlesern von SkiData, die in vielen Skigebieten, aber auch bei Konzerten und Sportveranstaltungen, eingesetzt werden. Welcher Teil von Eclipse ist das aber, denn ein solcher Automat sieht nicht gerade nach SWT aus? Den Kern von Eclipse bildet eine Komponente namens Equinox, die Basis für alle Plug-ins. Equinox erlaubt den verschiedenen Komponenten von Eclipse, zusammenzuarbeiten. Es verwaltet Abhängigkeiten zwischen Plug-ins, und je nach Bedarf lädt, startet und beendet es dynamisch verwendete Funktionalität und erlaubt sogar, zur Laufzeit benötigte Komponenten nachzuinstallieren. Neben Komponenten verwaltet...