Warum mit Eclipse entwickeln?

Autor:
Kristian Köhler
Orientation in Objects GmbH
Kristian Köhler
Kristian Köhler
Datum:Juli 2002

Abstrakt

Der vorliegende Artikel stellt die Entwicklungsumgebung Eclipse vor und zeigt einige ihrer Vorzüge. Insbesondere werden einzelne Features im Gesamtkontext eines professionellen Entwicklungsprozeß diskutiert.

Motivation

Für professionelles Entwicklungsumfeld ist eine leistungsstarke integrierte Entwicklungsumgebung, kurz IDE, unverzichtbar. Doch die Auswahl einer solchen Entwicklungsumgebung ist nicht einfach, da auf dem Markt recht viele kommerzielle wie auch freie Lösungen angeboten werden. Eine strategische Entscheidung auf Basis von "schon mal gehört" oder "das habe ich irgendwann schon mal gesehen" sollte genauso wie eine reine "Bauchentscheidung" auf jeden Fall vermieden werden.

Eine "falsche" Entscheidung bei der Auswahl einer adäquaten IDE kann eventuell den Gesamterfolg eines Projekts gefährden!

Eclipse

Das Eclipse Projekt ist ein Open Source Projekt, das sich der Entwicklung einer robusten und umfassenden Entwicklungsplattform verschrieben hat, die für den kommerziellen Einsatz tauglich ist. Das Grundgerüst Projektes bildet die Eclipse Plattform, die eine erweiterbare auf Java basierende IDE darstellt. Sie zeichnet sich neben ihren eigenen Features durch einen starken Integrationscharakter aus, der das Einbinden externer Tools ermöglicht. Im folgenden sollen die markantesten Features von Eclipse aufgezeigt werden.

Architektur

Eclipse ist eine Plattform, die von Grund auf zur Erstellung integrierter Web- und Anwendungswerkzeuge entwickelt wurde. Sie stellt von Hause aus "nur" einen kleinen Leistungsumfang in Form von Basisfunktionalität und Anwendernavigation zur Verfügung. Die eigentlichen Features werden sogenannte Plug-ins zur Verfügung gestellt.

Dieses relativ schlanke Design ermöglicht es die Plattform für verschiedensten Anwendungsgebiete einzusetzen und nicht ausschließlich als Entwicklungswerkzeug zu verwenden. Viele Hersteller sind dazu übergangen eigene Produkte auf der Eclipse Plattform aufzubauen bzw. Erweiterungen für diese zu entwicklen.

Die frei über die Eclipse Homepage herunterladbare Version beinhaltet schon sehr viele für den Java Entwicklungsprozeß nützliche Plugins, die die Plattform als professionelle Java Entwicklungsumgebung einsetzbar machen. Über diverse Plug-in Homepages lassen sich zusätzliche Erweiterungen wie z. B. Datenbankanbindung oder kleinere Spiele für Zwischendurch herunterladen.

Perspectives

Die Eclipse Plattform "sieht" Projekte in logischen Sichten, die als Perspectives bezeichnet werden. In einer Perspective werden zusammengehörige Ansichten, Editoren sowie Menü und Toolbareinträge definiert und miteinander verbunden. So gibt es z. B. eine Debugging Perspective, in der alle zum Debugging benötigten Ansichten, wie z. B. Debugger-Ausgabe zusammengefasst sind.

Perspectiven werden immer für eine bestimmte Aufgabe verwendet. Möchte man z. B. Java Quelldateien editieren, so wird man die Java Perspective verwenden, möchte man Anwendungen debuggen, so wird man die Debug Perspective verwenden.

Die in der frei verfügbaren Version enthaltenen Features sollen im folgendenkurz vorgestellt werden.

Leistungsstarker Editor

Für eine gute Java Entwicklungsumgebung ist ein leistungsfähiger Editor unverzichtbar. Eclipse liefert mit dem "eingebauten" Java Editor ein sehr umfangreiches und leistungsstarkes Werkzeug. Im folgenden sollen nun ein paar Features des Editors vorgestellt werden.

Eclipse Editor
Der Eclipse Editor

Fehleranzeige

Der gerade editierte Quelltext wird in Eclipse während des Speichervorgangs übersetzt und auftretende Fehler werden im Quelltext sofort markiert. Diese können auf diese Weise schnell lokalisiert und verbessert werden. Sämtliche Fehler werden zusätzlich in einer Ürsichtstabelle dargestellt und es kann schnell an die jeweilige Stelle gesprungen werden.

Fehleranzeige im Eclipse Editor mit Glühbirne
Fehleranzeige im Eclipse Editor mit Glühbirne

Fehleranzeige im Eclipse Editor (fehlender try-catch Block) Fehleranzeige im Eclipse Editor (fehlender try-catch Block)

Für jeden markierten Fehler können Tool Tips mit der Beschreibung des Fehlers angezeigt werden.

Try-catch Blöcke

Fehlende try-catch Blöcke lassen sich recht komfortabel über die Option "Surround with try/catch block" einfügen. Nach dem Markieren des entsprechenden Codeblockes werden alle Exceptions, die in diesem Block entstehen können, mit dem jeweiligen Catch-Statements gefangen.

