Im Reich der Workspaces

Wie Eclipse-Evangelist Wayne Beaton sein Eclipse einrichtet

Wayne Beaton

Eclipse hat sich als Plattform für die verschiedensten Aufgaben etabliert. So zum Beispiel, um Eclipse Rich Client Platform-Applikationen oder die verschiedensten Plug-ins zu entwickeln. Es ist aber auch möglich, Eclipse als Plattform zur Entwicklung mit PHP, XML, CSS, HTML oder Ähnlichem zu entwickeln. Wayne Beatons „My Personal Eclipse“-Erfahrungen bedeuten verschiedene Workspaces, verschiedene Eclipse-Versionen im Einsatz – unter Verwendung verschiedener Eclipse-Projekte wie EMF, Web Tools, PHP und Mylar.

Mein „Arbeits“-Workspace

Mein „Arbeits“-Workspace enthält eine Kopie der von der Eclipse Foundation kontrollierten Teile der eclipse.org-Website. Das umfasst auch die Teile der Seite, die ich selbst verwalte, zum Beispiel die Eclipse-Corner-Artikel, verschiedene Ressourcen, Screenshots und einiges andere mehr. Das meiste sind hier PHP-, XML-, HTML- und Grafik-Dateien. Ich habe auch eine Kopie von dev.eclipse.org und phoenix.eclipse.org in diesem Workspace, zusammen mit einem Projekt, das eher administratives Zeug enthält, inklusive Berichte über Spesenabrechnungen (Excel Spreadsheets) und andere Dokumente.

Der Arbeits-Workspace läuft auf der letzten Release-Version von Eclipse. Momentan ist das die Version 3.2.1, aber sobald 3.2.2 zur Verfügung steht, werde ich ein Upgrade vornehmen. Und wenn die Version 3.3 rauskommt, erhöhe ich dann eben auf die. Ich nutze das Eclipse Web Tools Project (WTP) zum Aufbereiten all meiner XML-, XSL-, CSS- und HTML-Daten. Zum Aufbereiten von PHP-Code verwende ich das Eclipse PHP Development Tools Project (PDP).

Ich halte es für sehr praktisch, wenigstens eine Eclipse-Konfiguration auf dem aktuellen Release-Level zu haben. Ich verbringe eine Menge Zeit damit, in der eclipse.newcomer-Newsgroup (news:news.eclipse.org/eclipse.newcomer) und in anderen Foren Fragen zu Eclipse zu beantworten. Viele der Fragen beziehen sich auf die Release-Version, und da hilft mir die Tatsache, dass ich die aktuelle Version habe, dabei, die für die Antworten notwendigen Experimente durchführen zu können.

Lokal teste ich meinen PHP-Code, indem ich meiner lokalen Apache-Konfiguration virtuelle Hosts hinzufüge, die genau den entsprechenden Projekt-Directories in meinen Workspaces entsprechen. Auf diese Weise kann ich den Code sofort und direkt in meinen Workspaces testen, bevor ich ihn „live“ an den Webserver übergebe. Im Augenblick machen Syntax Highlighting, Code Assist und die Integration mit der von PDT zur Verfügung gestellten Ouline View das Schreiben von PHP-Code erträglich (allerdings nicht annähernd so schmerzfrei wie das Schreiben von Java-Code). Ich muss mittlerweile nicht mehr so viel Zeit in das PHP Debugging investieren, da ich weiß, dass das in den letzten Monaten, seit ich zuletzt nachgesehen habe, stark verbessert wurde.

Ich habe nicht vor, eine Menge von Images zu modifizieren, aber ich muss sie sehen, also habe ich mein eigenes Image Viewer Plug-in [2] gebaut, das ich extensiv nutze. Ich habe mein eigenes Plug-in in erster Linie gebaut, um Erfahrung mit dem Eclipse Adapter Framework zu sammeln.

Zurzeit besteht das Image Viewer Plug-in aus einem Paar von Paketen: das erste stellt das Kernstück der Image-Viewing-Funktionalitäten zur Verfügung, inklusive der aktuellen View, die sich in der Workbench manifestiert. Diese Kern-Funktionalität weiß nichts über das API der Ressourcen oder über irgendetwas jenseits des Kerns von Eclipse und der User-Interface-Komponenten. Der Image Viewer nutzt den Selection Service der Workbench [3], oder genauer, er zeigt ein Image für jedes ausgewählte Objekt. Der Image Viewer selbst weiß jedoch nicht, wie er ein Image aus der aktuellen Auswahl abrufen soll. stattdessen bittet er den Adapter Service, ihm ein Objekt zur Verfügung zu stellen, das weiß, wie man ein Image aus der aktuellen Auswahl erhält. Wenn der Adapter Service ein solches Objekt zur Verfügung stellen kann – und dieses Objekt in der Lage ist, ein Image abzurufen -, wird dieses Image angezeigt. Das zweite Paket stellt die Verbindung zwischen dem Image Viewer und dem API der Ressourcen zur Verfügung. Dieses Paket enthält eine Klasse, die Files anpassen und dem Image Viewer die entsprechenden Images zur Verfügung stellen kann.