Beispiel:
out.write(documentStartString, 0,
		  documentStartString.length());
out.flush();

wird zu

try {
  out.write(documentStartString, 0, documentStartString.length());
  out.flush();
} catch (IOException e){

}

Organize Imports

Über die Option "Organize Imports" lassen sich die Import Statements automatisch verwalten. Fehlende Statements werden (richtig sortiert!) eingefügt, überflüssige werden aus dem Kopfbereich der Quelldatei wieder entfernt. Somit behält man stehts den Überblick über die benötigten Klassen. Standardmäßig werden bis zu 99 Einzel- Import Statements aufgeführt bis Wildcards verwendet werden. Dieses Verhalten läßt sich natürlich konfigurieren.

Quick Fix

Nach einem Doppelklick auf eine Fehlermarke schlägt Eclipse Fehlerbeseitigungsmöglichkeiten vor. Wird z. B. im Code die Behandlung einer Exception nicht berücksichtigt, so werden zwei Möglichkeiten vorgeschlagen:

Hat man sich in einem Methodennamen vertippt werden passende Alternativen vorgeschlagen.
Beispiel:
Getippter Methodenname writ
Vorschlag von Eclipse: write (natürlich muss es die Methode write geben!)

Vorschlag zur Beseitigung von Fehlern (Quick Fix)
Vorschlag zur Beseitigung von Fehlern (Quick Fix)

Code Templates

Jede Entwicklungsumgebung stellt heutzutage eine Tag-Completion Möglichkeit zur Verfügung. Tippt ein Anwender den Anfang eines Statements, werden sofort mögliche Vervollständigungen angeboten. In Eclipse können so normale Java Statements sowie JavaDoc Kommentare und eigene "Code-Templates" eingefügt werrden. Auf diese Weise läßt sich der Editor recht schnell an die eigenen Tippgewohnheiten anpassen und erweitern. Diese Code Templates lassen sich darüberhinaus als XML Datei exportieren und bei anderen Anwendern wieder importieren.

Natürlich bietet Eclipse in diesem Zusammenhang auch die Möglichkeit Methoden zum Überschreiben von Basisklassenmethoden zu generieren und Getter-/ Setter- Zugriffsmethoden für Attribute zu erzeugen.

Navigation

Um sich in größeren wie auch in keineren Projekten zu recht finden zu können sind weitgehende Navigationsmöglichkeiten unerläßlich. Eclipse bietet hier sehr umfangreiche Funktionen.

Über die Java Browsing Perspective kann man so z. B. recht schnell an beliebige Stellen im Code springen.

Java Browsing Perspective
Java Browsing Perspective

Suchfunktionalit

Zusätzlich zu den Navigationsmöglichkeiten bietet Eclipse noch eine sehr gute Suchfunktionalität die sich über einen Suchdialog anstoßen läßt. Es kann in "normalen" Textdateien, Hilfsdateien oder Java Quelltextdateien gesucht werden. Innerhalb der Java Dateien hat man unter anderem die Möglichkeit nach Deklarationen einzelnen Klassen oder Attribute, Referenzen auf Klassen oder speziellen Methoden zu suchen. Die Ergebnisse werden in einer Liste dargestellt, und können somit leicht angesprungen werden.

Eclipse Such Dialog
Eclipse Such Dialog

Umfangreiches Refactoring Modul

Martin Fowler beschreibt Refactorings als îderungen an der internen Struktur von Software für das bessere Verständnis und eine größere Wartbarkeit ohne ihre "eigentliche Funktionalität zu ändern. Refactorings scheinen auf den ersten Blick überflüssig zu sein, da sie der Anwendung keine neue Funktionalität hinzufügen bzw. sie erweitern. Sie dienen allerdings dazu die Lesbarkeit des Codes zu erhöhen und somit Designverbesserungen zu ermöglichen. In gut lesbarem Code lassen sich natürlich auch Fehler viel besser lokalisieren und ausbessern.

Eclipse bietet mit einem umfangreichen Refactoring Modul ein mächtiges Werkzeug für den effektiven Einsatz von Refactorings in der Praxis. Mit ihm lassen sich "Standard-Refactorings" leicht durchführen. So ist z. B. das Refactoring "move method" so implementiert, daß man den zu extrahierenden Codeblock markiert und in einem kontextsensitiven Menü die Option auswählt. Anschließend erhält man eine Voransicht und man kann sich entscheiden, ob, und in welchem Umfang, dieses Refactoring durchgeführt werden soll oder nicht. Selbstverständlich werden die richtigen Methodensignaturen für extrahierte Methode vorgeschlagen.

Voransicht des Refactorings 'extract method'
Voransicht des Refactorings "extract method"

CVS Unterstützung

In Softwareprojekten, in denen mehr als ein Entwickler gleichzeitig an einem Projekt arbeitet, ist eine Versionsverwaltung für Quellcode notwendig. Bei CVS (Concurrent Versions System) handelt es sich um ein Open Source Werkzeug, das in vielen freien und kommerziellen Projekten mit Erfolg eingesetzt wird.