Hierin liegt die Stärke. Mit Eclipse ist er sehr gut möglich, Features zu entwickeln, die eng in ihr User Interface integriert, in der Implementierung aber nur lose gekoppelt sind. Das Paket mit dem Image Viewer weiß nichts über Files, dennoch kann es die entsprechenden Images anzeigen (mit ein wenig Hilfe des Bundles, das ein klein wenig über beides weiß).

Ich habe nicht viel mit Web Tools zu tun, um mehr über ihre Mächtigkeit sagen zu können, da ich in meiner momentanen Position nicht so viel mit Java EE-Application-Servern arbeite. In meinem vorherigen Job habe ich aber Web Tools benutzt, um Applikationen zu bauen und zu testen, die auf Tomcat oder anderen kommerziellen Java EE-Application-Servern liefen.

Ich habe die Absicht, die Eclipse Data Tools in den Mix zu integrieren, damit sie mir beim Managen meiner lokalen MySQL-Instanz helfen. Ich arbeite nicht viel mit Datenbanken, also hat das eine ziemlich niedrige Priorität. Außerdem habe ich vor, mir die Target Management-(TM-)Features [4] des Device Software Development Platform-(DSDP-)Projekts genauer anzusehen, mit denen man Files per Secure Copy (SCP) übermitteln kann.

Ich kann natürlich nicht ohne Mylar [5] „leben“. Ich nutze Mylar extensiv, um die eingereichten Eclipse-Corner-Artikel und die Bugzilla Issues zu sichten, die diejenigen Teile der Website adressieren, für die ich verantwortlich bin. Mylar verbindet die PHP- und HTML-Files, mit denen ich arbeite, mit dem Task, was es für mich sehr einfach macht, von einem Kontext zu einem anderen zu wechseln. Ich habe die Gewohnheit, über den Tag hinweg an einer Menge unterschiedlicher Aufgaben zu arbeiten, und Mylar hat dieses Hin und Her zwischen verschiedenen Kontexten sehr vereinfacht. Ich verwende Mylar auch, um Reiter beim JIRA-Bug-Tracking-System des Apache Harmony-Projekts [6] zu halten.

Mein „Projekt“-Workspace

Mein „Projekt“-Workspace ist der, in dem ich an Beispielcode und an Experimenten bastle. Ich lasse den letzten stabilen Build von Eclipse für diesen Arbeitsbereich laufen, aktuell ist das Eclipse 3.3 M4. Diese Konfiguration enthält auch eine sehr große Anzahl von Features inklusive EMF, EMF Technology (EMFT) [7], GMF, GEF, WTP, Eclipse Monkey [8], ECF und den Visual Editor (VEP). Mylar ist auch dort installiert, und ich mache auch hier extensiven Gebrauch davon.

Wie ich vorhin schon gesagt habe, nutze ich meinen „Projekt“-Workspace für Beispielcode. Die meisten Beispiele sind Eclipse RCP-Anwendungen. Ich habe einen Rich Client gebaut, der das API von eBay Web Services nutzt, um mit den eBay-Servern zu kommunizieren und Auktionsdaten zu erhalten. Ich habe auch ein Sudoku-Spiel implementiert, als Task Manager, und ich arbeite an einem Asteroiden-Spiel, das möglicherweise irgendwann sogar in der Öffentlichkeit zu sehen sein wird. In allen Fällen handelt es sich bei den Beispielanwendungen, die ich gebaut habe, um eigene Plattformen, die erweitert werden können. Das Sudoku-Spiel enthält beispielsweise Extension Points, die man dazu nutzen kann, zusätzliche Puzzle-Anbieter und -Löser zu bauen. Der Task Manager hat einen Extension Point, der genutzt werden kann, zusätzliche Backends zur Aufbewahrung von Task-Informationen zu bauen. Die eBay-Anwendung kann um alternative Auktionsanbieter erweitert werden. Das Asteroiden-Spiel hat einen Extension Point, mit dem man neue Typen von Space Junk zufügt, auf die man dann schießen kann.

Eines der Dinge, die ich an der Eclipse RCP am liebsten mag, ist die „angeborene“ Erweiterbarkeit, die sie den Entwicklern bietet. Man kann Anwendungen als Plattformen bauen, die ganz einfach erweitert werden können, ohne dass der Plattform-Code selbst geändert werden muss.

Ich habe in meinem „Projekt“-Workspace eine Reihe von Target-Plattformen definiert, und ich wechsle zwischen ihnen (wobei ich die Plug-in Development Environment Preferences verwende), wenn es nötig ist. Ich habe beispielsweise ein Eclipse RCP-Version 3.2.1 Target, das ich für Projekte verwende, die ich noch nicht migriert habe, ein RCP-Version 3.3 M4 Target für neue Projekte und die, die ich schon migriert habe, und ein eRCP [9] Target für einige eingebettete Arbeiten, die ich kürzlich gestartet habe. Diese Targets werden mit Runtime-Komponenten von Eclipse-Projekten wie EMF und GMF geladen, außerdem enthalten sie einige „gebündelte“ JAR-Dateien wie Apache Derby und das API der eBay Web Services.

Meine Erfahrung in Sachen Migration von RCP-Applikationen zwischen den Eclipse-Versionen ist bislang sehr positiv. Nicht öffentliche APIs nutze ich aus Prinzip nicht, und so war der Einfluss neuer Versionen auf meine RCP-Applikationen vernachlässigbar. Tatsächlich glaube ich, dass ich größere Probleme gehabt hätte, zwischen Versionen von Java zu migrieren, als das bei Versionen von Eclipse RCP der Fall ist.

Für den Großteil meiner Arbeit verwende ich EMF. Ich habe kürzlich damit angefangen, GMF und GEF als Teil einiger neuen Beispiele zu verwenden, aber, wie gesagt, damit habe ich gerade erst angefangen. Ich nutze den Visual Editor, um die komplizierteren Wizard-Seiten und Views zu bauen. Ich habe mich ein bisschen damit beschäftigt, ECF in mein Sudoku-Spiel zu integrieren, um es mehreren Usern zu ermöglichen, ein Rätsel gleichzeitig zu lösen. Ich nutze ECF auch als Instant Messaging Client.

Ich habe gerade erst begonnen, mit den Mobile Tools for Java (MTJ) [10] zu arbeiten, aber bisher sind meine Erfahrungen damit sehr gut. Da die Voraussetzungen für MTJ sehr spezifisch sind, habe ich eine komplette, getrennte Eclipse-Konfiguration und Workspaces dafür. Ich denke, das ist nur eine vorübergehende Situation; irgendwann werde ich MTJ in meine „Projekt“-Konfiguration mit aufnehmen. Im Moment nutze ich die MTJs, um kleine Java ME-Anwendungen zu entwickeln. Bislang hatte ich noch keine Zeit, eine eRCP-Beispielanwendung zu bauen, aber das ist etwas, was ich später in diesem Jahr noch machen will.

Mein „persönlicher“ Workspace

Mein „persönlicher“ Workspace tendiert – ebenso wie mein „Projekt“-Workspace – hin zum letzten stabilen Build von Eclipse, hinkt aber oft ein bisschen hinterher. Leider habe ich bei weitem nicht so viel Zeit für meine privaten Projekte, wie ich gerne hätte. Ich nutze meinen persönlichen Workspace dazu, eine Hobby-Website zu betreiben, gemeinsam mit einem Projekt, das den Einfluss von EMF misst und das ich bald als Open Source zur Verfügung stellen möchte.

Ich habe alle meine ständigen Workspaces in meiner Home Diretory, und zwar in einem Unterverzeichnis namens „Workspaces“ (seltsam genug ;-)). Temporäre Workspaces habe ich in einem Geschwister-Verzeichnis der Eclipse-Konfiguration. Die ständigen Workspaces an einem allgemeine Ort zu haben, macht nur an einem Punkt Sinn: Wenn ich auf eine neue Version von Eclipse upgrade, dann nutze ich einfach den alten Workspace noch einmal. Wenn man die Workspaces an einem gut definierten Ort hält, ist das ziemlich einfach. Die meisten Leute, mit denen ich gesprochen habe, haben damit gute Erfahrungen gemacht. (Ich habe es so verstanden, dass John Arthorne seit Version 1.0 exakt denselben Workspace benutzt.) Gelegentlich baue ich mal einen neuen Workspace, aber wirklich nur sehr selten.

Ich habe ständig mindestens fünf verschiedene Versionen von Eclipse auf meiner Workstation installiert. Wenn man die zahlreichen Linux VMWare Images, die ich habe, noch dazu rechnet, dann schnellt diese Zahl erheblich in die Höhe. Wie gesagt, ich habe immer die letzte Version des Eclipse-Release installiert, zusammen mit dem letzten stabilen Build. Gelegentlich installiere ich mal einen Integrations-Build und teste ihn, aber wirklich nur sehr selten. Ich nutze Eclipse für sehr viel mehr als nur zum Programmieren von Java oder zum Programmieren überhaupt. Ich nutze Eclipse, um meine Arbeit zu managen. Eclipse managt – mit ein bisschen Hilfe von CVS – meine Spesenabrechnungsberichte, Mylar managt meine Tasks und ECF stellt mir meinen Instant Messaging Client (oder jedenfalls einen davon) zur Verfügung. Wenn ich jetzt noch einen netten Mail-Client finden würde, der auf Eclipse läuft …

Geschrieben von
Wayne Beaton
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.