Mit Eclipse bekommt man einen leistungsstarken und für das professionelle Umfeld einsetzbaren CVS Client, mit dem man sehr leicht Module auschecken und bearbeiten kann. Wie schon aus dem Refactoring Modul bekannt lassen sich alte und neue Versionen leicht gegenüberstellen und vergleichen.

CVS Ansicht in Eclipse
CVS Ansicht in Eclipse

Debugger

Mit Hilfe eines Debuggers läßt sich ein Programm an einer bestimmter Stelle anhalten und die Ausführung des Codes zeilenweise weiterverfolgen. In manchen Situationen ist das Vorhandensein eines Debuggers sinnvoll und eine Ergänzung für den Entwicklungsprozeß

Die Debug Perspective in Eclipse stellt umfangreiche Debugging-Funktionalität zur Verfügung und ermöglicht eine gute Übersicht üben den aktuellen Zustand der virtuellen Maschine. Durch die Evaluierung von Einzelstatements oder eine Überprüfung von Attributen lassen sich viele weitere Informationen über die VM erhalten. Eclipse bietet, wie fast jede andere IDE, natürlich auch eine Möglichkeit zum Remote Debugging, die besonders bei Server Anwendungen hilfreich sein kann.

Debug Perspective
Debug Perspective

JUnit Unterstützung

Tests während der Softwareentwicklung sind ein wichtiges Instrument für Qualitätssicherung. Mit ihnen lassen sich die Qualität der Software erhöhen und Wartungskosten, die über eine längere Laufzeit bzw. Weiterentwicklungszeit entstehen, minimieren. Aus diesen Gründen sollte eine IDE die leichte Integration von Testwerkzeugen ermöglichen.

In Eclipse ist das Einbinden eines eigenen Testwerkzeuges allerdings nicht nötig, da schon von hause aus eine sehr gute Unterstützung des freien Unit Test Frameworks JUnit "mitgeliefert" wird. Über Wizards lassen sich Testfälle erstellen und diese über kontextsensitive Menüs ausführen. Testberichte werden grafisch aufbereitet und dem Anwender präsentiert.

JUnit Wizard
JUnit Wizard

Ant Unterstützung

Eine solide Buildumgebung ist ein Grundpfeiler der Softwareentwicklung. Jedes Projektmitglied sollte zu jeder Zeit in der Lage sein das Projekt auf seinem Rechner ohne Probleme bauen zu können. In der Praxis hat sich gezeigt, daß das Binden an Tools einzelner Entwicklungsumgebungen sich als kontraproduktiv erweisen kann, da durch ihren Einsatz ein eventuell nötig werdender "Umgebungswechsel" nicht mehr möglich ist bzw. nicht gleichzeitig verschiedene Plattformen unterstützt werden können. In der OpenSource Bewegung hat sich im Java Umfeld das sehr mächtige und frei verfügbare Build Tool Ant durchgesetzt, welches selbst auf Java basiert und mit dessen Hilfe plattformunabhängig Java Quellen übersetzt werden können.

In Eclipse findet man eine umfassende Unterstützung dieses "externen" Buildwerkzeuges. So lassen sich die einzelnen "Bauziele" (tasks) mit Hilfe eines Wizards auswählen und ausführen. Die Ausgabe der Meldungen erfolgt in einem Übersichtsfenster und informiert über den aktuellen "Bauzustand". Die Integration von Ant ist, wie schon die JUnit Unterstützung, als "external tool" gelöst.

Ant Integration
Ant Integration

Externe Tool Einbindung

Die meisten Entwicklungsprozesse erfordern externe Tools. So müssen eventuell Serveranwendungen gestartet und die entwickelte Anwendung deployed werden. Oft ist der "Wechsel in das Betriebssystem" nötig um eine externe Anwendung zu starten. Eclipse bietet hier die Möglichkeit externe Programme einzubinden um so z. B. Serverprozesse zu starten bzw. zu beenden. Aber auch externe Tools wie JUnit oder Ant lassen sich problemlos in die Entwicklungsumgebung integrieren.

Selbst in Java geschrieben

Was liegt näher als eine Java Entwicklungsumgebung in Java zu implementieren?

Java hat den weitverbreiteten Ruf langsam zu sein. Das dies nicht so sein muß zeigt Eclipse. Eclipse basiert vollständig auf Java und benutzt im Unterschied zu vielen anderen auf Java basierenden Entwicklungsumgebungen keine Swing Klassen, sondern ein palttformabhängiges "Windowing Toolkit" (SWT), welches auf die jeweilige Plattform optimiert ist. Das SWT ist für alle gängigen Plattformen erhältlich und macht Anwendungen, die darauf basieren, wieder platformunabhängig.

Referenzen

Eclipse Homepage
(http://www.eclipse.org/)

Übersicht Eclipse Plug-ins
(http://www.eclipseplugincentral.com/)

Zum Geschaeftsbreich Competence Center
Online Artikel
Newsletter abonnieren