paper - Business Informatics Group

Transcrição

paper - Business Informatics Group
TU Wien
Business Informatics Group
Institut für Softwaretechnik und Interaktive Systeme
Moderne Softwareentwicklungsumgebungen
Evaluierung Java-basierter Ansätze
Magisterarbeit zur Erlangung des akademischen Grades eines
Magisters der Sozial- und Wirtschaftswissenschaften
eingereicht bei o. Univ.-Prof. Mag. Dipl.-Ing. Dr. Gerti Kappel
mitbetreuender Assistent: Mag. Manuel Wimmer
Michael Wihsböck
Wien, 1. März 2007
Eidesstattliche Erklärung
Ich erkläre an Eides statt, dass ich die vorliegende Arbeit selbständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen nicht benützt und die den benutzten Quellen wörtlich oder inhaltlich entnommenen Stellen als solche kenntlich
gemacht habe.
Wien, 1.3.2007
Michael Wihsböck
Danksagung
Ich möchte mich bei o. Univ.-Prof. Mag. Dipl.-Ing. Dr. Gerti Kappel für die Möglichkeit bedanken, dass ich diese Arbeit am Institut für Softwaretechnik und Interaktive Systeme durchführen durfte. Besonderer Dank gilt ebenfalls Mag. Manuel
Wimmer sowie Mag. Michael Strommer für die umfassende Betreuung. Weiters
möchte ich mich bei meinen Eltern für die moralische und finanzielle Unterstützung
während meines Studiums bedanken.
Kurzfassung
In den letzten Jahrzehnten durchlief die Softwareentwicklung eine eindrucksvolle
Evolution. Anfang der 1960er Jahre begann die kommerzielle Softwareentwicklung
mit primitiven Assemblerinstruktionen, kurz darauf folgten bereits die ersten Hochsprachen. In den 1990er Jahren setzte sich schließlich die objektorientierte Softwareentwicklung durch. Nun scheint diese Evolution ihre Fortsetzung durch modellgetriebene Ansätze zu finden. Diese Ansätze versuchen die objektorientierte Programmierung durch grafische Modelle zu ergänzen, und so auch die Software allgemeiner
zu gestalten, um gegebenenfalls auch die eigentliche Programmiersprache ersetzen
zu können. Durch die Arbeit mit diesen neuen Techniken müssen die entsprechenden
Entwicklungsumgebungen zwangsläufig komplexer werden. Reichten zur Entwicklung mit Assembler bzw. frühen Hochsprachen noch ein einfacher Texteditor in
Kombination mit einem Compiler oder Linker, so wurden bei objektorientierten
Sprachen großteils bereits umfangreiche integrierte Entwicklungsumgebungen eingesetzt.
In dieser Arbeit sollen die Möglichkeiten gängiger integrierter Entwicklungsumgebungen anhand eines erstellten Kriterienkatalogs bewertet werden. Die Produkte
werden hinsichtlich ihrer Möglichkeiten in den Bereichen Programmierung, Modellierung, Softwarequalitätssicherung, Erweiterbarkeit und Bedienung evaluiert.
Es wurden bei den Produkten sowohl Vertreter aus dem kommerziellen, als auch
dem freien (Open Source) Umfeld für die Entwicklung mit der Programmiersprache
Java gewählt. Diese Arbeit konzentriert sich bei den Untersuchungen auf die Entwicklungsumgebungen Eclipse 3.2, Netbeans 5.5, JBuilder 2006 und IntelliJ IDEA
6.0. Eine Partnerarbeit, die zeitgleich am Institut von Florian Skopik [Sko07] durchgeführt wurde, beschäftigt sich mit C++/C# Entwicklungsumgebungen. Da der Kriterienkatalog unabhängig von den untersuchten Entwicklungsumgebungen ist, wurde
dieser Teil gemeinsam erstellt und ist in beiden Arbeiten vorhanden.
Abstract
Software development went through an impressive evolution in the last decades. In
the 1960ies the commercial software development started with primitive assembler
instructions, shortly followed by the first high-level programming languages. In the
last decade the object-orientated software development became generally accepted.
Now this evolution seems to find their continuation by model-driven approaches.
These new methods try to do object-orientated programming more general by
graphic models and allow a replacement of the specific programming language.
When working with these new techniques the appropriate development environments
must become inevitable more complex. For the development process with assembler
and early high-level programming languages a simple text editor in combination
with a command line based compiler or link ewer mostly adequate. However, the use
of object-orientated programming languages has lead to quite complex development
environments.
In this work the possibilities of usual integrated development environments are
evaluated on the basis of a provided catalogue of criteria. The products are evaluated
regarding their possibilities within the ranges programming, modelling, software
quality control, extensibility and usability.
Both, product representatives from the commercial and also from the open source
sector, for the development with the programming language Java, were selected.
This work concentrates in its analysis on the development environments Eclipse 3.2,
NetBeans 5.5, JBuilder 2006 and IntelliJ IDEA 6.0. A partner thesis, which was accomplished at the same time at the department by Florian Skopik [Flo06], is occupied with C++/C# development environments. Since the catalogue of criteria is independent of the examined environments, this part was provided together and is present in both works.
Inhaltsverzeichnis
1 Einleitung ........................................................................................................... 1
1.1 Motivation für diese Arbeit .................................................................. 1
1.2 Behandelte Fragestellungen.................................................................. 3
1.3 Gliederung der Arbeit........................................................................... 3
2 Kriterienkatalog.................................................................................................. 5
2.1 Editor .................................................................................................... 5
2.1.1 Codeeditor ................................................................................ 5
2.1.2 User Interface Designer............................................................ 7
2.1.3 Refactoring............................................................................... 9
2.1.4 Sprachunterstützung............................................................... 10
2.1.5 Entwurfsmuster ...................................................................... 11
2.1.6 Aufbau der Arbeitsumgebung ................................................ 11
2.2 Modellierung ...................................................................................... 12
2.2.1 Unified Modeling Language .................................................. 12
2.2.2 Model Driven Architecture .................................................... 14
2.2.3 Forward Engineering.............................................................. 14
2.2.4 Reverse Engineering .............................................................. 15
2.2.5 Roundtrip Engineering ........................................................... 15
2.3 Programmierung ................................................................................. 15
2.3.1 Compiler und Programmiersprachen ..................................... 15
2.3.2 Mitgelieferte Klassenbibliotheken und Frameworks ............. 16
2.3.3 Middleware und Komponentenstandards............................... 16
2.3.4 Klassenbibliotheken und Komponenten von Drittanbietern .. 17
2.3.5 Internationalisierung von Anwendungen ............................... 17
2.3.6 Datenbankprojekte ................................................................. 17
2.3.7 Webentwicklung .................................................................... 18
2.3.8 Entwicklung für mobile Endgeräte ........................................ 18
2.4 Softwarequalitätssicherung................................................................. 19
2.4.1 Debugger ................................................................................ 19
2.4.2 Remote Debugger................................................................... 19
2.4.3 Profiler.................................................................................... 20
Inhaltsverzeichnis
2.4.4 Unit Tests ............................................................................... 20
2.4.5 Quality Audits ........................................................................ 20
2.4.6 Quality Metrics....................................................................... 21
2.5 Erweiterbarkeit der Entwicklungsumgebung ..................................... 21
2.5.1 Einbindung in ein Application Lifecycle Management ......... 22
2.5.2 Zusatzkomponenten von Drittanbietern................................. 22
2.6 Hilfe und Support ............................................................................... 22
2.6.1 Dokumentation des Produkts ................................................. 22
2.6.2 Größe der Community............................................................ 23
2.6.3 Kundenbetreuung durch den Hersteller ................................. 23
2.7 Sonstiges............................................................................................. 24
3 Evaluierung ...................................................................................................... 25
3.1 Eclipse 3.2 .......................................................................................... 26
3.1.1 Allgemeines............................................................................ 26
3.1.2 Bewertung nach Kriterienkatalog .......................................... 30
3.2 NetBeans 5.5....................................................................................... 57
3.2.1 Allgemeines............................................................................ 57
3.2.2 Bewertung nach Kriterienkatalog .......................................... 59
3.3 JBuilder 2006...................................................................................... 84
3.3.1 Allgemeines............................................................................ 84
3.3.2 Bewertung nach Kriterienkatalog .......................................... 85
3.4 IntelliJ IDEA 6.0 .............................................................................. 107
3.4.1 Allgemeines.......................................................................... 107
3.4.2 Bewertung nach Kriterienkatalog ........................................ 108
4 Gegenüberstellung der Produkte .................................................................... 123
4.1 Allgemeine Gegenüberstellung ........................................................ 123
4.2 Gegenüberstellung nach Kriterienkatalog ........................................ 125
4.2.1 Editor.................................................................................... 125
4.2.2 Modellierung ........................................................................ 126
4.2.3 Programmierung................................................................... 127
4.2.4 Softwarequalitätssicherung .................................................. 128
4.2.5 Erweiterbarkeit der Entwicklungsumgebung....................... 129
4.2.6 Hilfe und Support................................................................. 130
4.2.7 Sonstiges .............................................................................. 130
4.3 Übersichtstabelle .............................................................................. 132
5 Zusammenfassung und Ausblick.................................................................... 133
Abkürzungsverzeichnis ....................................................................................... 136
Literaturverzeichnis ............................................................................................ 141
2
Abbildungsverzeichnis
Abbildung 1.1:
Abbildung 3.1:
Abbildung 3.2:
Abbildung 3.3:
Abbildung 3.4:
Abbildung 3.5:
Abbildung 3.6:
Abbildung 3.7:
Abbildung 3.8:
Abbildung 3.9:
Abbildung 3.10:
Abbildung 3.11:
Abbildung 3.12:
Abbildung 3.13:
Abbildung 3.14:
Abbildung 3.15:
Abbildung 3.16:
Abbildung 3.17:
Abbildung 3.18:
Abbildung 3.19:
Abbildung 3.20:
Abbildung 3.21:
Abbildung 3.22:
Abbildung 3.23:
Abbildung 3.24:
Abbildung 3.25:
Abbildung 3.26:
Abbildung 3.27:
Abbildung 3.28:
Abbildung 3.29:
Abbildung 3.30:
Überblick der Java Plattform
Eclipse - Hauptkomponenten der Eclipse Architektur
Eclipse - Codeeditor
Eclipse - Visual Editor Ansicht
Eclipse - WindowBuilder Ansicht, Formular mit Grouplayout
Eclipse - Refactoringmethoden, Voransicht eines Refactorings
Eclipse - EclipseUML, Klassendiagramm
Eclipse - openArchitectureWare Funktionsüberblick
Eclipse - Klassenbibliothek eines Drittanbieters einbinden
Eclipse - Assistent zum Auslagern sprachspezifischer Texte
Eclipse - WTP Funktionsumfang
Eclipse - EclipseME in Java Perspektive
Eclipse - Debugger Perspektive
Eclipse - JUnit Ansicht
Eclipse - Profiler mit Montitor und Sequenzdiagramm
Eclipse - Konfiguration des Audit Plugins Checkstyle
Eclipse - Plugin Metrics
Eclipse - ALF Architektur
NetBeans - Übersicht über die NetBeans-Familie
NetBeans - Codeeditor
NetBeans - GUI-Designer Matisse
NetBeans - Refactoringmethoden, Jackpot Refactoring Manager
NetBeans - UML Design Center mit Pattern-Katalog
NetBeans - Sequenzdiagramm mittels Reverse Engineering
NetBeans - Library Manager
NetBeans - Tabellenbasiertes Editieren von Sprachdateien
NetBeans - Verbundene Datenquelle und SQL-Abfrageeditor
NetBeans - HTTP-Monitor
NetBeans - WYSIWYG Editor für JSF basierte Webseiten
NetBeans - Screen Designer für mobile CLDC Geräte
NetBeans - Mobility Pack Flow Designer
Abbildungsverzeichnis
Abbildung 3.31:
Abbildung 3.32:
Abbildung 3.33:
Abbildung 3.34:
Abbildung 3.35:
Abbildung 3.36:
Abbildung 3.37:
Abbildung 3.38:
Abbildung 3.39:
Abbildung 3.40:
Abbildung 3.41:
Abbildung 3.42:
Abbildung 3.42:
NetBeans - Debugger Ansicht
NetBeans - Profiler Ansicht
NetBeans - JUnit Ansicht
NetBeans - Dynamisches Hilfesystem
NetBeans - Refactoring einer XML-Schema Datei
JBuilder - Codeeditor
JBuilder - GUI-Designer Ansicht
JBuilder - Refactoringmenü, Refactoring-Historie
JBuilder - UML Ansicht
JBuilder - EJB-Designer
JBuilder - Dialog zum Verwalten der Klassenbibliotheken
JBuilder - Mit dbSwing-Komponenten erstelltes DB-Frontend
JBuilder - JavaServer Faces Flow-Designer
Abbildung 3.43:
Abbildung 3.44:
Abbildung 3.45:
Abbildung 3.46:
Abbildung 3.47:
Abbildung 3.48:
Abbildung 3.49:
Abbildung 3.50:
Abbildung 3.51:
Abbildung 3.52:
Abbildung 3.53:
Abbildung 3.54:
Abbildung 3.55:
Abbildung 3.56:
Abbildung 3.57:
Abbildung 3.58:
Abbildung 3.59:
Abbildung 3.60:
Abbildung 3.61:
Abbildung 3.62:
Abbildung 3.63:
Abbildung 5.1:
JBuilder - Entwicklung für mobile Endgeräte
JBuilder - Debuggeransicht
JBuilder - Unit Test Unterstützung
JBuilder - Code Audits
JBuilder - Borland ALM
JBuilder - Unterstützte VCS-Systeme
JBuilder - Peer-to-Peer Modus
IntelliJ IDEA - Codeeditor
IntelliJ IDEA - GUI Designer
IntelliJ IDEA - Refactoring
IntelliJ IDEA - Verwaltung der Klassenbibliotheken
IntelliJ IDEA - Internationalisierungs-Funktionalitäten
IntelliJ IDEA - EJB Persistenz Diagramm
IntelliJ IDEA – Erweiterung IntelliME
IntelliJ IDEA - Debugger
IntelliJ IDEA - Durchführung von Unit Tests
IntelliJ IDEA - Definition von Code Audit-Regeln
IntelliJ IDEA - Plugin MetricsReloaded
IntelliJ IDEA - Pluginverwaltung
IntelliJ IDEA - Hilfe während zeitaufwendigen Prozessen
IntelliJ IDEA - Integrierter Instant Messenger
Entwicklungsumgebung Borland C++ 3.1 (1991)
2
Tabellenverzeichnis
Tabelle 2.1:
Tabelle 2.2:
Tabelle 2.3:
Tabelle 2.4:
Tabelle 3.1:
Tabelle 3.2:
Tabelle 3.3:
Tabelle 3.4:
Tabelle 3.5:
Tabelle 3.6:
Tabelle 3.7:
Tabelle 3.8:
Tabelle 3.9:
Tabelle 3.10:
Tabelle 3.11:
Tabelle 3.12:
Tabelle 4.1:
Tabelle 4.2:
Tabelle 4.3:
Tabelle 4.4:
Tabelle 4.5:
Tabelle 4.6:
Tabelle 4.7:
Tabelle 4.8:
Tabelle 4.9:
Features eines Codeeditors
Refactoring Prozesse
Strukturdiagramme der UML und deren Bedeutung
Verhaltensdiagramme der UML und deren Bedeutung
Eclipse - Überblick über die einzelnen Callisto Projekte
Eclipse - Mitgelieferte Klassenbibliotheken der Callisto Distribution
Eclipse - Vom Teilprojekt JST von WTP unterstützte J2EE Artefakte
Eclipse - Aktivitäten der Community
NetBeans - Sun-Erweiterungsmodule für die IDE
NetBeans - Einige mitgelieferte Klassenbibliotheken
NetBeans - Aktivitäten der Community
JBuilder - Einige mit der IDE ausgelieferte Klassenbiblotheken
JBuilder - Unterstützte Technologien für Webapplikationen
JBuilder - Optimizeit Werkzeuge
JBuilder - Borland Communityaktivitäten
IntelliJ IDEA – Webentwicklung
Allgemeine Gegenüberstellung
Bewertung: Editor
Bewertung: Modellierung
Bewertung: Programmierung
Bewertung: Softwarequalitätssicherung
Bewertung: Erweiterbarkeit der Entwicklungsumgebung
Bewertung: Hilfe und Support
Bewertung: Sonstiges
Bewertung: Gesamtübersicht
Kapitel 1
Einleitung
1.1
Motivation für diese Arbeit
Die Programmiersprache Java wurde, nach [Sun06o], im Zuge eines internen Projekts bei Sun Microsystems entwickelt. Anfang 1996 wurden von der Firma die ersten Entwicklungswerkzeuge mit dem Java Development Kit 1.0 bereitgestellt. Die
derzeit aktuelle Version 6.0 des JDKs erschien im Dezember 2006 und steht unter
anderem für die Plattformen Win32, Linux und Mac OS X zur Verfügung.
Eine Besonderheit der Java-Technologie ist, dass der Java Compiler im Gegensatz
zu Übersetzern anderer Programmiersprachen, wie etwa C++, aus dem Quelltext
nicht Maschinencode für eine spezifische Plattform, sondern sogenannten Bytecode,
generiert. Dieser Zwischencode kann anschließend auf jeder Plattform ausgeführt
werden, für die eine entsprechende Java Virtual Machine bereitsteht, welche diesen
Zwischencode interpretieren kann. Diese Fähigkeit wird von Sun oft mit dem Ausspruch „Write once, run everywhere“ zusammengefasst.
Abhängig vom Einsatzgebiet der Java Programme werden von Sun drei verschiedene
Java Editionen unterschieden.
Die Java Standard Edition ist die klassische Umgebung, um Java basierte Anwendungen oder Applets auszuführen. Für die Entwicklung bietet die J2SE das Java Development Kit, kurz JDK.
Die Java Enterprise Edition basiert auf der Standard Edition und erweitert diese um
zusätzliche Klassenbibliotheken und Frameworks für den Einsatz im Enterprise- und
Webbereich.
Einleitung
2
Mit der Java Micro Edition steht eine Laufzeitumgebung zur Verfügung, die eine
Ausführung von Java Programmen auch auf Systemen mit limitierten Ressourcen,
wie beispielsweise Handys oder PDAs, ermöglicht.
Selbst für die Ausführung von Programmen auf Smartcards stellt Sun Microsystems
inzwischen eine eigene Variante von Java zur Verfügung. Abbildung 1.1 zeigt die
Java Editionen im Überblick.
Abbildung 1.1: Überblick der Java Plattform (Grafik nach [Sun06m])
Unter [Sun06n] wird angegeben, dass bereits mehr als 2 Milliarden elektronische
Geräte mit Java Unterstützung existieren:
•
Eine Milliarde Smartcards
•
708 Millionen Mobiltelefone (600 verschiedene Modelle von 30 Herstellern)
•
700 Millionen Computer mit installierter Java Laufzeitumgebung
Die Entwicklung von Programmen, die auf derart unterschiedlichen Endgeräten verwendet werden können, stellt auch eine große Herausforderung für die eingesetzten
Entwicklungswerkzeuge dar.
Einleitung
1.2
1.3
3
Behandelte Fragestellungen
•
Ist modellgetriebene Entwicklung bei den derzeit erhältlichen Produkten überhaupt ein Thema und wenn ja, wie weit geht die Unterstützung?
•
Inwieweit unterstützen die Produkte Modellierungstechniken?
•
Auf welche Art und Weise beschleunigt die Verwendung einer modernen
IDE den Entwicklungsprozess gegenüber einem Texteditor und Commandline-Compiler?
•
Wie wird die Qualität der resultierenden Software sichergestellt?
•
Wie sieht es mit der Erweiterbarkeit und Interoperabilität der Produkte aus?
•
Welche Phasen eines Entwicklungsprozesses (Anforderungsanalyse, Entwurf, Design, Implementierung, Test) werden von den untersuchten Produkten abgedeckt?
•
Wie wird das Arbeiten im Team unterstützt? Wie funktioniert dabei das Rollenmanagement?
•
Wie weit geht die Unterstützung für Anwendungen abseits des Desktopbereichs, wie z.B. Webanwendungen oder Applikationen für mobile Endgeräte?
Welche Techniken kommen dabei zum Einsatz?
•
Welche Standards haben sich im Bereich Softwaredesign und Softwareentwicklung etabliert?
Gliederung der Arbeit
In dieser Arbeit werden weit verbreitete Java Entwicklungsumgebungen anhand eines Kriterienkatalogs evaluiert und abschließend gegenübergestellt.
Kapitel 2 enthält den, zur Evaluierung der Produkte notwendigen, Kriterienkatalog.
Dieser wurde gemeinsam mit Florian Skopik, der zeitgleich eine Partnerarbeit
[Sko07] am Institut zum Thema C++/C# Entwicklungsumgebungen durchführte,
erarbeitet. Der Katalog ermöglicht eine Bewertung der IDEs in den Bereichen Editor, Modellierung, Programmierung, Softwarequalitätssicherung, Erweiterbarkeit der
Entwicklungsumgebung, Hilfe und Support sowie Sonstiges.
Einleitung
4
In Kapitel 3 liegt der Schwerpunkt dieser Arbeit: Die Evaluierung der ausgewählten
Produkte. Aus dem Open Source Bereich wurden Eclipse 3.2 und NetBeans 5.5 und
aus dem kommerziellen Umfeld die Umgebungen JBuilder 2006 und IntelliJ IDEA
gewählt. Jedem Produkt ist in diesem Kapitel ein Abschnitt gewidmet, in dem dieses,
gemäß den Kriterien aus dem Katalog, untersucht wird.
Kapitel 4 stellt die evaluierten Produkte direkt gegenüber. Dadurch werden die jeweiligen Stärken und Schwächen der einzelnen Entwicklungsumgebungen im Vergleich zu den Konkurrenzprodukten aufgezeigt.
Im letzten Kapitel werden Erfahrungen und Erkenntnisse aus den Produktevaluierungen zur Sprache gebracht.
Kapitel 2
Kriterienkatalog
Der folgende Katalog umfasst die Kriterien nach der die ausgewählten Entwicklungsumgebungen evaluiert werden.
Dieser Kriterienkatalog wird sowohl für die Evaluierung in Kapitel 3, als auch in
unveränderter Form in [Sko07] verwendet. Damit ist eine direkte Vergleichbarkeit
zu den in [Sko07] untersuchten Produkten gewährleistet.
2.1 Editor
Der Editor umfasst alle sichtbaren Bereiche des Produktes, welche zur Anwendungsentwicklung genutzt werden, wie z.B. den Codeeditor zur Eingabe des Programmcodes in Textform oder den User Interface Designer zur Erstellung einer Programmoberfläche. Weitere Kriterien zur Bewertung der Oberfläche sind auch eine vorhanden Sprachunterstützung abseits der englischen Standardversion oder der Gesamtaufbau der Arbeitsumgebung.
2.1.1 Codeeditor
Ein leistungsfähiger Eingabeeditor hilft den Überblick in langen Dateien zu bewahren. Ein einfacher Texteditor mit Syntax Highlighting, also dem farblichen Hervorheben von Schlüsselwörtern einer Programmiersprache, ist schon lange nicht mehr
genug. Moderne Codeeditoren besitzen noch viele weitere Features.
Tabelle 2.1 zeigt einen Überblick über Features moderner Codeeditoren.
Kriterienkatalog
6
Change Bars
Darunter versteht man das Markieren von, seit dem
letzten Speichern, geänderter Codebereiche mit
einem vertikalen farbigen Balken.
Quellcodeformatierung
Der Quellcode wird automatisch nach bestimmten
Regeln, wie z. B. konsistentes Einrücken bei Blöcken oder Schleifen, formatiert.
Code Parameter-Hilfe
Die Code Parameter-Hilfe gibt Hinweise, welche
Parametertypen für den an der Cursorposition stehenden Methodenaufruf, möglich sind.
Code-Hilfe
Diese gibt weitere Informationen über das Symbol
an der aktuellen Cursorposition, wie z.B. Typ, Datei und Zeilennummer der Deklaration.
Code Completion
Dieses Feature ermöglicht das Bereitstellen einer
Liste über alle an der aktuellen Cursorposition
möglichen Ausdrücke, wie z.B. eine Liste über alle
im aktuellen Kontext verfügbaren Methoden nach
Eingabe eines Objektnamens.
Class Completion
Unter Class Completion versteht man das automatische Generieren eines leeren Klassengerüsts, im
richtigen Namespace bzw. Package und leeren
Konstruktor.
Block Completion
Die Block Completion schließt einen Block am
Ende selbständig mit einer geschweiften Klammer.
Code Browsing
Code Browsing ermöglicht das Finden jedes Auftreten eines Symbols oder nur seiner Deklaration in
allen geöffneten Dateien bzw. in allen zum Projekt
gehörenden Dateien.
Method Hopping
Mit diesem Feature ist ein Wechseln zwischen Methoden durch einfaches Anklicken des Methodennamens im Sourcecode möglich.
RegEx-Suche
Das Durchsuchen der Projektdateien mittels regulä-
Kriterienkatalog
7
ren Ausdrücken wird heute von den meisten IDEs
unterstützt
Code Templates
Code Templates sind bereits vordefinierte, oft wiederkehrende Codestellen, z.B. eine Zählschleife.
Um diese nicht jedes Mal von neuem schreiben zu
müssen, kann diese nach einem Parametrisieren aus
einem Template-Archiv eingefügt werden. Die
meisten Produkte erlauben auch ein Hinzufügen
eigener Templates.
Code Folding
Code Folding ist das „Einklappen“, ähnlich einer
Baumstruktur, von ganzen Codebereichen z.B. Methoden die derzeit nicht bearbeitet werden. Dies
hilft die Codelänge künstlich zu verkürzen, ohne
tatsächlich Codeteile in andere Dateien auslagern
zu müssen. Dadurch wird die Übersicht selbst in
langen Codeteilen gewahrt.
ToDo List-Verwaltung
Die Verwaltung von „Merkzetteln“ und Verknüpfung mit Codeteilen regelt die ToDo ListVerwaltung.
Tastaturmakros
Bestimmte Funktionen mit Tastaturmakros zu belegen sollte heute zur Standardausstattung gehören.
Bookmarks
Bookmarks ermöglichen es, schnell zwischen wichtigen Codeteilen, auch über mehrere Dateien hinweg, zu wechseln.
Blockkommentare
Diese werden benutzt um ganze Codesektionen
einzelzeilenweise auf einmal auszukommentieren.
Tabelle 2.1: Features eines Codeeditors
2.1.2 User Interface Designer
Eine grafische Benutzeroberfläche (GUI) hat nach [Wes02] die Aufgabe, Anwendungssoftware auf einem Rechner mittels grafischer Elemente bedienbar zu machen.
Da bei heutigen Computersystemen zur Bedienung durch den Endanwender nahezu
Kriterienkatalog
8
ausschließlich GUIs verwendet werden, ist ein leistungsfähiger User Interface Designer Grundbestandteil einer jeden Entwicklungsumgebung.
Bei der Evaluierung des User Interface Design Editors werden folgende Fragestellungen untersucht:
•
Ist eine komfortable Platzierung der grafischen Komponenten mittels Drag &
Drop möglich?
•
Lassen sich die Eigenschaften (Beschriftung, Größe, Farbe, etc) einer Komponenten komfortabel in tabellarisch aufbereiteter Form ändern, oder ist dies
nur im Code möglich?
•
Wird der darunter liegende Code, also die Verbindung zwischen dem User
Interface und dem Controller, dem eigentlich arbeitenden Code der Applikation nach dem MVC-Modell wie z. B. in [ZBGK01] beschrieben, automatisch erzeugt, oder ist dies manuell erforderlich?
•
Wie wird die Verbindung zwischen durch User Interface-Komponenten ausgelösten Ereignissen und dem Programmcode realisiert (z.B. Eventhandler,
Action Listener, CallBack-Funktionen)?
•
Werden Designrichtlinien, wie z. B. unter [MS06a] beschrieben eingehalten
bzw. besteht die Möglichkeit den Editor nach eigenen Designrichtlinien zu
konfigurieren?
•
Ist die Bedienung intuitiv genug und eine schnelle Einarbeitung zu Beginn,
als auch eine rasche Abwicklung immer wiederkehrender Aktionen gewährleistet?
Dieses Bewertungskriterium befasst sich nicht mit dem eigentlichen Framework,
welches zur Darstellung der Benutzeroberfläche und der grafischen Komponenten
verwendet wird d.h. welche Komponenten zur Verfügung stehen, welche Möglichkeiten diese besitzen, deren Look & Feel oder Verwendung im Code. Diese Kriterien
werden im Teilkatalog Programmierung unter Mitgelieferte Klassen und Frameworks behandelt.
Kriterienkatalog
9
2.1.3 Refactoring
Refactoring ist nach [Fow05] eine Bezeichnung für eine Vorgehensweise in der
Informatik, spezieller der Softwareentwicklung, bei der die Lesbarkeit, Verständlichkeit, Wartbarkeit, Erweiterbarkeit und Struktur (der Funktionen und Klassen)
eines Computerprogramms verbessert wird, ohne dabei die Funktionalität der Software zu verändern.
Viele Refactoringprozesse ermöglichen das Hinzufügen, Ändern oder Löschen von
Symbolen. Der Vorteil in der Benutzung solcher Refactorings gegenüber der manuellen Manipulation des Sourcecodes liegt in der Aufrechterhaltung der Konsistenz
des Sourcecodes, da eine Refactoringfunktion ein Symbol nicht nur an einer Stelle
manipuliert, sondern an allen Stellen im Projekt in dem dieses auftritt.
Einige der häufigsten Refactoring-Prozesse werden in Tabelle 2.2 erläutert.
Symbol umbenennen
Dieser Prozess gibt einem Symbol, z. B. einer Variablen oder Klasse einen neuen Namen. Dabei wird
jedes Auftreten dieses Symbols im gesamten Projekt berücksichtigt.
Methode extrahieren
Methode extrahieren erlaubt es für ein Stück Sourcecode eine eigene Methode zu generieren. Dies
erhöht die Wiederverwendbarkeit, insbesondere
dann, wenn dieses Stück Sourcecode im gleichen
Projekt mehrmals Verwendung findet.
Interface extrahieren
Erzeugt aus einer implementierten Klassen ein Interface, sofern die Programmiersprache, z.B. C#
oder Java, das Konzept eines Interfaces vorsieht. In
C++ ist ein Interface unter gewissen Umständen mit
einer abstrakten Basisklasse vergleichbar.
Parameter umsortieren
Die Reihenfolge der Parameter in der Parameterliste einer Methode oder Funktion wird zwecks besserer Lesbarkeit verändert.
Parameter entfernen
Entfernt einen Parameter aus der Deklaration und
allen Methodenaufrufen.
Verschiebe lokale Variable in
Diese Funktion zieht eine lokale Variable einer
Kriterienkatalog
10
die Parameterliste
Methode in deren Parameterliste, um sie auch von
extern verändern zu können.
Variable in Methode einschließen
Falls eine Klassenvariable nur in einer einzigen
Methode der Klasse benutzt wird, sollte sie zwecks
Übersichtlichkeit zu einer lokalen Variable dieser
Methode gemacht werden.
Methode verschieben
Verschiebt eine Methode in eine über- oder untergeordnete Klasse.
Inline Membervariable
Eine lokale Variable, welche mit einem fixen Wert
initialisiert wurde und auf die im Weiteren nur
mehr lesend zugegriffen wird, wird bei ihrer Verwendung durch den vorinitialisierten Wert ersetzt.
Sicheres Löschen
Vor dem Löschen von Variablen, Methoden oder
Klassen wird überprüft, ob diese im Projekt verwendet werden.
get()- und set()-Methoden
generieren
Automatisches Erzeugen von get()- und set()Methoden für private Membervariablen
Tabelle 2.2: Refactoring Prozesse
2.1.4 Sprachunterstützung
Das Kriterium Sprachenunterstützung behandelt, wie gut ein Produkt für den nichtenglischsprachigen Markt gerüstet ist, also ob die Bedienungsmenüs vollständig und
weitgehend fehlerfrei übersetzt wurden und auch das Hilfesystem vollständig in anderen Sprachen verfügbar ist.
Dieses Kriterium beschäftigt sich nicht mit der Unterstützung andere Programmiersprachen oder mit der Entwicklung verschiedensprachiger Anwendungen. Dafür sind
die Kriterien Compiler und Programmiersprachen und Internationalisierung von
Anwendungen im Katalog Programmierung gedacht.
Kriterienkatalog
11
2.1.5 Entwurfsmuster
Ein Entwurfsmuster (engl. design pattern) beschreibt eine bewährte Schablone für
ein Entwurfsproblem. Es stellt damit eine wiederverwendbare Vorlage zur Problemlösung dar. Die bekanntesten und heute weit verbreiteten Entwurfsmuster sind jene
von E. Gamma, R. Helm, R. Johnson und J. Vlissides, der sogenannten Gang of Four
(GoF) [Wiki06b]. Eine genaue Abhandlung dieser Entwurfsmuster findet sich in
[GoF96] und dessen Nachfolgewerk [GoF99].
Diese Entwurfsmuster werden nach ihrem Zweck in die Kategorien
•
Erzeugungsmuster (creational patterns), welche Objekterzeugungsprozesse
abstrahieren,
•
Strukturmuster (structural patterns), welche Klassen und Objekte zu größeren
Strukturen zusammenfassen und
•
Verhaltensmuster (behavioral patterns), welche die Interaktion zwischen Objekten und komplexen Kontrollflüssen beschreiben,
eingeteilt. Darüber hinaus gibt es auch noch viele weitere nützliche Muster anderer
Autoren und Entwickler.
Dieses Bewertungskriterium befasst sich damit, ob das Thema Entwurfsmuster in der
Entwicklungsumgebung eine Rolle spielt, ob diese zumindest als Codeteile in der
Hilfe verfügbar sind bzw. optimalerweise über ein entsprechendes Menü dem Projekt hinzugefügt werden können. Weiters wird der Umfang der bereits implementierten Vorlagen untersucht.
2.1.6 Aufbau der Arbeitsumgebung
Diese Kriterium befasst sich mit der Benutzerfreundlichkeit (engl. usability) der Gesamtumgebung.
Beispielsweise werden folgende Fragestellungen erläutert:
•
Wie wird ein neues Projekt angelegt, wie die zugehörigen Dateien und Ressourcen verwaltet?
Kriterienkatalog
2.2
12
•
Wie brauchbar ist die Standardkonfiguration der Oberfläche (Darstellung der
Informationen in verschiedenen Fenstern und deren Anordnung) und in wie
weit kann diese verändert werden?
•
Sind die Menüs überladen? Sind diese individuell anpassbar, d.h. können
nicht benötigte Funktionen ausgeblendet werden?
•
Ist die Bedienung intuitiv und hält sich diese an etablierte Standards?
•
Wie sind die für den Entwicklungsprozess wichtigen Informationen aufbereitet, wie z. B. die Darstellung der Klassenhierarchie (Class Browser) und wie
wird die Übersicht über das Projekt gewahrt?
Modellierung
Dieser Teilkatalog befasst sich mit der Unterstützung der Softwaremodellierung
durch die untersuchten Produkte. Dabei wird unterschieden, ob das Produkt die Unified Modeling Language unterstützt und wenn ja, welche Diagrammarten; weiters
auch ob UML dann auch tatsächlich zu MDA-Zwecken eingesetzt werden kann, also
ob aus einem abstrahierten Modell Code erzeugt werden kann, und wenn nein, ob
wenigstens ein Forward Engineering möglich ist.
2.2.1 Unified Modeling Language
Dieses Kriterium behandelt, ob und in welcher Form die Verwendung der UML
möglich ist. Die meisten größeren Produkte erlauben zumindest das Generieren und
Darstellen eines Klassendiagramms in einer graphischen Ansicht. Bei anderen Produkten geht die Unterstützung von UML aber weit darüber hinaus. Es wird untersucht, ob die nach [Kapp03a] und [ZBGK01] wichtigsten Diagrammarten zur Modellierung oder Dokumentation verwendet werden können.
Der aktuelle Standard UML 2.0 kennt dreizehn verschiedene Diagrammtypen, welche sich in Strukturdiagramme und Verhaltensdiagramme gliedern.
Klassendiagramm
In Klassendiagrammen werden die Attribute und
Methoden von Klassen gezeigt, sowie die Beziehungen der Klassen untereinander dargestellt. Bei der
Kriterienkatalog
13
Darstellung der Klassen sollten unterschiedliche
Detailgrade gewählt werden können.
Kompositionsstrukturdiagramm
Das Kompositionsstrukturdiagramm zeigt einheitlich das Innere eines Classifiers und dessen Zusammenarbeit mit seiner Umgebung.
Komponentendiagramm
In einem Komponentendiagramm, typischerweise in
der Komponentenbasierten Softwareentwicklung
eingesetzt werden Komponenten und deren „Andockstellen“, Schnittstellen sowie Ports, dargestellt.
Objektdiagramm
In einem Objektdiagramm werden Ausprägungsspezifikationen von Klassen und Assoziationen dargestellt.
Paketdiagramm
In einem Paketdiagramm werden Pakete, Paketimports, Paketverschmelzungen und Abhängigkeitsbeziehungen dargestellt.
Verteilungsdiagramm
In einem Verteilungsdiagramm werden Knoten, Artefakte, Ausprägungsspezifikationen und Verteilungsbeziehungen dargestellt.
Tabelle 2.3: Strukturdiagramme der UML und deren Bedeutung
Anwendungsfalldiagramm
Das Anwendungsfalldiagramm zeigt die Benutzer
und die Anforderungen eines Systems im Überblick.
Aktivitätsdiagramm
Ein Aktivitätsdiagramm ist eine graphische Darstellung eines Netzes von elementaren Aktionen, die mit
Kontroll- und Datenflüssen verbunden sind. Häufig
wird es zur Beschreibung von Abläufen eines Anwendungsfalls verwendet.
Sequenzdiagramm
Im Sequenzdiagramm wird der dynamische Ablauf
zwischen Objekten unter Berücksichtigung der zeitlichen Abfolge dargestellt.
Kriterienkatalog
14
Kommunikationsdiagramm
Ein Kommunikationsdiagramm ist eine graphische
Darstellung einer Interaktion und spezifiziert den
Austausch von Nachrichten zwischen Ausprägungen, die im Diagramm als Lebenslinien dargestellt
sind.
Interaktionsübersichtdiagramm
Das Interaktionsübersichtsdiagramm ist eine Kombination aus einem Aktivitätsdiagramm und weiteren Interaktionsdiagrammen. Damit ist es möglich,
komplexe Interaktionen Top/Down oder Bottom/Up
zu modellieren.
Zeitverlaufsdiagramm
Zeitverlaufsdiagramme sind zweidimensionale Diagramme, bei denen die X-Achse die Zeit, und die YAchse Objekte (im weitesten Sinne) und deren Zustände darstellen.
Zustandsdiagramm
Ein Zustandsdiagramm dient zur Beschreibung eines
endlichen Automaten in UML-Notation.
Tabelle 2.4: Verhaltensdiagramme der UML und deren Bedeutung
2.2.2 Model Driven Architecture
Dieses Kriterium untersucht, ob die Entwicklungsumgebung einen Modellgetriebenen Entwicklungsprozess unterstützt, also ob wie in [StVö05] und [And04] beschrieben, tatsächlich das Generieren von Sourcecode aus einem abstrahierten Modell, evtl. über Zwischenschritten, möglich ist. Weiters wird untersucht inwiefern die
in heutigen MDA-Tools eingesetzten Techniken, wie z.B. die Object Constraint Language (OCL) zur textuellen Spezifikation von Bedingungen oder XML Metadata
Interchange (XMI) zum Dokumentenaustausch Unterstützung finden. Letzteres gibt
zum Teil auch Aufschluss darüber inwieweit das Produkt mit anderen Tools zusammen verwendet werden kann.
2.2.3 Forward Engineering
Unter Forward Engineering versteht man nach [StVö05] das einfache Generieren
von Code aus einem Modell, wobei Code und Modell auf der gleichen Abstraktionsstufe liegen, das Modell also nur eine andere Darstellungsform des Codes ist.
Kriterienkatalog
15
Ein typisches Beispiel hiefür wäre, das Generieren von Klassenskeletten aus einem
selbst gezeichneten UML-Klassendiagramm.
2.2.4 Reverse Engineering
Reverse Engineering ist die Umkehrung von Forward Engineering, also das Erzeugen eines Klassendiagramms aufgrund selbst geschriebenen Codes.
Auf diesem Weg erzeugte Klassendiagramme werden häufig zur Dokumentation
eingesetzt, obwohl sie nach [StVö05] dafür nur bedingt geeignet sind. Dies resultiert
aus der Tatsache, dass Code und Klassendiagramm den gleichen Detailgrad aufweisen, das erzeugte Klassendiagramm daher meist durch Hilfsklassen und für die Funktionalität weniger wichtigen Code (z.B. vom User Interface) überladen und unübersichtlich ist.
2.2.5 Roundtrip Engineering
Im Gegensatz zur Model Driven Architecture versteht man nach [StVö05] unter
Roundtrip Engineering die Möglichkeit, sowohl in einem Modell als auch in dem
daraus generierten Code nach Belieben Änderungen vornehmen zu können, wobei
die Änderungen in beide Richtungen propagiert werden und beide Artefakte immer
konsistent sind.
2.3
Programmierung
Dieser Teilkatalog enthält alle Kriterien, die aus programmiertechnischer Sicht interessant sind, also welche Compiler und Programmiersprachen eigentlich unterstützt,
welche Klassenbibliotheken und Frameworks mitgeliefert oder welche Zielplattformen abgedeckt werden.
2.3.1 Compiler und Programmiersprachen
Viele der untersuchten Entwicklungsumgebungen unterstützen nicht nur die Entwicklung unter einer Programmiersprache, sondern unter vielen. Obwohl das Hauptaugenmerk auf den Sprachen C++ und C# bzw. Java liegt, soll dieses Kriterium kurz
beleuchten, welche alternativen Compiler und andere Programmiersprachen noch
unterstützt werden.
Kriterienkatalog
16
Eine Abhandlung über alle durch das jeweilige Produkte unterstützte Sprachen würde den Rahmen dieser Arbeit sprengen, da es sich bei den ausgewählten Produkten
entweder um Entwicklungsstudios handelt, welche, wie der Name schon sagt, die
Unterstützung vieler Technologien vereinen, oder die Systeme völlig modular aufgebaut sind und daher je nach installierter Plugins für die Entwicklung unter nahezu
jeder Programmiersprache verwendet werden können.
2.3.2 Mitgelieferte Klassenbibliotheken und Frameworks
Zur schnellen und sinnvollen Applikationsentwicklung ist man im Allgemeinen auf
die Unterstützung bereits erstellter Klassenbibliotheken angewiesen. In Java z. B.
gibt es verschiedene Editionen für unterschiedliche Zwecke. So gibt es für Desktopanwendungen die Java 2 Standard Edition (J2SE) bzw. das .NET Framework und für
mobile Endgeräte die Java 2 Micro Edition (J2ME) bzw. das .NET Compact Framework.
Bei diesem Kriterium soll vor allem das Spektrum der bereits mitgelieferten Bibliotheken und Frameworks untersucht werden und für welche Aufgabengebiete, z. B.
Datenbankapplikationen, Web-Anwendungen, diese ausgelegt sind.
2.3.3 Middleware und Komponentenstandards
Nach [And04] sind Komponentenstandards Standards in Bezug auf die Darstellung,
die Bezeichnung, das Verhalten, die Implementierung, die Interoperabilität, das
Customizing, die Komposition und die Verteilung von Komponenten. Sie definieren
anhand einer Spezifikation, welche Anforderungen Komponenten aus syntaktischer
und semantischer Sicht erfüllen müssen. Komponentenstandards liefern eine Infrastruktur, die es ermöglicht, Komponenten flexibel auf verschiedenen Standorten auszuführen.
Ein Komponentenstandard spezifiziert nach [And04]:
•
Syntax und Semantik der Komponenten,
•
eine Laufzeitumgebung,
•
spezifische Basisdienste (Erzeugung, Aktivierung, Deaktivierung von Komponenten),
Kriterienkatalog
17
•
horizontale Dienste, die verschiedenen Bereichen zur Verfügung stehen (Persistenzmanagement, Transaktionsverhalten, Sicherheit, Verzeichnisdienste
etc.), und
•
vertikale Dienste, die einem spezifischen Bereich zur Verfügung stehen (Businessprozesse, -entitäten, -services etc.).
Ein Komponentenstandard nutzt sowohl spezifische Applikationsserver und Container als auch spezifische Middleware.
Zu den heute verwendeten Komponentenstandards zählen EJB (Enterprise JavaBeans), CCM (CORBA Component Model), COM+ (Component Object Model) und
.NET.
2.3.4 Klassenbibliotheken und Komponenten von Drittanbietern
Oft greift man bei der Entwicklung von komplexen Anwendungen auf Komponenten
von Drittanbietern für spezielle Funktionalitäten zurück, da es aus Zeit- und Kostengründen nicht möglich ist diese immer selbst zu entwickeln und ausreichend zu testen.
Eine Entwicklungsumgebung sollte solche Komponenten einfach integrieren und
verwalten können.
2.3.5 Internationalisierung von Anwendungen
Unter Internationalisierung in der Softwareentwicklung versteht man den Übersetzungsprozess sodass die Software in verschiedenen Sprachen und Regionen verwendet werden kann, ohne Änderungen am Programmquellcode vornehmen zu müssen.
Die Internationalisierung betrifft länder- bzw. sprachspezifische Komponenten wie
Texte, Datumsformate und Eingabemethoden.
Übersetzte Texte werden üblicherweise in Textdateien ausgelagert um diese einfach
auch von Nicht-Programmierern erstellen lassen zu können.
2.3.6 Datenbankprojekte
Viele Anwendungen verwenden heutzutage eine Datenbank als Speicher-Backend.
Um die Entwicklung von datenbankabhängigen Applikationen zu vereinfachen, sollte eine Entwicklungsumgebung eine entsprechende Datenbankunterstützung bereit-
Kriterienkatalog
18
stellen. Diese ist optimalerweise möglichst flexibel und unabhängig von einem Hersteller gestaltet.
In der Entwicklungsumgebung sollte zumindest ein Editor integriert sein, welcher es
erlaubt Abfragen abzusetzen und Strukturänderungen am Datenmodell vorzunehmen. Da Anwendungen bei der Entwicklung oft mit unterschiedlichen Datenbanksystemen getestet werden müssen, wäre weiters eine übersichtliche Möglichkeit zur
Verwaltung der Datenquellen wünschenswert.
2.3.7 Webentwicklung
Nach [Kapp06b] ist eine Web-Anwendung ein Softwaresystem, das auf Spezifikationen des World Wide Web Consortium (W3C) beruht und Web-spezifische Ressourcen wie Inhalte und Dienste bereitstellt, die über eine Benutzerschnittstelle, den
Web-Browser, verwendet werden.
Hierzu sind der Computer des Benutzer (Client) sowie der Server über ein Netzwerk
miteinander verbunden, sodass die räumliche Entfernung zwischen Client und Server
unerheblich ist.
Bei der Entwicklung einer solchen Webanwendung gibt es verschiedene Arten der
Implementierung je nach verwendeter Technologie und Hersteller.
Im Java-Bereich stehen z. B. Webkomponenten für die Webentwicklung mit den
JavaServerPages sowie mit Servlets zur Verfügung, unter .NET übernimmt
ASP.NET ähnliche Funktionalitäten.
2.3.8 Entwicklung für mobile Endgeräte
Im Unterschied zur Entwicklung von Standardanwendungen für den Desktop- sowie
Serverbetrieb stellt die Anwendungsentwicklung für mobile Endgeräte, wie etwa
Handys oder PocketPCs, eine besondere Herausforderung dar. Die Rechenleistung,
als auch die Darstellungsmöglichkeiten eines solchen Endgerätes sind üblicherweise
sehr beschränkt.
Es ist daher gerade für mobile Endgeräte sehr wichtig, dass leistungsfähige Entwicklungswerkzeuge vorhanden sind mit denen es auch möglich ist aus derart minimalistischen Umgebungen die größtmögliche Leistung herauszuholen. Da das Testen von
Anwendungen direkt auf dem Endgerät oft sehr umständlich ist, müssen auch entsprechende Emulatoren in der Entwicklungsumgebung zur Verfügung stehen.
Kriterienkatalog
2.4
19
Softwarequalitätssicherung
Nach dem ISO Standard 9126 versteht man unter Softwarequalität die Gesamtheit
der Merkmale und Merkmalswerte eines Softwareprodukts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen.
Da Softwareprogramme oft sehr komplexe technische Artefakte sind, die oft auch
Komponenten von Drittanbietern verwenden, ist es praktisch unmöglich alle Fehler
zu finden und zu beheben. Um das Finden bzw. Vermeiden von Fehlern zu erleichtern, sollte eine moderne Entwicklungsumgebung entsprechende Tools zur Verfügung stellen.
2.4.1 Debugger
Die meisten untersuchten IDEs stellen einen sogenannten Debugger zur Verfügung
der als eigenständiges Programm oder Bestandteil eines Compilers die Suche und
Beseitigung von syntaktischen Fehlern und Fehlern im Programm oder Quellcode
dient. Ein Debugger bietet normalerweise mindestens folgende Funktionen:
•
Watches (Überwachungen) um Variableninhalte zu überprüfen
•
Breakpoints (Haltepunkte) um Ausgaben zu überwachen
•
Tracingfunktionalität, um durch schrittweise Abarbeitung eine bessere Überprüfung des Programmablaufs zu ermöglichen
Debugger sind ein unverzichtbares Werkzeug in der Programmentwicklung und erleichtern die Suche und Beseitigung von Fehlern.
2.4.2 Remote Debugger
Eine Sonderform des Software Debuggers ist der Remote Debugger. Dieser ermöglicht das debuggen eines Programms welches auf einem anderen Computer ausgeführt wird. Normalerweise öffnet das zu untersuchende Programm einen TCP/IP
Listenport zu dem sich der Debugger verbindet und entsprechende Befehle über diese Socketverbindung mit dem Programm austauscht.
Kriterienkatalog
20
2.4.3 Profiler
Mit einem Profiler ist es möglich, Programme auf ihr Laufzeitverhalten sowie auf
ihre Speichernutzung hin zu untersuchen. Es wird beispielsweise ermittelt, welche
Programmteile wie oft ausgeführt werden und wie viel Zeit dafür benötigt wird.
Bei Desktopanwendungen wird aufgrund der inzwischen sehr leistungsfähigen PCs
oft auf eine genaue Lauftzeitanalyse verzichtet. Im Bereich der mobilen Endgeräte,
wie etwa Mobiltelefone, wo auf einen möglichst geringen Energieverbrauch geachtet
werden muss, ist eine genaue Betrachtung des Laufzeitverhaltens der Anwendung
jedoch unbedingt notwendig.
2.4.4 Unit Tests
Unit Tests werden verwendet um einzelne Teile des Sourcecodes auf korrekte Funktion zu testen. Die Tests werden implementiert, indem Testfälle für jede Methode
geschrieben werden. Auf diese Weise ist es einfach und reproduzierbar möglich Fehler zu finden. Unit Tests zählen aufgrund dieser Vorgangsweise zu der Gruppe der
White Box Tests.
Für die Programmiersprachen Java und C#, die in dieser Arbeit hauptsächlich behandelt werden gibt es jeweils bereits ein Unit Test Tool welches sich als quasi Standard durchgesetzt hat: JUnit (Java) [JUnit06] und NUnit (C#) [NUnit06]. Daher wird
bei diesem Kriterium vor allem beurteilt wie gut die untersuchte Entwicklungsumgebung JUnit bzw. NUnit integriert.
2.4.5 Quality Audits
Quality Audits ermöglichen die Umsetzung geltender Standards und Konventionen
und die Optimierung der Programmiertätigkeit. Beim Ausführen von Audits werden
bestimmte Regeln ausgewählt, mit denen der erstellte Quelltext konform sein muss.
Die Ergebnisse zeigen an, wo gegen diese Regeln verstoßen wird, sodass dem Problem auf den Grund gegangen werden kann. Viele Programmiersprachen bieten Standard-Code-Konventionen, wie z. B. die Sun-Code-Konventionen für Java. Solche
oder eigene Konventionen sollten in der Entwicklungsumgebung eingestellt und ausgetauscht werden können.
Kriterienkatalog
21
Audits überprüfen also automatisch die Einhaltung von Standard- oder benutzerdefinierten Stilrichtlinien sowie die Einhaltung von Richtlinien bezüglich Wartung und
Stabilität von Code.
Die Einhaltung von Konventionen erleichtert die Wartbarkeit und Qualitätssicherung
gerade bei der Entwicklung im Team.
2.4.6 Quality Metrics
Eine weitere Möglichkeit eine Aussage über Qualität der entwickelten Software zu
erhalten, ist der Einsatz von Qualitäts- bzw. Software Metriken. Typische Metriken
für objektorientierte Software sind beispielsweise:
•
Anzahl der Zeilen pro Methode
•
Komplexität der Methoden (messbar durch Gewichtung einzelner Strukturen)
•
Prozentueller Anteil von Kommentaren pro Klasse
•
Anzahl der Methoden pro Klassen
•
Anzahl der Klassenvariablen
•
Verhältnis öffentlicher zu privaten Methoden
•
Typische Vererbungstiefe in der Anwendung
•
Verhältnis von abstrakten Klassen zu nicht abstrakten Klassen
Die Untersuchung der Ergebnisse der unterschiedlichen Metriken erlaubt eine gezielte Verbesserung der Softwarequalität. Enthält z. B. eine Klasse überdurchschnittlich viele Variablen und Methoden, so liegt möglicherweise zu viel Verantwortung
in dieser Klasse.
2.5
Erweiterbarkeit der Entwicklungsumgebung
Dieser Teilkatalog befasst sich einerseits damit, wie gut sich das Produkt in den gesamten Softwarentwicklungsprozess einfügt und welche Phasen eines Entwicklungsprozesses es abdeckt und andererseits mit der Erweiterung der Entwicklungsumgebung selbst, d.h. ob Schnittstellen nach außen verfügbar sind, um das Produkt mit
Komponenten von Drittanbietern erweitern zu können.
Kriterienkatalog
22
Die Erweiterung mittels Klassenbibliotheken, Frameworks und Komponenten von
Drittanbietern wird hingegen im Teilkatalog Programmierung behandelt.
2.5.1 Einbindung in ein Application Lifecycle Management
Unter einem Application Lifecycle Management (ALM) versteht man nach [Bor06b]
eine Kette von Softwareprodukten, welche den gesamten Entwicklungsprozess vom
ersten Entwurf, über die Modellierung und darauf folgende Implementierung bis
zum Testen und Ausliefern des fertigen Produkts vollelektronisch abdecken.
Dieses Kriterium bewertet, wie gut die untersuchte Entwicklungsumgebung mit anderen Produkten, welche die durch die IDE nicht abgedeckten Aufgabenbereiche
übernehmen, zusammenarbeiten kann. Dies umfasst neben den zuvor genannten
Aufgabenbereichen auch eine Integration in eine teamfähige Umgebung.
2.5.2 Zusatzkomponenten von Drittanbietern
Dieses Bewertungskriterium beurteilt die Erweiterbarkeit der Entwicklungsumgebung durch Komponenten von Drittanbietern, d.h. ob überhaupt Schnittstellen dafür
vorgesehen sind, und gibt eine Übersicht über häufig verwendete Module. Beispiele
für solche Erweiterungskomponenten einer IDE sind z.B. Plugins für Unit Tests oder
VCS-Clients.
Die Erweiterung der Entwicklungstechnik, d.h. Erweiterung mit Frameworks oder
Komponenten die in einer entwickelten Applikation genutzt werden, wird hierbei
nicht berücksichtigt. Dafür ist das Kriterium Klassenbibliotheken und Komponenten
von Drittanbietern im Teilkatalog Programmierung zuständig.
2.6
Hilfe und Support
Dieses Kriterium behandelt die verfügbaren Ressourcen in den Bereichen Produktdokumentation, Benutzer-Community und Kundenbetreuung durch den Hersteller.
Dieses Kriterium bewertet zwar nicht direkt das Produkt, ist aber in der Regel für die
Akzeptanz beim Benutzer ausschlaggebend.
2.6.1 Dokumentation des Produkts
„Ein Produkt ist nur so gut wie dessen Dokumentation.“ Dieser berühmte Satz über
ein Produkt gilt natürlich auch für Softwareentwicklungsumgebungen. Moderne I-
Kriterienkatalog
23
DEs bieten im Vergleich zu vielen anderen Softwareprodukten meist eine überdurchschnittlich hohe Funktionsvielfalt. Um die Möglichkeiten effektiv nutzen zu
können, ist ein umfangreiches und flexibles Hilfesystem notwendig. Eine Dokumentation für eine IDE sollte neben einer brauchbaren Online Hilfe auch ein interaktives
Hilfesystem anbieten, welches es dem Anwender erlaubt die Funktionalitäten des
Produkts aktiv zu erarbeiten. Da bei Entwicklungsumgebungen üblicherweise der
Funktionsumfang mittels Erweiterungen ausgebaut werden kann, sollte eine geeignete Dokumentationsschnittstelle zur Verfügung stehen, welche es Plugin-Herstellern
ermöglicht, ihre Dokumentation in das bestehende Hilfesystem zu integrieren.
2.6.2 Größe der Community
Treten bei der Verwendung eines Softwareprodukts Fragen bzw. Probleme auf, ist
der erste Weg bei der Suche nach Hilfe oft das Internet. Die Wahrscheinlichkeit,
dass man bei der Suche nach einer entsprechenden Hilfestellung fündig wird, steigt
je größer die Community des Produktherstellers ist.
Von Seiten des Herstellers sollte eine zentrale Plattform bereitgestellt werden, welche als Anlaufstelle für Anwender genutzt werden kann um sich untereinander austauschen zu können.
Eine große und aktive Community schafft oft eine umfangreiche Wissensbasis, welche die Leistungsfähigkeit eines Produkts indirekt steigern kann. Bietet die Entwicklungsumgebung beispielsweise eine flexible Schnittstelle für Erweiterungen, sorgt
eine große Community meist für viele und leistungsfähige Plugins um eventuell vorhandene Schwächen der IDE auszumerzen.
2.6.3 Kundenbetreuung durch den Hersteller
Fällt bei der Wahl einer Entwicklungsumgebung die Entscheidung auf ein kommerzielles Produkt, erhofft sich der Anwender meist eine entsprechende Betreuung direkt vom Hersteller.
Bei diesem Kriterium soll untersucht werden, welche Supportmöglichkeiten der Hersteller anbietet, ob diese kostenpflichtig sind und ob bei spezifischen Problemen ein
entsprechend kompetenter Ansprechpartner zur Verfügung steht. Auch die Erreichbarkeit des Supports ist ein Punkt, der hier nicht außer Acht gelassen werden sollte.
Kriterienkatalog
2.7
24
Sonstiges
Abhängig von der Philosophie ihres Herstellers hat jede IDE meist einen Schwerpunkt und zeigt dort oft viele Stärken und Funktionalitäten. Ein direkter Vergleich
dieser Möglichkeiten ist daher meist nicht möglich.
Eine IDE könnte beispielsweise das Hauptaugenmerk auf Teamfähigkeit legen und
daher eine sehr gute Unterstützung für Konfigurations- und Versionsmanagementsysteme bieten oder eine integrierte Kommunikationsmöglichkeit für Projektbeteiligte, z. B. ein Instant-Messaging System, zur Verfügung stellen.
Kapitel 3
Evaluierung
Dieses Kapitel behandelt die konkrete Bewertung der ausgewählten Produkte nach
den in Kapitel 2 beschriebenen Kriterien. Wichtige Funktionalitäten, die ein Produkt
zusätzlich bietet, werden ebenfalls im Zuge der Evaluierung erwähnt. Zu jedem Produkt wird darüber hinaus eine Gesamtübersicht über seine Positionierung am Markt
und seiner Entwicklung geboten.
Evaluierung
3.1
26
Eclipse 3.2
Hersteller
Eclipse Foundation
Produktversionen
Standard, Callisto-Suite
Testversion
Eclipse 3.2 mit Erweiterungen
Anschaffungskosten
Kostenlose Basisplattform, kommerzielle Erweiterungen:
EclipseUML [Omo06a] (1990 EUR1) sowie WindowBuilder [Ins06] (245 EUR2)
Plattform
Windows, Linux, Solaris, AIX, HP-UX, Mac OS X
Homepage
www.eclipse.org
3.1.1 Allgemeines
Die Geschichte von Eclipse beginnt im Grunde mit der Übernahme der Firma Object
Technologies International durch IBM. Denn OTI entwickelte Programmierwerkzeuge und war auch für die Entwicklung der IBM-Visual Age-Produktpalette verantwortlich. Im Rahmen der Arbeiten zu IBM Websphere wurde eine JavaEntwicklungsumgebung namens Eclipse geschaffen, die ihrerseits auf vielen Konzepten von Visual Age for Java basiert. Entwickler dieser Anwendung war ebenfalls
wieder OTI. Im Jahr 2001 gab IBM Eclipse in der Version 1.0 frei und stellte es unter eine Open-Source-Lizenz. [Cub05]
Die Führung des Eclipse Projekts wurde der neu gegründeten Eclipse-Foundation,
die 2003 unabhängig von IBM wurde, übertragen. Die Firma IBM ist derzeit noch
immer sehr stark an der Eclipse-Entwicklung beteiligt, die Kontrolle des Projekts hat
jedoch ausschließlich die Eclipse Foundation, deren Vorstand mit Mike Milinkovich
kein IBM Mitarbeiter ist.
Die Eclipse Plattform wurde nach [Ecl06a] so gestaltet, dass diese als flexible Basis
für die Entwicklung von integrierten Entwicklungsumgebungen (IDEs) verwendet
werden kann. Seit Version 3.0 ist es auch möglich, auf Wunsch der Community
1 Preis nach http://www.omondo.de/default.asp?subsite=pricing (12.11.2006)
2 Preis nach http://www.instantiations.com/windowbuilderpro/order.html (12.11.2006)
Evaluierung
27
[Ecl06b], Eclipse nicht nur als Basis für Entwicklungsumgebungen, sondern auch
als Rich Client Platform (RCP) für beliebige Applikationen zu verwenden.
Die Eclipse Plugin Architektur ist, nicht zuletzt durch den Vorgänger IBMs Visual
Age for Java, sehr flexibel erweiterbar. Abbildung 3.1 zeigt die Hauptkomponenten
der Eclipse Architektur. Der Kern der Eclipse Rich Client Platform besteht aus dem
Eclipse Workbench, dem Standard Widget Toolkit SWT [Ecl06c], der JFace
[Ecl06c] Bibliothek, sowie der Hilfe Komponente.
Abbildung 3.1: Eclipse - Hauptkomponenten der Eclipse Architektur (Grafik: [IBM06a])
Mit Ausnahme der Kernkomponenten von Eclipse (in Abbildung 3.1 der Block „Eclipse Platform“) werden alle Funktionen von Eclipse durch Plugins realisiert. In der
Eclipse Distribution sind standardmäßig Plugins für die Entwicklung von Java Applikationen enthalten, die Eclipse Java Development Tools (JDT). Eine optionale
Erweiterung für die Programmiersprachen C bzw. C++ steht z. B. mit den Eclipse
C/C++ Development Tools zur Verfügung [Sko07].
Eclipse wurde komplett in der Programmiersprache Java realisiert und steht für alle
gängigen Betriebssysteme zur Verfügung. Ein Kritikpunkt an Entwicklungsumgebungen, die in Java programmiert wurden, war oft das träge Verhalten der Benutzeroberfläche sowie die Usability, welche sich manchmal vom nativen Verhalten unterscheidet. Der Grund für dieses Verhalten ist das bei vielen Java GUI Programmen
verwendete Widgetset Swing [Sun06h]. Bei Swing werden die GUI Komponenten
direkt von Java gezeichnet und sind daher nicht von nativen Betriebssystemenelementen abhängig. Der Vorteil ist, dass Swing-Komponenten auf allen Plattformen
Evaluierung
28
gleich aussehen, unabhängig davon, ob die Plattform eine entsprechende eigene
Komponente zur Verfügung stellt oder nicht. Die Eclipse Plattform stellt ein eigenes
Widgetset zur Verfügung, das Standard Widget Toolkit SWT [Ecl06c], welches im
Gegensatz zu Swing, ähnlich zu Sun´s Abstract Windowing Toolkit AWT [Sun06a],
die nativen grafischen Elemende des Betriebssystems nutzt und es somit ermöglicht
performantere Oberflächen zu erzeugen. Im Unterschied zu AWT, welches nur grafische Komponenten bereitstellt, die unter praktisch allen Betriebssystemen nativ vorhanden sind, versucht SWT hier einen Mittelweg zwischen Performance und Funktionsumfang zu beschreiten. Wenn das Betriebssystem ein entsprechendes natives
Gegenstück besitzt, wird dieses verwendet, ansonsten wird es von SWT emuliert.
SWT ist inzwischen bei Java Entwicklern auch außerhalb von EclipseEntwicklungen sehr beliebt und wird immer häufiger als Widgetset für grafische
Java Anwendungen verwendet. Mit JFace stellt die Eclipse Foundation inzwischen
ein Toolkit zur Verfügung welches auf SWT aufsetzt und dieses um einen MVC Ansatz erweitert. Es ist dadurch möglich, komplexere GUI Komponenten zu erzeugen.
Mit der Veröffentlichung von Eclipse 3.2 wurde ebenfalls die Callisto-Suite [Ecl06d]
bereitgestellt. Callisto, benannt nach einem der zehn Jupiter Monde, ist eine Initiative der Eclipse Foundation mit dem Ziel, mehrere Projekte zu einem gemeinsamen
Release-Termin für neue Versionen zu verpflichten. Nach Installation der Eclipse
Kerndistribution, bestehend aus Java Development Tools (JDT), Eclipse Plattform
und Plugin Development Environment (PDE), können über eine Update Funktion bei
Bedarf Projekte aus Callisto nachgerüstet werden.
Die Callisto-Suite besteht aus den folgenden Projekten:
Business Intelligence and
Reporting Tools (BIRT) 2.1
[Ecl06j]
Infrastruktur und Anwendungen für die Entwicklung, Verteilung, Generierung und Betrachtung von
Berichten in einer Organisation. Zusätzliche Subprojekte behandeln beispielsweise die statistische Analyse.
C/C++ Development Tooling
(CDT) 3.1 [Ecl06e]
Das CDT Projekt stellt eine komplette C/C++ Entwicklungsumgebung für die Eclipse Plattform bereit.
Eine Evaluierung dazu wurde in der Partnerarbeit
von Florian Skopik in [Sko07] zeitgleich mit dieser
Arbeit durchgeführt.
Data Tools Platform (DTP)
DTP hat sich zum Ziel gesetzt, Entwicklungswerk-
Evaluierung
29
1.0 [Ecl06h]
zeuge für datenbasierte Applikationen bereitzustellen. Es versucht Konzepte anzubieten, die einen einheitlichen Zugriff auf diverse Datenquellen (nicht
nur Datenbanken) ermöglichen. (siehe Kapitel Bewertung nach Kriterienkatalog – Programmierung)
Eclipse Modelling Frame- Ein Modellierungsframework und Codegeneriework (EMF) 2.2 [Ecl06p]
rungswerkzeug, welches es ermöglicht, Anwendungen basierend auf einem strukturierten Datenmodell
zu entwickeln.
Graphical Editor Framework
(GEF) 3.2 [Ecl06i]
GEF ermöglicht die Entwicklung grafischer Editoren auf Basis eines existierenden Applikationsmodells. Aus Entwicklersicht hat diese Vorgangsweise
den Vorteil, dass auf allgemeine, von GEF zur Verfügung gestellte, Operationen zurückgegriffen werden kann und die Möglichkeit besteht, diese bei Bedarf für domänenspezifische Applikationen zu erweitern.
Graphical Modeling Framework (GMF) 1.0 [Ecl06q]
Dieses Framework versucht die Projekte EMF und
GEF zu verbinden und so die Möglichkeit einer grafischen Modellierung zu schaffen. Basierend auf
modellgetriebenen Entwicklungstechniken ermöglicht GMF die Generierung von grafischen Modellierungseditoren.
Eclipse SDK 3.2
Kernplattform mit Unterstützung für Java und Eclipse RCP basierte Anwendungsentwicklung
Test and Performance Tools
Platform (TPTP) 4.2 [Ecl06r]
TPTP enthält Werkzeuge für die Durchführung von
Tests und Performanceanalysen, um die Qualität der
erstellten Anwendung während des gesamten Entwicklungsprozesses zu überprüfen und gegebenenfalls verbessern zu können. (siehe Kapitel Bewertung nach Kriterienkatalog – Softwarequalitätssicherung)
Web Tools Platform (WTP)
WTP enthält Entwicklungswerkzeuge für J2EE
Webapplikationen. (siehe Kapitel Bewertung nach
Evaluierung
30
1.5 [Ecl06f]
Kriterienkatalog – Programmierung)
Visual Editor (VE) 1.2
[Ecl06g]
Framework zur Entwicklung von GUI Designern
(siehe Kapitel Bewertung nach Kriterienkatalog –
Editor)
Tabelle 3.1: Eclipse - Überblick über die einzelnen Callisto Projekte
Der Marktanteil von Eclipse steigt, vor allem im Bereich der Java IDEs, seit Veröffentlichung von 1.0 im Jahr 2001 stetig an. So bescheinigten Umfragen, welche im
Jahr 2004 bzw. 2005 durchgeführt wurden, Eclipse einen Markanteil von 56,2%
bzw. 65,1% unter Java IDEs [BZ05].
3.1.2 Bewertung nach Kriterienkatalog
Editor
Eclipse verfügt über einen leistungsfähigen und vollständigen Editor, der dennoch
nicht überladen wirkt, siehe Abbildung 3.2. Die entsprechenden Editorkriterien aus
dem Kriterienkatalog werden alle unterstützt.
Abbildung 3.2: Eclipse - Codeeditor
Der Codeeditor verfügt über die Fähigkeit, den Quelltext in Echtzeit bereits bei der
Eingabe auf korrekte Syntax zu überprüfen. Falls eine Syntaxverletzung vorliegt,
Evaluierung
31
wird diese durch eine rote Unterwellung des betroffenen Bereichs gekennzeichnet.
Hierbei wäre es möglicherweise sinnvoll, die aktuell editierte Zeile von der Überprüfung auszunehmen, da jedes Codestück während der Eingabe temporär syntaktisch
fehlerhaft ist. Mittels Code Folding können einzelne Abschnitte (Methoden, Kommentare, Import-Statements) geklappt werden (siehe Abbildung 3.2: Zeile 19 bis 22).
Gefaltete Elemente können, mit am linken Editorrand platzierten kleinen
Plus/Minus-Grafiken, manuell auf- bzw. zusammengeklappt werden. Wird der
Mauszeiger über eine Plus-Grafik bewegt, erscheint der gefaltete Bereich als Tooltip-Text. Die „Marker Bar“ am linken Editorrand wird verwendet um z. B. Compilerfehler bzw. Warnungen (Abbildung 3.2: Zeile 8) anzuzeigen, Debugger Breakpoints (Abbildung 3.2: Zeile 13) sowie Lesezeichen zu setzen. Am rechten Editorrand befindet sich ein schmaler Streifen bei dem, mittels kleiner Rechtecke, die Anzahl und Position von Fehlern und Warnungen relativ zur Gesamtlänge der Quelltextdatei angezeigt werden. Durch einen Mausklick auf ein solches Rechteck ist es
rasch möglich zu den jeweiligen Problemen zu navigieren.
Fast in jeder Situation bietet der Editor durch Drücken einer bestimmten Tastenkombination eine Hilfestellung. Man kann package oder import-Deklarationen komplettieren. Innerhalb von Klassendefinitionen kann man sich Methodensignaturen für aus
Oberklassen vorhandenen Methoden einfügen lassen. Zudem kann man mit Hilfe
eines Template-Generators generische Methoden-Templates einfügen. So reicht etwa
ein „main“, um die übliche Startmethode einer Java-Anwendung im Quelltext zu
erstellen. Auch innerhalb von Methoden können Templates bei der Eingabe helfen.
Ein „for“ reicht, um etwa über ein Array oder eine Liste zu iterieren. Die Namen der
Laufvariable oder des Arrays können dabei eingestellt werden, müssen jedoch nur
einmal angegeben werden, da innerhalb des Templates automatisch alle Vorkommen
passend benannt werden. Eclipse versucht dabei, sinnvolle Variablennamen zu verwenden. Steht vor einem „for“ eine Array-Definition, so wird dieser Name benutzt.
Außerdem können alle Templates angepasst oder nach eigenen Wünschen erweitert
werden.
Die Code Completion öffnet nach kurzer Wartezeit oder durch Drücken einer entsprechenden Tastenkombination einen Assistenten, der alle, an der jeweiligen Stelle
syntaktisch möglichen, Alternativen präsentiert. Kurze Zeit später wird auch der
JavaDoc-Text [JaD06] zum ausgewählten Kandidaten angezeigt. Entscheidet man
sich für eine bestimmte Methode, bietet Eclipse schließlich noch eine Ausfüllhilfe
für die Parameter. Besonders praktisch ist die Code Completion auch bei inneren
Klassen. Um etwa einen ActionListener zu implementieren, reicht es, nach dem Text
„new ActionListener(“ die Completion auszulösen, und Eclipse fügt automatisch die
Evaluierung
32
notwendige Methode hinzu. Gibt es mehr als eine Methode, öffnet sich ein Auswahldialog. Sehr häufig bietet Eclipse auch eine Auswahl von Vorschlägen, wie ein
bestimmer Fehler korrigiert werden kann, den sogenannten QuickFix. Dazu kann ein
Popup-Menü geöffnet werden, welches anbietet, falsch geschriebene Methoden zu
korrigieren, neue Methoden zu implementieren, Imports oder Casts hinzuzufügen
und einiges mehr. [AR04]
Die meisten Editorfunktionalitäten können bei Bedarf angepasst oder komplett deaktiviert werden.
Mit dem Visual Editor (VE) [Ecl06g], aus der Callisto-Suite, stellt die Eclipse Foundation einen GUI-Designer zur Verfügung. Er kann bequem über die Eclipse Aktualisierungsfunktion installiert werden. VE ist nach [Ecl06g] eigentlich kein GUIDesigner sondern vielmehr ein Framework für die Entwicklung von User-InterfaceDesignern, kommt jedoch mit Referenzimplementierungen zur Gestaltung von Benutzeroberflächen mit den Java WidgetSets Swing und SWT. Es ist beabsichtigt,
den Visual Editor auch als Basis für GUI Designer anderer Programmiersprachen,
wie etwa C/C++, und alternativen WidgetSets, welche nicht von Java direkt unterstützt werden, zu verwenden.
Abbildung 3.3: Eclipse - Visual Editor Ansicht
Evaluierung
33
Die Oberflächeninformation wird beim Visual Editor nicht wie bei einigen anderen
GUI Designern in einer zusätzlichen Datei abgelegt, sondern die Komponenten- und
Layoutinformationen werden direkt aus dem Java Quelltext geparst. Es ist damit
prinzipiell möglich eine beliebige Java Datei mit dem Visual Editor zu öffnen. Es
steht eine Zwei-Wege Ansicht zur Verfügung: Einerseits wird die grafische Oberfläche in einer WYSIWYG Ansicht angezeigt, andererseits wird auch der Java Code
dargestellt. Änderungen in einer der beiden Ansichten rufen automatisch eine Änderung in der jeweils anderen Darstellung hervor. Der Editor unterstützt sämtliche LayoutManager der Java Standard Distribution, die Bedienung ist jedoch unterschiedlich
bequem. So werden absolute Positionierung [Sun06b] oder einfache LayoutManager
wie etwa das BorderLayout [Sun06c] sehr komfortabel unterstützt, komplexe Layouts, die etwa mit dem GridBagLayout [Sun06d] erstellt werden, erfordern jedoch
Hintergrundwissen über die genaue Funktionsweise des Managers und nehmen dem
WYSIWYG Editor seine Vorteile gegenüber der manuellen Konstruktion des grafischen Interfaces im Quelltext. Wünschenswert wäre die Unterstützung von LayoutManagern, welche explizit für Java GUI Designer entwickelt wurden wie etwa dem
GroupLayout [Sun06f].
Abbildung 3.4: Eclipse - WindowBuilder Ansicht, Formular mit Grouplayout
Evaluierung
34
Obwohl der Visual Editor sehr leistungsfähig ist, reicht er von der Bedienbarkeit und
Performance nicht an die GUI-Designer von Netbeans und IntelliJ IDEA, siehe deren Evaluierung, heran. Es stehen jedoch eine Reihe weiterer, großteils kommerzieller, Interface Designer als Eclipse Erweiterungen zur Verfügung.
Mit dem WindowBuilder [Ins06] der Firma Instantiations steht ein kommerzieller
GUI Designer für Eclipse zur Verfügung, der ebenfalls direkt mit dem Quelltext arbeitet, mit dem sich jedoch durch die Unterstützung von LayoutManagern wie
GroupLayout oder FormLayout [Jgo06] auch komplexe grafische Strukturen einfach
erstellen lassen. Der WindowBuilder unterstützt wie der Visual Editor sämtliche
gebräuchlichen Java WidgetSets: AWT, Swing und SWT.
Alle untersuchten GUI Designer ermöglichen das Platzieren von Komponenten per
Drag And Drop von der sogenannten Palette, die auch um eigene Komponenten (JavaBeans [Sun06g]) erweitert werden kann, in die grafische Ansicht.
Eclipse stellt einen umfangreichen Refactoringsupport zur Verfügung und deckt damit alle im Kriterienkatalog beschriebenen Refactoring-Prozesse ab (siehe Abbildung 3.5). Vor der Durchführung eines Refactorings bietet Eclipse die Möglichkeit
einer Voransicht, um alle Änderungen prüfen zu können.
Abbildung 3.5: Eclipse - Refactoringmethoden, Voransicht eines Refactoringprozesses
Refactorings, die lokal an einem Projekt durchgeführt werden, können in einem Refactoring-Skript gespeichert werden und so automatisiert in beliebigen Projekten
angewendet werden. Beispielsweise ist es denkbar, dass der Hersteller einer Soft-
Evaluierung
35
warebibliothek während seiner Refactorings diese in einer Datei mitprotokolliert.
Den Kunden wird bei einer neuen Version der Komponente auch die Skriptdatei mitgeliefert, um ihnen die Möglichkeit zu bieten, alle Änderungen, welche durch die
aktualisierte Hersteller-Komponente notwendig werden, automatisch durch das
Skript durchführen zu lassen.
Die Eclipse Distribution steht neben der hier evaluierten englischen Version durch
die Unterstützung sogenannter Language Packs [Ecl06k] auch in vielen anderen
Sprachen zur Verfügung. Da es viele Plugins oft nur auf Englisch gibt, sollte man
jedoch nach Möglichkeit die englische Fassung von Eclipse beibehalten, um etwaige
sprachliche Inkonsistenzen zu vermeiden.
Der Aufbau der Arbeitsumgebung wird unter Eclipse mit sogenannten Perspektiven
realisiert. Eine Perspektive definiert eine Reihe von Fenstern (im Eclipse-Kontext als
Views bezeichnet) welche so angeordnet sind, dass sie für den gewählten Zweck
eine produktive und bequeme Anwendung ermöglichen. Es ist möglich, bestehende
Perspektiven zu kopieren oder abzuändern, um es den eigenen Bedürfnissen anpassen zu können. Zu den wichtigsten Views, neben der Editoransicht, für die Java
Entwicklung zählen:
•
Package Explorer: Dieser gibt einen Überblick über die Projekte mit dessen
Elementen, wie Packages, Klassen, Methoden und Variablen.
•
Outline View: Diese dient zur Anzeige von Strukturdaten einer Ressource. In
der Java Entwicklung werden die Klassen, Methoden und Variablen, der aktuell geöffneten Java Datei, angezeigt. Im Unterschied zum Package Explorer, welcher ebenfalls in der Lage ist diese Informationen anzuzeigen, ermöglicht die Outline View eine individuelle Anzeige der Strukturen.
•
Problems View: Diese Komponente zeigt gefundene Probleme an, beispielsweise Kompilierfehler und Warnungen.
•
Tasks View: Diese enthält eine Liste von Aufgaben mit einer Referenz zur
betroffenen Datei mit Liniennummer. Einträge in diese Liste können beispielsweise direkt im Sourcecode, durch „ToDo“ Inline-Kommentare, hinzugefügt werden.
Entwurfsmuster (Design Patterns) werden von Eclipse standardmäßig nicht unterstützt. Erweiterungen für ältere Eclipse Versionen, welche zum Zeitpunkt des Verfassens dieser Arbeit mit der aktuellen Eclipseversion nicht kompatibel waren, ste-
Evaluierung
36
hen mit den Erweiterungen PatternBox [Pat06], Pattern Support for Eclipse (PSE)
[PSE06] und WebOfPatterns [WOP06] zur Verfügung.
Modellierung
Die Firma Omondo [Omo06a] bietet mit EclipseUML ein umfangreiches UML Modellierungswerkzeug als Eclipse Erweiterung an. EclipseUML bietet eine umfangreiche UML2 Unterstützung und erlaubt die Erstellung folgender Diagramme: Aktivitätsdiagramm, Anwendungsfalldiagramm, Klassendiagramm, Kollabrationsdiagramm, Kompontendiagramm, Objektdiagramm, Sequenzdiagramm, Verteilungsdiagramm und Zustandsdiagramm. Die Modellierungssoftware setzt auf die Eclipse
Projekte Graphical Editor Framework (GEF) und Eclipse Modeling Framework
(EMF) auf und erlaubt so eine native Integration in die Plattform.
Abbildung 3.6: Eclipse - EclipseUML, Klassendiagramm während Roundtrip Engineerings
EclipseUML unterstützt Forward Engineering, Reverse Engineering und Roundtrip
Engineering. In Abbildung 3.6 wird exemplarisch gezeigt, wie in einem einfachen
Projekt parallel mit Klassendiagramm und Quelltext gearbeitet werden kann. Änderungen im Quelltext sollten direkt in das Diagramm übernommen werden und umgekehrt. Diese Vorgangsweise würde einem Roundtrip Engineering enstprechen.
Quellcode- und UML-Ansicht können übersichtlich nebeneinander platziert werden.
EclipseUML leistet sich beim Editieren jedoch einige Synchronisierungsfehler, so-
Evaluierung
37
dass nicht alle Änderungen übernommen werden. Erst ein komplettes Schließen der
UML Ansicht, gefolgt von einem erneuten Öffnen, kann das Problem beheben. Es
stellt sich die Frage, ob durch dieses Problem ein sinnvolles Arbeiten mit komplexen
Projekten möglich ist, da es schon bei relativ einfachen Klassenstrukturen zu derartigen Problemen kommen kann.
Zur Dokumentation bietet EclipseUML die Möglichkeit eine erweiterte JavaDoc
API-Dokumentation zu erstellen, welche auch auswählbare UML Diagramme enthalten kann.
Laut Omondo wird EclipseUML gegen Ende 2006 um Funktionen für die Modellgetriebene Entwicklung erweitert.
Für die modellgetriebene Entwicklung existiert die Erweiterung openArchitectureWare (oAW), welche seit Anfang 2006, als Teil des Technology Project für modellgetriebene Entwicklung Eclipse GMT, ein offizielles Eclipse Projekt ist. Mit oAW
ist es prinzipiell möglich, beliebige Modelle zu verarbeiten. Standardmäßig bietet es
Unterstützung für EMF, verschiedenste UML Werkzeuge, wie beispielsweise MagicDraw [MD06], Poseidon for UML [Pos06], Enterprise Architect [EA06], Rational
Rose [Rose06], Eclipse UML2, textbasierte Modelle, XML und Visio. Aus diesen
Modellen kann openArchitectureWare beliebige textuelle Ausgaben generieren.
Die Integration von oAW in Eclipse unterstützt den Entwickler, sowohl bei der Generatorenentwicklung, als auch bei der Erstellung einer domänenspezifischen Entwicklungsumgebung auf Basis der entwickelten Generatoren. Für die erstellte IDE
können beispielsweise GEF-basierte Editoren entwickelt werden.
Die Entwicklung eines Generators basierend auf oAW umfasst nach [Vö06b] drei
Haupttätigkeiten: Die Definition/Implementierung des Metamodells der betreffenden
Domäne, das Schreiben von Templates sowie die Verifikation, welche das korrekte
Laden und Verarbeiten von Modellen ermöglicht. Die Implementierung des Metamodells geschieht mittels Javaklassen, bei deren Entwicklung JDT zum Einsatz
kommt oder Klassen, welche aus einer existierenden UML-Modelldefinition automatisch generiert werden. Bei der Erstellung der Templates mit der oAWTemplatesprache unterstützt der Editor den Entwickler mit bereits bekannten Funktionalitäten wie Code Completion und Syntax Highlighting. Die Generierung und
Modellverifikation erfolgt normalerweise mit Hilfe eines Ant-Skriptes [Ant06]. Treten bei diesem Vorgang Probleme auf, hilft die IDE mit nützlichen Warnungen und
Tipps.
Evaluierung
38
Abbildung 3.7: Eclipse - openArchitectureWare Funktionsüberblick (nach [Völ06a])
Ein wichtiger Aspekt bei modellgetriebener Entwicklung ist die Definition der domänenspzifischen Sprache DSL. Diese kann sowohl textbasiert als auch grafisch
sein. Bei der grafischen Variante benötigt man einen entsprechend leistungsfähigen
Editor, der jedoch meist nicht zur Verfügung steht. Alternativ wird oft auf UML und
Profile ausgewichen. OpenArchitectureWare stellt für diese Tätigkeit einen Generator zur Verfügung, mit dem es möglich ist, einen grafischen Editor für die DSL zu
erzeugen.
Ein weiteres UML/MDA Modellierungswerkzeug steht mit dem Borland Produkt
Together als Eclipse Plugin zur Verfügung. Together gibt es nätürlich auch für die
Borland eigene IDE JBuilder und wurde in dieser Arbeit im entsprechenden Abschnitt bereits behandelt.
Evaluierung
39
Programmierung
Eclipse stellt in der Standarddistribution zunächst eine umfangreiche Umgebung zur
Entwicklung von Javaanwendungen zur Verfügung. Die Eclipse Foundation stellt
mit der CDT Erweiterung, welche Teil der Callisto Distribution ist, eine Möglichkeit
bereit, auch C bzw. C++ Code mit der Eclipse Plattform zu entwickeln [Sko07].
Von Seiten der Community wird intensiv an der Unterstützung anderer Programmiersprachen gearbeitet. So stehen inzwischen beispielsweise Eclipse basierte Entwicklungsumgebungen für die Programmiersprachen PHP [PhE06], Perl [PeE06]
und Phyton [PyE06] zur Verfügung. Der Entwicklungsstand dieser Erweiterungen ist
derzeit noch sehr unterschiedlich und liegt meist deutlich unter der Java Unterstützung durch JDT.
Die Eclipse 3.2 Kerndistribution stellt mit der Plugin Entwicklungsumgebung PDE
notwendige Klassenbibliotheken und entsprechende IDE Funktionalitäten bereit, um
sowohl Eclipse Erweiterungen, als auch eigenständige Rich-Client-Plattform Anwendungen auf Basis des Eclipse Frameworks entwickeln zu können.
Für viele Klassenbibliotheken, welche Teil des Java Development Kits sind, existiert
eine entsprechende Unterstützung durch Eclipse. Die Entwicklung mit den grafischen Frameworks AWT und Swing wird beispielsweise durch den GUI-Designer
Visual Editor wesentlich vereinfacht.
Callisto bietet über die automatische Update- und Erweiterungsfunktion eine Reihe
von häufig benötigten Klassenbibliotheken und Frameworks. Tabelle 3.2 zeigt eine
Aufstellung der mitgelieferten Bibliotheken. In den meisten Fällen ist es nicht notwendig diese Komponenten explizit zu installieren, da sie meist als Abhängigkeiten
von den einzelnen Callisto Projekten benötigt und daher automatisch bei der Installation eines dieser Projekte bezogen werden.
Apache Batik 1.6.0 [Apa06i]
Diese Bibliothek ermöglicht die Darstellung, das
Erzeugen und die Manipulation von Scaleable Vector Graphics (SVG) [SVG06]. Batik kann darüber
hinaus auch SVGs in Rastergrafiken konvertieren.
Apache Commons Codec
1.3.0 [Apa06a]
Implementierungen für häufig verwendete Ver- und
Entschlüsselungsverfahren wie beispielsweise Base64, Hex und URLs
Apache commons logging
Diese Bibliothek stellt eine allgemeine Schnittstelle
Evaluierung
40
1.0.4 [Apa06b]
für verbreitete Logging-Bibliotheken, wie Log4J
[L4J06] oder das Sun Java Logging Framework
[JAPI06a] bereit.
Apache Derby Core 10.1.2
[Apa06j]
Derby ist ein Java-basiertes relationales DatenbankManagement-System. Aufgrund seiner geringen
Größe kann es sehr einfach mit Java Applikationen
gebündelt werden. Derby ist ab Version 1.6 in das
Java Development Kit integriert.
Apache Jakarta log4j 1.2.8
[L4J06]
Log4J ist ein Framework zum Loggen von Java
Anwendungsmeldungen. Die Meldungen können
wahlweise auf die Standardausgabe, in eine Datei
oder in beliebige andere Ziele geschrieben werden.
Apache Xerces 2.8.0
[Xerces06]
Xerces ermöglicht das Parsen und Generieren von
XML-Daten. Das Unterprojekt Xerces-J stellt validierende Parser für Java bereit.
Lowagie iText 1.3.0
[iText06]
iText erlaubt die Erstellung und Manipulation von
PDF, RTF und HTML Dateien. Das Hauptaugenmerk liegt jedoch auf das PDF-Format, für welches
iText auch die meisten Operationen zur Verfügung
stellt.
Mozilla Rhino 1.6.0
[Rhino06]
Rhino ist eine Implementierung der Skriptsprache
JavaScript. Es ermöglicht das Kompilieren von JavaScript-Quelltext in Java-Bytecode aber auch eine
JavaScript Interpretation zur Laufzeit.
Tabelle 3.2: Eclipse - Mitgelieferte Klassenbibliotheken der Callisto Distribution
Eine typische Middleware-Art ist laut [And04] die Message Oriented Middleware
(MOM). Diese ermöglicht die Kommunikation zwischen lose gekoppelter Komponenten und Systemen. Message Oriented Middleware dient der asynchronen Kommunikation von Komponenten und Systemen anhand von Botschaften (Messages).
Eine solche Message Oriented Middleware ist im Java Message Service [JMS06]
(JMS) von Sun Microsystems beschrieben. JMS wird von dem Teilprojekt JST der
Web Tools Platform (WTP) unterstützt.
Evaluierung
41
Die von der Object Management Group (OMG) standardisierte MiddlewareArchitektur CORBA [COR06] wird von keinem Produkt der Eclipse Foundation
direkt untersützt, es stehen jedoch mit ORB Studio [OSt06] und EclipseCorba [ECo06] entsprechende Erweiterungen zur Verfügung, um CORBA Funktionalitäten
nachzurüsten.
Komponenten-Standards sind im Java Bereich vor allem in der Java 2 Platform, Enterprise Edition, J2EE anzutreffen. J2EE ist ein laut [And04] ein von Sun Microsystems entwickeltes Rahmenwerk für Design, Entwicklung, Zusammenbau und
Verteilung von Unternehmens-Anwendungen auf Basis von Komponenten. Die Unterstützung von J2EE in Eclipse wird durch das Callisto-Projekt Web Tools Platform
bereitgestellt, welche in diesem Abschnitt noch beschrieben wird.
Wird Eclipse als IDE zur Entwicklung von Javaanwendungen verwendet, ist es, wie
jede andere Java Entwicklungsumgebung, im Grunde „nur“ ein Frontend zur Programmierung mit einem entsprechenden Java Development Kit, beispielsweise der
Firma Sun Microsystems. Durch diese Tatsache und durch die große Verbreitung der
Programmiersprache Java stehen Klassenbibliotheken und Komponenten von Drittanbietern in sehr großem Umfang zur Verfügung. Java Klassenbibliotheken werden
normalerweise als JAR-Archive bereitgestellt. Zusätzlich gibt es meist eine JavaDoc
API-Dokumentation. Das jeweilige Archiv und die Dokumentation lassen sich bequem zu einem Projekt hinzufügen. Die JavaDoc-Dokumentation ist nützlich, um
zusätzlich zur Code Completion des Editors auch eine kurze Hilfestellung aus der
API-Dokumentation einblenden zu können.
Abbildung 3.8: Eclipse - Klassenbibliothek eines Drittanbieters einbinden
Evaluierung
42
Optional ist es auch möglich, neben der API-Dokumentation, den Quelltext der Klassenbiblothek einzubinden. Das hat den Vorteil, dass jederzeit spezielle Implementierungsdetails untersucht werden können, und die Dokumentation direkt aus Quelltextkommentaren geparst werden kann.
Bei der Internationalisierung von Anwendungen stehen in der Standard Java Klassenbibliothek bereits eine Reihe von Klassen zur Verfügung, die diesen Vorgang
erheblich vereinfachen. Mit der Klasse java.util.Locale beispielsweise kann
die gewünschte Sprache und geographische Region gesetzt werden. Basierend auf
diesen Informationen werden sprachabhängige Informationen, z. B. Datumsdarstellung, entsprechend spezifisch angezeigt. Wenn Java-Programme sprachunabhängig
gestaltet werden sollen, besteht die Möglichkeit, alle Zeichenketten einer Sprache
durch symbolische Namen, wie Variablen zu ersetzen. In Java wird die Verbindung
zwischen den Variablen und den sprachspezifischen Texten mithilfe der Klasse java.util.ResourceBundle hergestellt. Diese Klasse ermöglicht es, alle Texte und
Informationen einer Lokalisierung in einer Datei abzulegen. In dieser Datei wird für
jeden Text ein Schlüssel-Text Paar abgelegt. Um keine Probleme mit unterschiedlichen Zeichenkodierungen zu bekommen, werden die Dateien konsequent Unicode
codiert.
Zum Auslagern der länderspezifischen Texte bietet Eclipse einen komfortablen Assistenten an, siehe dazu Abbildung 3.9.
Abbildung 3.9: Eclipse - Assistent zum Auslagern sprachspezifischer Texte
Evaluierung
43
Zum Verwalten und Übersetzen der einzelnen Sprachdateien bietet sich das kostenlose Eclipse Plugin JInto [JInto06] an. In JInto werden die Texte in einer konfigurierbaren Sprachspalte zum Editieren angezeigt. Änderungen werden automatisch in
der entsprechenden Sprachdatei gespeichert.
Eclipse 3.2 ist die erste Eclipse Version, welche eine umfangreiche Datenbankunterstützung direkt von der Eclipse Foundation enthält. Die Data Tools Platform (DTP)
ist Teil der Callisto Suite und stellt eine Reihe datenbankspezifischer Funktionalitäten bereit.
DTP ermöglicht die Verwaltung von mehreren Datenbankverbindungen. Für einige
Datenbanksysteme, wie beispielsweise MySQL, Oracle oder Sybase, werden die
notwendigen Treiber bereits mitgeliefert. Für andere Datenbanksysteme können die
JDBC Treiber des jeweiligen Herstellers einfach nachgerüstet werden. DTP Datenquellen sind nicht auf relationale Datenbanken beschränkt. Die sogenannten ODA
(Open Data Access) Quellen bieten auch Unterstützung für Formate wie CSV oder
XML.
Um eine Datenbankverbindung einzurichten, steht ein komfortabler Assistent zur
Verfügung. Die Data Tools Platform enthält eine spezielle Datenbankperspektive,
welche zunächst eine Ansicht zur Verwaltung der einzelnen Verbindungen bietet,
den Data Source Explorer. Dieser bietet eine Übersicht über die Strukturen der verbundenen Datenbank, wie Tabellen, Spalten, gespeicherte Prozeduren und Trigger.
Die Hauptansicht der Datenbankperspektive ist ein SQL-Abfrageeditor. Er unterstützt das Öffnen und Speichern von Dateien, Syntax Highlighting, Code Completion
und eine Möglichkeit, Abfragen durchzuführen. Die Abfrageergebnisse werden in
einer weiteren Ansicht in tabellarischer Form angezeigt und können auch spaltenweise sortiert werden. Ältere Abfragen und deren Ergebnisse werden in einer Liste
verwaltet und können jederzeit bequem untersucht werden. Die Resultate können
auch in verschiedenste Formate exportiert werden.
Einige interessante Features sind laut [Ecl06h] geplant, darunter ein grafischer SQLEditor und eine detaillierte Abfrageanalyse.
Zur Webentwicklung stellt die Eclipse Foundation die Web Tools Platform (WTP)
zur Verfügung, welche auch Teil der Callisto Familie ist. Das Ziel der WTP ist es,
nach [Car05], eine allgemeine, erweiterbare und auf anerkannte Standards aufbauende Plattform bereitzustellen, welche auf Eclipse Kernmodule aufsetzt. Das WTPPlugin besteht aus den Teilprojekten Web Standard Tools (WST) und Java Standard
Evaluierung
44
Tools (JST). Die Web Standard Tools stellen die grundlegende Infrastruktur für das
Erstellen von Webapplikationen bereit und halten sich an festgelegte Standards von
W3C, OASIS und ANSI. Zu diesen Standards gehören beispielsweise HTML, XML,
XML Schema, XPath, SQL aber auch WebServices wie UDDI und WSDL. Die für
das Teilprojekt JST relevanten Standards werden durch den sogenannten Java Community Process [JCP06] definiert. JST erlaubt die Entwicklung von Webanwendungen gemäß der J2EE Spezifikation [J2EE06]. Durch diese beiden Teilprojekte werden Werkzeuge für nicht-programmiersprachenabhängige Teile einer Webapplikation durch WST abgedeckt und der JST Teil ermöglicht die Realisierungen mittels
J2EE Technologie. WTP deckt damit nur einen Teil der vorhandenen Technologien
für Webanwendungen ab, Quasi-Standards wie Struts [Struts06] und Hibernate
[Hib06] werden nicht direkt unterstützt. Das Web Tools Projekt hat jedoch nicht das
Ziel, Lösungen für alle denkbaren Anwendungsfälle bereitzustellen, sondern bietet
eine erweiterbare Plattform, die als Basis für zusätzliche Technologien gut geeignet
ist.
Abbildung 3.10: Eclipse - WTP Funktionsumfang (Grafik nach [EM05])
Das Web Standard Tools Teilprojekt bietet eine umfassende Editorunterstützung für
Standardsprachen wie HTML/XHTML, SQL und XML. So stehen die für Eclipse
typischen Features wie Refactoring, Code Completion, spezielle Outline Views für
Evaluierung
45
die Struktur des jeweiligen Dokuments und die Möglichkeit, eigene Code-Templates
zu definieren, zur Verfügung. Die XML Unterstützung ist umfangreich und ermöglicht auch die Validierung der Strukturen gegen entsprechende Schemadefinitionen.
Das Plugin bietet auch die Möglichkeit einer Anbindung der marküblichen Applikationsserver, wie JBoss oder Tomcat, mittels Serveradapter. Spezielle Server können
gegebenenfalls auch über eine generische Anbindung mittels XMLKonfigurationsdatei eingebunden werden. Die eingebundenen Zielserver können aus
der Plattform heraus gestartet, gestoppt und die entwickelte Anwendung darauf ausgeführt werden. Das JST Teilprojekt beherrscht typische J2EE Artefakte, siehe dazu
Tabelle 3.3. Weiters stellt es einen komfortables Java Server Pages Editor zur Verfügung welcher sowohl HTML als auch JSP Code inklusive Refactoring beherrscht.
Enterprise Java Beans (EJB)
[EJB06]
Unter Enterprise Java Beans versteht man nach
[And04] eine von Sun Microsystems ausgearbeitete
Standard-Architektur zur Entwicklung verteilter
komponentenbasierter Unternehmensanwendungen
auf Basis der Programmiersprache Java.
Servlets [Serv06]
Servlets sind nach [And04] Java-Klassen, die eine
Anfrage (Request) dynamisch verarbeiten und eine
Antwort erzeugen.
Java Server Pages (JSP)
[JSP06]
Java Server Pages sind nach [And04] textbasierte
Dokumente, die als Servlets ausgeführt werden.
Java Database Connectivity
(JDBC) [JDBC06]
JDBC ist eine Java-API, die eine einheitliche und
standardisierte Schnittstelle zu verschiedensten Datenbanken bereitstellt. Der Schwerpunkt der Schnittstelle liegt bei der Unterstützung von relationalen
Datenbanken. JDBC-Implementierungen werden
meist direkt von den Datenbankherstellern bereitgestellt.
Java Transaction API (JTA)
[JTA06]
Die Java Transaction API erlaubt einer Anwendung
die Steuerung der Transaktionsverwaltung.
Java Message Service (JMS)
[JMS06]
Laut [BWB+06] versteht man unter JMS eine JavaAPI, die Interfaces bereitstellt, um Nachrichten zu
erzeugen, versenden, empfangen und lesen zu kön-
Evaluierung
46
nen. Die Nachrichten werden asynchron zwischen
Anwendungen und Komponenten ausgetauscht.
Java Naming and Directory
Interface (JNDI) [JNDI06]
JNDI ist eine Java-API für Verzeichnis- und Namensdienste. Die Schnittstelle erlaubt einen namensbasierten Zugriff auf Daten- oder Objektreferenzen. Im J2EE Umfeld wird JNDI vor allem verwendet, um verteilte Objekte in einem Netzwerk zu
registrieren und diese durch Remote-Aufrufe anderen Komponenten zur Verfügung zu stellen.
Java Webdienste [JWS06]
Webdienste sind nach [BWB+06] Komponenten,
deren Funktionalitäten und Daten von Clients oder
anderen Anwendungen über Protokolle der Internettechnologie angesprochen werden. Java Webdienste
werden in der Programmiersprache Java entwickelt.
Tabelle 3.3: Eclipse - Vom Teilprojekt JST von WTP unterstützte J2EE Artefakte
Für die Entwicklung von Java Anwendungen für mobile Endgeräte steht die Erweiterung EclipseME [EME06] zur Verfügung. Das Sun J2ME Wireless Toolkit (WTK)
[JWTK06] ist die Referenzimplementierung von J2ME [J2ME06] und MIDP
[MIDP06]. Es stellt notwendige Klassenbibliotheken sowie einen Geräteemulator
zur Verfügung. Neben Suns J2ME WTK stehen noch einige alternative Frameworks
von Herstellern Mobiler Endgeräte bereit, wie beispielsweise das Motorola SDK for
J2ME [MSDK06] bzw. die Nokia Developer Suite for J2ME [NSDK06]. EclipseME
integriert das gewählte Framework in die IDE, um so auch für diese spezielle Applikationsentwicklung die Vorzüge einer leistungsfähigen Entwicklungsumgebung mit
ihren Vorteilen, vor allem im Editor- und Softwarequalitätssicherungsbereich, nutzen zu können.
Evaluierung
47
Abbildung 3.11: Eclipse - EclipseME in Java Perspektive mit Sun J2ME WTK Simulator
EclipseME stellt eigene Projektassistenten für die Erzeugung der Grundstruktur der
mobilen Anwendung als auch für die Erstellung der MIDlet-Klassen [J2ME06] zur
Verfügung. Weiters steht ein komfortabler Editor für die Bearbeitung der sogenannten Java Application Descriptor (JAD) Datei bereit, welcher es erlaubt, die MIDlets
zu konfigurieren, ohne direkt in der entsprechenden Textdatei arbeiten zu müssen.
Damit kann die Fehleranfälligkeit reduziert werden. EclipseME erlaubt die Verteilung der Applikationen sowohl als Standard JAR/JAD Paket, als auch eine verschlüsselte Version, falls ein entsprechender Obfuscator installiert ist. Passende Obfuscatoren wären beispielsweise ProGuard [ProG06] oder RetroGuard [RetG06]. Die
Entwicklungsmöglichkeiten mobiler Java Applikationen mit EclipseME sind gegenüber den Möglichkeiten in anderen evaluierten Entwicklungsumgebungen etwas
eingeschränkt. So bietet EclipseME beispielsweise keinen Interface- bzw. Workflow
Designer.
Evaluierung
48
Softwarequalitätssicherung
Eclipse stellt einen komfortablen und leistungsfähigen Debugger zur Verfügung. Die
Debug-Perspektive (siehe Abbildung 3.12) bietet verschiedene spezielle Views für
die diversen Debugging Aktivitäten: Die Debug View zeigt alle laufenden Threads
mit ihren Stacks, wenn der Debugger z. B. durch einen Breakpoint unterbrochen
wurde. Variables-, Expressions- und Display View werden verwendet, um den derzeitigen Programmzustand untersuchen zu können. Mittels Variables View ist es
möglich, Felder, lokale Variablen und Methodenparameter anzuzeigen. Beispielsweise ist es möglich, den genauen Inhalt einer Liste anzuzeigen und falls gewünscht,
einzelne Elemente zu ändern (siehe Variables View in Abbildung 3.12). Breakpoints
View bietet eine Liste aller gesetzten Haltepunkte im Code.
Abbildung 3.12: Eclipse - Debugger Perspektive
Der Debugger ermöglicht es, sogenannte „Code Snippets“, also Quelltext, der nicht
Teil des untersuchten Projektes ist, in der Display View auszuführen. Die Untersuchung dieses Quelltexts geschieht im Kontext der derzeit gewählten Klasse. Es ist
beispielsweise möglich ein zusätzliches Listenelement hinzuzufügen oder selten aufgerufene Methoden im Betrieb zu testen. Der Eclipse Debugger unterstützt darüber
Evaluierung
49
hinaus „Hot Code Replace“, d. h. der Quelltext kann während einer Debugging Session geändert werden, ohne die Virtuelle Maschine neu starten zu müssen. Durch
Einschränkungen seitens der VM ist festgelegt, welche Teile des Codes geändert
werden dürfen.
Der Eclipse Debugger folgt dem Client-Server Designprinzip, d. h. das untersuchte
Programm kann von einem beliebigen Computer im Netzwerk gestartet werden und
von einem anderen Rechner mit Eclipse Installation debuggt werden. Diese Remote
Debugging Funktionalität ist besonders sinnvoll, wenn das Java Programm auf einer
Plattform läuft, auf der es nicht möglich ist Eclipse zu installieren, beispielsweise auf
einem PocketPC oder einem Handy. Auch zum Debuggen von Applikationen, die
auf bestimmten Serverplattformen laufen müssen, wie etwa eine Anwendung eines
J2EE Applikationsservers, ist dieses Debuggerdesign vorteilhaft zu nutzen.
Für Unit Tests wird in Eclipse das JUnit Testframework verwendet. Beim Durchführen von JUnit Testfällen wird automatisch in der aktuellen Perspektive eine entsprechende Ansicht eingeblendet, die in Funktion und Ansicht an die Orginal JUnit
Swingoberfläche angelehnt ist, siehe Abbildung 3.13. Eclipse unterstützt sowohl
JUnit Version 3 als auch JUnit 4. Dieses macht jedoch intensiven Gebrauch von Annotationen (mit Java 1.5 eingeführtes Sprachfeature) und setzt deshalb eine entsprechend aktuelle Java Version voraus.
Abbildung 3.13: Eclipse - JUnit Ansicht
Wünschenswert wäre eine integrierte Code-Coverage Analyse. Diese kann jedoch
durch Erweiterungen wie Coverlipse [Cov06] oder Clover [Clov06] nachgerüstet
werden.
Evaluierung
50
Mit dem Callisto Projekt TPTP (Test and Performance Tools Platform) steht Eclipse
eine Sammlung von Frameworks und Komponenten zur Verfügung, die Themen wie
Testen, Profiling und Monitoring adressieren. Der TPTP Profiler bietet eine Speicheranlyse, eine Laufzeitanalyse sowie eine Methoden-Code-Abdeckung. Es wird sowohl Lokal- als auch Remoteprofiling unterstützt. TPTP stellt für den Profiler eine
entsprechende Perspektive zur Verfügung. Die wichtigste View dieser Perspektive
ist der Profiling Monitor, eine Art Zusammenfassung über den aktuellen Profilingprozess darstellt (siehe Abbildung 3.14).
Bevor mit dem Profiling begonnen werden kann, muss zunächst gewählt werden,
welche Analysen durchgeführt werden sollen, sowie welche Informationen während
des Vorgangs gesammelt und aufbereitet werden müssen.
Die gesammelten Informationen können in den verschiedenen tabellarischen (z. B.
Speicherstatistik, Ausführungsstatistik, Objektreferenztabelle) und grafischen (z. B.
UML2 Sequenzdiagramm, Ausführungsflussdiagramm) Views aufbereitet werden.
Besonders interessant ist die Aufbereitung als Sequenzdiagramm. Die im Diagramm
aufgeführten Klassennamen sind direkt mit dem Quelltext verlinkt. Im linken Fensterbereich symbolisiert die Stärke der roten Farbe wie kritisch die Performance im
korrespondierenden Bereich des Sequenzdiagramms ist (siehe Abbildung 3.14).
Abbildung 3.14: Eclipse - Profiler mit Montitor und Sequenzdiagramm (Bildschirmfoto: [Ecl06s])
Quality Audits können beispielsweise mit der Eclipse Plugin Version des kostenlosen Programmes Checkstyle [CkS06] durchgeführt werden. Die Integration in die
Evaluierung
51
IDE erfolgt wie gewohnt durch eine entsprechende Installations-URL3 über die Eclipse Update Funktion. Checkstyle bettet sich in den Einstellungsdialog von Eclipse
ein, in dem Audit Konfigurationen definiert werden können, siehe dazu auch Abbildung 3.15.
Abbildung 3.15: Eclipse - Konfiguration des Audit Plugins Checkstyle
Es können mehrere Konfigurationen gleichzeitig angelegt und konfiguriert werden.
Standardmäßig enthält die Checkstyle Distribution die im Java Bereich häufig verwendeten Sun Code Conventions [SCC06]. Es lassen sich jedoch bequem weitere
Konfigurationen anlegen bzw. bestehende modifizieren. Alle erfassten Konventionen
können im XML-Format im- und exportiert werden und so z. B. anderen Projektmitgliedern zur Verfügung gestellt werden.
Checkstyle bindet sich in den Kompilierprozess von Eclipse ein, welcher bei vielen
aktivierten Regeln deutlich mehr Zeit benötigt. Nach dem Übersetzungsprozess werden die Ergebnisse sowohl im Meldungsfenster als auch direkt im Editor angezeigt.
Für Auditanalysen stehen für die Tools FindBugs [FB06] sowie PMD [PMD06] ebenfalls leistungsfähige Eclipse Erweiterungen zur Verfügung. Diese Programme
untersuchen den Quelltext jedoch weniger auf Code-Konventionen sondern mehr
nach potentiellen Fehlern und Schwachstellen, wie beispielsweise fehlende Excepti-
3 Checkstyle Installations URL: http://eclipse-cs.sourceforge.net/update
Evaluierung
52
onbehandlung im catch Block, unbenutzte Variablen und mehrfach vorhandener Code.
Das kostenlose Plugin Metrics [EMe06] erlaubt eine Analyse des Quelltexts nach
den üblichen Qualitätsmetriken. Nach der Eingabe der entsprechenden URL4 lässt
sich Metrics komfortabel über die Eclipse Update Funktion installieren. Die zu berücksichtigenden Metriken können im Eclipse Einstellungsdialog konfiguriert werden. Auf Projektebene muss das Plugin einmalig aktiviert werden, anschließend wird
der Code bei jedem Kompiliervorgang des Projekts, entsprechend der eingestellten
Metriken, analysiert.
Abbildung 3.16: Eclipse - Plugin Metrics
Metrics bietet eine tabellarische Ansicht, um zutreffende Metriken, des aktuell im
Projektnavigator selektierten Java Elements, beispielsweise eine Klasse oder ein
Paket, darzustellen. Zusätzlich existiert eine View mit einem Graphen, um die Abhängigkeiten der einzelnen Pakete ansprechend visualisieren zu können. Zur weiteren Verarbeitung, z. B. für Refactoringprozesse, können die erzeugten Daten als
XML-Datei exportiert werden.
Erweiterbarkeit der Entwicklungsumgebung
Im Bereich des Application Lifecycle Managements war man bei Eclipse bisher auf
externe Lösungen angewiesen. Mit dem relativ jungen Application Lifecycle Framework (ALF) Projekt [Ecl06m] der Eclipse Foundation wird derzeit daran gearbeitet die typischen Phasen der Anwendungsentwicklung, vom ersten Entwurf, über die
4 Metrics Installations URL: http://metrics.sourceforge.net/update
Evaluierung
53
Modellierung und darauf folgende Implementierung bis zum Testen und Ausliefern
des Produkts, abdecken zu können.
Derzeit wird nach [Ecl06n] bei einem typischen ALM-System auf eine Reihe verschiedenster Produkte zurückgegriffen, welche untereinander in einer Punkt-zuPunkt Kommunikation stehen. Diese Integrationsform ist adäquat für eine geringe
Anzahl beteiligter Anwendungen. Bei vielen Anwendungen steigt der Kommunikationsaufwand extrem an. Der Administrations- und Wartungsaufwand bei einer derartigen Konfiguration ist schwierig und die Fehleranfälligkeit nimmt zu.
Die ALF Lösung für dieses Problem ist nach [Ecl06n] die Einführung eines zentralen
Navigators welcher die Interaktionen zwischen den Anwendungen steuert. Ein standardisiertes Kommunikationsformat ermöglicht die einfache Integration einer neuen
Anwendung. Abbildung 3.17 zeigt einen Überblick über die ALF Architektur.
Abbildung 3.17: Eclipse - ALF Architektur (Grafik: [Ecl06n])
ALF strebt primär nicht die Neuentwicklung einzelner ALM Anwendungen an, sondern versucht vorhandene zu vereinen. Als ALF Anwendungen können entweder
Eclipse Plugins oder externe Anwendungen verwendet werden.
Die Firma Borland, welche mit ihren Produkten einen kompletten Application Lifecycle abdecken kann (siehe dazu auch [Sko07]), hat damit begonnen ihre ALM Produkte auch für die Eclipse Plattform bereitzustellen. So ist beispielsweise die Modellierungsanwendung Together bereits als Eclipse Plugin verfügbar.
Evaluierung
54
Wie eingangs, im Allgemeinen Teil (Kapitel 4.2.1), erwähnt, ist das wichtigste Element der Eclipse-Plattform das Plugin. Eclipse besteht, abgesehen von einem klein
gehaltenen Plattform-Kern, ausschließlich aus Plugins, getreu nach dem Motto „Everything is a plugin“. In [BWB+06] wird Eclipse daher sehr treffend als „Ablaufumgebung für Plugins“ bezeichnet. Durch diese, konsequent auf Erweiterungen basierende, Architektur existieren mächtige und sehr gut dokumentierte Schnittstellen.
Entsprechend groß ist inzwischen die Verfügbarkeit von Eclipse Plugins. Die Webseite von EclipsePluginCentral [EPC06] listet derzeit an die 700 Eclipse Erweiterungen in den verschiedensten Kategorien auf.
Hilfe und Support
Eclipse verfügt über eine umfangreiche Online-Hilfe, in welche auch Erweiterungen
deren Dokumente integrieren können. Neben dieser Standard-Hilfe unterstützt Eclipse zusätzlich einen interaktiven Hilfe-Mechanismus, der sich Cheat Sheets nennt
und den Anwender durch eine Sequenz von definierten Schritten führt. Jeder Schritt
kann entweder automatisch oder manuell durch den Benutzer durchgeführt werden.
Viele Anleitungen in Eclipse stehen als Cheat Sheets zur Verfügung und versuchen
den Anwender beim Erlernen verschiedenster Funktionalitäten zu unterstützen.
Cheat Sheet-Anleitungen werden in einem entsprechenden XML-Dialekt verfasst
und können daher auch von Anwendern und Plugin Autoren einfach erstellt werden.
Die Eclipse-Plattform verfügt trotz ihrer kurzen Vergangenheit (die erste Version
kam im Jahr 2001) über eine große und aktive Community. Auf der offiziellen Homepage ist unter [Ecl06o] ein Überblick zu den Aktivitäten der Gemeinschaft zu
finden.
Veranstaltungen
Ein Kalender gibt einen Überblick über kommende
Veranstaltungen mit Eclipse-Bezug. Es werden beispielsweise Konferenzen, Seminare und Messen
angekündigt. Im Normalfall finden sich hier mindestens 3 Einträge pro Monat.
Portalseiten
Mit der Community wuchs auch die Anzahl der internationalen und nationalen Seiten die sich ausschließlich mit der Eclipse Plattform beschäftigen.
Derzeit gibt es an die 30 derartige Portale.
Schulungen
Es gibt inzwischen viele Organisationen und Fir-
Evaluierung
55
men, die sowohl kostenlose als auch kommerzielle
Schulungen für Eclipse anbieten. Hier werden jedoch auch Bücher und WebSeminare vorgestellt.
Plugin und RCP Katalog
Mit [EPC06] betreibt die Community eine umfangreiche Webseite mit allen bekannten EclipseErweiterungen bzw. Eclipse basierten Rich Client
Anwendungen.
Tabelle 3.4: Eclipse - Aktivitäten der Community
Kommerzieller Support für die Eclipse Plattform wird von verschiedenen Mitgliedern der Eclipse Foundation, wie beispielsweise [INNO06], angeboten.
Sonstiges
Die saubere Integration von Quasi-Standard-Technologien in die Plattform ist sicher
einer der Stärken von Eclipse bei der Java Entwicklung. Die Unterstützung solcher
Technologien ist vor allem wichtig im Hinblick darauf, dass im Normalfall auch
innerhalb kleiner Projektteams, je nach persönlichen Vorlieben, unterschiedliche
Entwicklungsumgebungen Verwendung finden. Werden entsprechende Standards
von allen IDEs ausreichend unterstützt, ist eine konfliktfreie Zusammenarbeit problemlos möglich.
Das Build-Tool Ant [Ant06] hat sich bei der Entwicklung mit Java weitgehend
durchgesetzt. Ant ist von der Funktionsweise mit dem klassischen „make“ für die
C/C++ Entwicklung vergleichbar. Es wurde jedoch selbst in Java geschrieben und
gewährleistet so die Plattformunabhängigkeit. Um ein Build mit Ant durchführen zu
können, muss eine XML Konfigurationsdatei erstellt werden, welche alle notwendigen Prozessschritte enthält und sogenannte Targets definiert. Ein Target ist üblicherweise eine bestimmte Aufgabe des Übersetzungsprozesses, wie beispielsweise
das Kompilieren oder das Erstellen der Code-Dokumentation. Ein Target besteht aus
Tasks, welche spezielle Teilaufgaben übernehmen, z. B. den Aufruf des Java Übersetzers javac. Ant stellt standardmäßig bereits sehr viele Tasks zur Verfügung. Weitere Tasks können jedoch einfach als Erweiterung nachgerüstet werden. Eclipse unterstützt Ant sehr komfortabel. So ist es z. B. möglich, ein Target als sogenannten
„externen Build“ einzubinden. Weiters bietet Eclipse für Ant eine spezielle Outline
View sowie eine Code Completion für die Konfigurationsdatei.
Evaluierung
56
Mit der Integration der Versionsverwaltung CVS [CVS06] ist ein weiterer QuasiStandard in die Eclipse Plattform standardmäßig integriert. Der CVS-Client ist nahtlos in die Oberfläche integriert und ermöglicht das einfache Übertragen der Dateien
von und zum CVS-Repository. Darüber hinaus wird eine spezielle SynchronizePerspektive zur Verfügung gestellt, welche einen komfortablen Vergleich zwischen
den unterschiedlichen Versionen erlaubt.
Die Firma Innoopract bietet mit ihrem kostenlosen Service Yoxos [YOX06] die
Möglichkeit, sich seine persönliche Eclipse Distribution mit auswählbaren Erweiterungen online zusammenzustellen. Die resultierende Plattform kann anschließend als
ZIP-Archiv herunterladen werden. Dieses Service ist z. B. für ein Projekt sinnvoll, in
welchem eine Eclipse Installation mit diversen speziellen Erweiterungen eingesetzt
werden soll, um allen Teammitgliedern exakt dieselbe Entwicklungsumgebung bereitstellen zu können.
Evaluierung
3.2
57
NetBeans 5.5
Hersteller
Sun Microsystems
Produktversionen
Standard, diverse Erweiterungsmodule
Testversion
NetBeans 5.5 mit den Erweiterungspaketen „Enterprise
Pack”, „Visual Web Pack“, „Mobility Pack” und „Profiler“
Anschaffungskosten
kostenlos
Plattform
Windows, Linux, Solaris, Mac OS X
Homepage
www.netbeans.org
3.2.1 Allgemeines
Netbeans wurde nach [NB06a] 1996 als Studentenprojekt gestartet. Ziel war es, eine
Delphi ähnliche IDE für Java zu schaffen. Die erste Version erschien unter dem Namen Xelfi im Jahr 1997 und war die erste Java-IDE, welche gänzlich in Java implementiert wurde. Das Projekt erhielt viel Zuspruch und so entschieden sich die Studenten eine Firma zu gründen. Die Firma wurde schließlich im Jahr 1999 von Sun
Microsystems, also dem Erfinder der Programmiersprache Java, übernommen. Im
Jahr 2000 entschied Sun Netbeans als OpenSource Software weiterzuentwickeln.
Netbeans hat weitgehend den Ruf einer vollständigen Entwicklungsumgebung. So
wird bereits in der Grundausstattung ein großer Funktionsumfang geboten. Trotzdem
ist die Entwicklungsumgebung modular gestaltet und die Basisplattform schlank
gehalten. Für Spezialgebiete stellt Sun Microsystems einige Erweiterungsmodule,
siehe Tabelle 3.5, zur Verfügung. Da diese Module vom IDE-Hersteller kostenlos
bereitgestellt und normalerweise mit den Release-Terminen der Kernplattform abgestimmt sind, werden die Modulfunktionalitäten zum Funktionsumfang der IDE gezählt.
Evaluierung
58
Enterprise Pack [NB06c]
Erweitert NetBeans um die Möglichkeit SOA (service-oriented architecture) Applikationen zu schreiben. Darüber hinaus bietet es, derzeit jedoch noch
im
Beta-Stadium,
umfangreiche
UMLModellierungstechniken. (siehe Kapitel Bewertung
nach Kriterienkatalog – Modellierung)
Mobility Pack [NB06d]
Dieses Erweiterungsmodul stellt Werkzeuge für die
Entwicklung mobiler Applikationen zur Verfügung.
(siehe Kapitel Bewertung nach Kriterienkatalog –
Programmierung)
Profiler [NB06e]
Das Profiler Pack dient der Performance-Analyse
von Java-Applikationen. (siehe Kapitel Bewertung
nach Kriterienkatalog – Softwarequalitätssicherung)
Visual Web Pack [NB06f]
Das Visual Web Pack ermöglicht eine komfortable
Vorgehensweise bei der Gestaltung von JavaServerFaces.
C/C++ Pack [NB06g]
Dieses Modul dient der Entwicklung von nativen
Applikationen mit den Programmiersprachen C und
C++.
Tabelle 3.5: NetBeans - Sun-Erweiterungsmodule für die IDE
NetBeans ist laut Jan Chalupa, Director von NetBeans Engineering bei Sun
Microsystems, nach [BC06] seit Version 3.0 als generelle Applikationsplattform
entworfen worden. Die Unterstützung für die Entwicklung von Anwendungen auf
Basis der NetBeans-Plattform war jedoch ziemlich reduziert und zu der Zeit nur als
experimentelles Add-on erhältlich. Das hat sich mit NetBeans 5.0 geändert. Unterstützung für die Entwicklung von Applikationen, die auf der NetBeans-Plattform
basieren, steht in der Standard-IDE zur Verfügung.
In [BC06] erklärt Tim Boudreau, Mitglied des NetBeans Core Team, dass es
inzwischen eine große Anzahl von Firmen gibt, die mit ihren Produkten auf die NetBeans Plattform aufsetzen. Als Beispiel nennt er die Firma Nokia, die zur Verwaltung ihres Mobilfunk-Netzwerks eine NetBeans-RCP-Applikation verwendet.
Abbildung 3.18 gibt einen Überblick über die NetBeans-Familie.
Evaluierung
59
Abbildung 3.18: NetBeans - Übersicht über die NetBeans-Familie (Grafik nach [Trap06])
Da NetBeans in Java realisiert wurde, kann es auf allen Betriebssystemen eingesetzt
werden, für die eine entsprechende Java Virtual Machine verfügbar ist. Bei der aktuellen Version stehen komfortable Installationen für die Betriebsysteme Windows,
Solaris, MAC OS X und Linux bereit. Für andere UNIX basierte Systeme kann die
Installation manuell mit einem allgemein gehaltenen Archiv durchgeführt werden.
NetBeans war nicht nur die erste IDE mit vollständiger Unterstützung von Java 5, es
bietet bereits auch Unterstützung für die nächste Version Java 6. Generell wird Wert
darauf gelegt, dass neben den aktuellen Standards auch frühzeitig neue Versionen
und Technologien unterstützt werden. Auf diese Weise können kommende Versionen schon in der Entwicklung neuer Projekte Berücksichtigung finden. [Trap06]
3.2.2 Bewertung nach Kriterienkatalog
Editor
Der NetBeans Codeeditor ist leistungsfähig und komfortabel zu bedienen. Er deckt
fast alle im entsprechenden Abschnitt des Kriterienkatalogs aufgelisteten Features
ab. Lediglich die Change Bar, eine vertikale Markierungsleiste, welche geänderte
Codebereiche farbig heraushebt, ist nicht vorhanden.
Evaluierung
60
Abbildung 3.19: NetBeans - Codeeditor
Abbildung 3.19 zeigt den Codeeditor in Aktion. Man sieht hier deutlich die Code
Completion sowie die Code Hilfe, die direkt aus dem Sourcecode geparst oder aus
der JavaDoc Hilfe geladen wird. Die Completion Features reagieren durchwegs angenehm schnell, sodass es zu keinen größeren Verzögerungen beim Tippen kommt.
Weiters sind ein gefalteter Codeabschnitt (Zeile 10-13), ein gesetzter DebuggerBreakpoint (Zeile 19) sowie ein Lesezeichen (Zeile 27) zu sehen. Der aktuell syntaktisch fehlerhafte Code wird, wie auch bei manchen Textverarbeitungsprogrammen,
rot unterwellt sowie durch ein auffallendes Icon am linken Editorrand hervorgehoben.
Eine Besonderheit des NetBeans Quelltexteditors ist die eigene Symbolleiste, welche
für jede geöffnete Datei angezeigt wird. Sie stellt abhängig vom geladenen Dateityp
entsprechend passende Funktionalitäten bereit. In diesem Fall wird beispielsweise
eine Navigationsmöglichkeit zu den zuletzt bearbeiteten Stellen in der Datei und den
gesetzten Lesezeichen, eine Suchfunktion, verschiedene Formatierungs- und Kommentierungsmöglichkeiten sowie eine Makrofunktionalität, um häufig benutzte Abfolgen automatisieren zu können, angezeigt. Die Symbolleiste stellt eine elegante
Alternative zu Tastaturkürzel für diese Funktionen dar und ist effizient zu bedienen.
Evaluierung
61
Die Code Folding Funktionen des Codeeditors bieten sowohl die Möglichkeit, Standardstrukturen als auch Teile des Quelltexts, deren Aufbau normalerweise zu keiner
Faltungsoption führt, einzuklappen. Durch das Umschließen mit den XML-ähnlichen
Kommentaren „// <editor-fold>“ am Anfang sowie „// </editor-fold>“ am Ende eines
beliebigen Abschnitts kann auch dieser gefaltet werden. Diese Funktionalität ist beispielswiese nützlich, wenn man einen relativ flach gehaltenen Algorithmus dennoch
übersichtlich gestalten möchte.
Obwohl eine Studie der Evans Data Corporation im Jahr 2005 nach [Trap06] ermittelt hat, dass das Java WidgetSet Swing, das am meisten verwendete noch vor den
WinForms [WinF06] ist, gab es lange Zeit keinen besonders komfortablen User Interface Designer für Java. Um komplexe grafische Oberflächen zu gestalten, war es
oft notwendig, verschiedene Panels mit unterschiedlichen LayoutManagern ineinander zu verschachteln. Die Programmierung war dementsprechend kompliziert und
führte zu unübersichtlichem Code.
In NetBeans 5.0 wurde das Java GUI-Design mit der Einführung des WYSIWYG
Designers Matisse, benannt nach dem berühmten Maler Henri Matisse [HM06], wesentlich verbessert.
Abbildung 3.20: NetBeans - GUI-Designer Matisse
Matisse ist eine Kombination des LayoutManagers GroupLayout sowie eines grafischen Interfaces um die Oberfläche mit diesem Layout zu gestalten. Dieser GUI-
Evaluierung
62
Designer erlaubt es auch komplexe Oberflächen, ohne die erwähnten Verschachtelungen, zu konstruieren. Die einzelnen Komponenten lassen sich per Drag and Drop
von der Palette auf die Arbeitsfläche ziehen und können entweder an den Rändern
des Grafikcontainers oder an bereits platzierten Beans ausgerichtet werden. Dadurch,
dass das Layout auf Beziehungen zwischen den Komponenten anstatt auf z. B. absoluten Koordinatenangaben basiert, sind die einzelnen Abstände immer korrekt, auch
wenn die Fenstergröße verändert wird oder sich einzelne Texte durch eine Übersetzung ändern. GroupLayout bietet weiters die Möglichkeit, Textkomponenten anhand
ihrer Grundlinie auszurichten, um zu verhindern, dass die Texte versetzt dargestellt
werden.
Die wichtigsten Werkzeuge von Matisse sind (siehe dazu auch Abbildung 3.20):
•
Form Editor: Dieser bietet sowohl eine Design- als auch eine Quelltextansicht zwischen denen in der, im Abschnitt Codeeditor erwähnten, spezifischen Symbolleiste umgeschaltet werden kann. Die Designansicht erlaubt die
beschriebene Platzierung der Komponenten. Die Quelltextansicht enthält den
generierten GUI-Code. Der von Matisse generierte Code besteht lediglich
auch einer „initComponents()“ Methode sowie einigen Variablendefinitionen
für Komponenten, welche innerhalb der Klasse global verfügbar sind.
•
Palette: Diese Ansicht enthält eine Liste von Komponenten, die, wie bereits
beschrieben, per Drag and Drop auf der Arbeitsfläche platziert werden können. Die Liste kann bei Bedarf um eigene JavaBeans erweitert werden.
•
Properties window: Die selektierten Komponenten können in dieser Ansicht
komfortabel konfiguriert werden.
•
Navigator: Dieses Fenster bietet eine hierarchische Ansicht aller Komponenten des Formulars.
Matisse arbeitet zwar standardmäßig mit dem GroupLayout, es kommt jedoch auch
mit klassischen LayoutManagern wie z. B. FlowLayout, BorderLayout oder GridBagLayout gut zurecht.
Ab Java 6, derzeit Release Candidate, wird das GroupLayout laut der entsprechenden API Dokumentation [Sun06f] Teil der Java Standard Klassenbibliothek sein. Um
den LayoutManager mit der aktuellen Java Version 1.5 bzw. der älteren 1.4.2 nutzen
zu können, muss eine ca. 140 kB große Zusatzbiblothek mit der Anwendung gebündelt werden.
Evaluierung
63
NetBeans beherrscht praktisch alle, im Kriterienkatalog vorgestellten Refactoringmöglichkeiten. (siehe dazu auch das Refactoring-Menü, welches einen Großteil der
Funktionalitäten auflistet, in Abbildung 3.21)
Abbildung 3.21: NetBeans - Refactoringmethoden, Jackpot Refactoring Manager
Mit NetBeans 6.0 wird nach [Trap06] ein umfangreiches Refactoring Modul, das
derzeit unter dem Codenamen Jackpot entwickelt wird, zusätzlich zu den bestehenden Möglichkeiten eingeführt. Jackpot führt die Transformationen nicht auf Quellcode-Basis, sondern auf dem nach dem Kompilieren entstandenen abstrakten Syntaxbaum aus. Hierfür gibt es eine eigene kleine Sprache, mit der sich auch komplexe
Operationen definieren lassen. Diese können weit über den bisherigen Umfang von
Refactorings hinausgehen. Jackpot kann auch als Qualitätssicherungswerkzeug eingesetzt werden, um schlechten Programmierstil oder potentielle Fehler, wie etwa in
[Blo06] beschrieben, zu erkennen und eventuell automatisch zu korrigieren. Als Beispiel können auf diese Weise komplexe If-Then-Strukturen vereinfacht oder überflüssige Casts und Ähnliches erkannt werden. [Trap06]
Jackpot steht als Beta-Version bereits für NetBeans 5.5 zur Verfügung und kann
einfach über das sogenannte Update-Center installiert werden. Die Regeln werden
im Refactoring-Manager, siehe Abbildung 3.21, aktiviert, konfiguriert und können
anschließend einfach auf das aktuelle Projekt angewendet werden. Das Modul erwies
sich bei den Tests als stabile, sehr leistungsfähige Refactoringmöglichkeit.
Zum Zeitpunkt des Schreibens dieser Evaluierung stand nur die englische Version
von NetBeans 5.5 bzw. den Erweiterungspacks zur Verfügung. Für die Vorgängerversion 5.0 standen neben der Standardsprache Englisch auch Übersetzungen in den
Sprachen Chinesisch (vereinfacht), Japanisch, Koreanisch und Russisch zur Verfü-
Evaluierung
64
gung. Mit einer deutschen Variante ist demnach auch für die aktuelle Version 5.5
nicht zu rechnen.
Mit Hilfe des Enterprise Pack ist es möglich, aus drei Kategorien Entwurfsmuster
auszuwählen und diese zu modellieren: EJB 1.1 und EJB 2.0 ermöglichen die Generierung entsprechender Patterns gemäß der jeweiligen Enterprise JavaBean Spezifikation. Die von der Gang of Four [GoF96] vorgeschlagenen Entwurfsmuster können
ebenfalls angewendet und modelliert werden. Abbildung 3.22 zeigt das UML Design
Center mit einem generierten GoF Iterator Pattern als Klassendiagramm.
Abbildung 3.22: NetBeans - UML Design Center mit Pattern-Katalog
Der Aufbau der Arbeitsumgebung ist in der Standardkonfiguration sehr übersichtlich
und funktionell gestaltet. Zentrales Element ist eine Editorkomponente, beispielsweise der Codeeditor oder User Interface Designer. Im linken Bereich befinden sich
eine Projektübersicht, ein einfacher Dateimanager für das aktuell geöffnete Projekt
und eine Ansicht für Strukturdaten. Weitere dockbare Ansichten können bei Bedarf
eingeblendet werden, z. B. Palette für GUI Design oder Modellierung, Suchergebnisse, Konsole, Taskfenster uvm. Die Inhalte der Menü- bzw. Symbolleisten lassen
sich flexibel an den persönlichen Geschmack anpassen.
Evaluierung
65
Modellierung
Das NetBeans UML Modellierungswerkzeug war laut [NM06a] ursprünglich Teil
des Enterprise Erweiterungspakets. Es ist nun jedoch eine eigenständige Erweiterung
und lässt sich bequem über das NetBeans Update-Center installieren. Die Implementierung entspricht dem UML 2.0 Standard und unterstützt neun Diagrammtypen:
Aktivitäts-, Anwendungsfall-, Klassen-, Kommunikations-, Komponenten-, Objekt-,
Sequenz-, Verteilungs- und ein Zustandsdiagramm. Das Objektdiagramm wird zwar
nicht direkt von einem speziellen Assistenten unterstützt, kann jedoch mit einem
Klassendiagramm modelliert werden. In Abbildung 3.22 wurde bereits ein Klassendiagramm gezeigt.
Das UML Modul bietet drei verschiedene Assistenten an, um ein neues Modellierungsprojekt anzulegen:
•
Platform-Independent Model: Diese Projektform kann für Modellierungsprojekte ohne Code-Generierung genutzt werden.
•
Java-Platform Model: Bei der Auswahl dieses Projekttyps können nach
[AT06] optional UML-Modellierungsprojekte mit separaten NetBeans-JavaProjekten assoziiert werden. Damit kann dann eine bidirektionale Synchronisierung zwischen UML-Modell und Java-Sourceode erfolgen.
•
Java-Platform Model by Reverse Engineering: Soll für ein bestehendes Projekt eine UML-Modellierungsmöglichkeit nachgerüstet werden, kann dieser
Assistent genutzt werden.
Bei allen Assistenten wird zunächst ein eigenständiges Projekt angelegt, welches
gegebenenfalls mit einem oder mehreren Quelltextprojekten verknüpft ist. Wird reines Forward Engineering betrieben, arbeitet man praktisch ausschließlich im UML
Projekt und generiert den Quelltext im entsprechend verknüpften Projekt. Umgekehrt wird beim Reverse Engineering nur im Quellcodeprojekt gearbeitet und bei
Bedarf werden die Modelle des assozierten UML Projekts manuell aktualisiert.
Round-Trip Engineering, also das Arbeiten sowohl im Modell als auch Quelltext
wird prinzipiell unterstützt. Bei dieser Technik ist jedoch etwas Handarbeit notwendig. Es kann sowohl mit der Modellierung, als auch mit der manuellen Programmierung begonnen werden. Wird z. B. zunächst ein Klassendiagramm entworfen, so
kann durch einfaches Forward Engineering passender Code generiert werden. Werden nun Änderungen im erzeugten Quelltext vorgenommen, werden mittels Reverse
Engineering zunächst Modellstruktur und damit auch die bereits erstellten Diagram-
Evaluierung
66
me aktualisiert. Wird nun wieder in den Diagrammen etwas verändert und Quelltext
generiert, bleiben noch passende Teile des zuvor manuell erweiterten Codes, z. B.
Kommentare und Implementierungen der Methodenrümpfe erhalten. Die Durchführung der Forward- bzw. Reverse Engineering-Aktion muss jeweils manuell ausgelöst
werden. Diese Vorgehensweise ist, auch der Online Hilfe nach, empfohlen und funktionierte bei der Evaluierung problemlos, sonderlich komfortabel ist es jedoch nicht.
Abbildung 3.23: NetBeans - Sequenzdiagramm mittels Reverse Engineering
Um Abläufe übersichtlich dokumentieren zu können, eignet sich eine Sequenzdiagrammdarstellung sehr gut. Abbildung 3.23 zeigt ein Sequenzdiagramm, das mit
Reverse Engineering automatisch erzeugt werden kann. Für die Ablaufdokumentation kann alternativ auch ein Kommunikationsdiagramm erzeugt werden. Alle erzeugten Diagramme können manuell um zusätzliche Elemente, wie beispielsweise Kommentarblöcke, aus der Palette ergänzt werden.
Die Editorfunktionalitäten bei der Arbeit mit einem UML-Diagramm sind umfangreich und so stehen beispielsweise typische Navigations- und Skalierungsfunktionen
sowie automatische Layoutmöglichkeiten zur Verfügung. Die Modelle können in
diverse Grafikformate (JPEG, PNG, SVG) exportieren. Eine XMIExportmöglichkeit der UML-Modelle steht nicht zur Verfügung.
Evaluierung
67
Die NetBeans IDE bietet standardmäßig keine speziellen Funktionalitäten für die
modellgetriebene Softwareentwicklung. Die kommerziellen NetBeans Erweiterungen Applied Models [AM06] und MagicDraw UML [MD06], welche MDSD- bzw.
MDA-Techniken unterstützen, stehen jedoch zur Verfügung.
Programmierung
Sun Microsystem stellt für die Entwicklung von C bzw. C++ Anwendungen eine
Erweiterung zur Verfügung, welche sich beim Verfassen dieser Arbeit jedoch noch
im Beta-Stadium befand. Die Erweiterung liegt als Setup auf der NetBeans Homepage vor, lässt sich einfach installieren und unterstützt laut [AT06] die Sun Compiler,
den GCC und unter Windows den C++ Compiler des Microsoft Visual Studios. Als
Debugger kommt der GDB [GDB06] zum Einsatz. Die Editorkomponente ist nicht
so leistungsfähig wie die Java Variante, unterstützt jedoch Syntax-Highlighting und
einfache Code-Completion. Die Verwaltung von Makefiles ist ebenfalls möglich.
Der sogenannte Library Manager, siehe Abbildung 3.24, dient in NetBeans zur Verwaltung, sowohl von mitgelieferten als auch von eigenen Klassenbibliotheken. Standardmäßig liefert NetBeans, inklusive der erwähnten Erweiterungspakete, bereits
viele Bibliotheken und Frameworks mit. Tabelle 3.6 zeigt einige der mitgelieferten
Bibliotheken.
Java ME CDC AGUI Swing
Layout
Eine Variante des Swing Layouts [SL06] um den
NetBeans GUI-Designer Matisse mit GroupLayout
[Sun06f] auch für mobile Applikationen nutzen zu
könnnen.
JavaServer Faces 1.1 [JSF06]
JavaServer Faces vereinfachen die Gestaltung grafischer Web-Benutzeroberflächen. Die Entwicklung
mit JSF erfolgt auf einem hohen Abstraktionsniveau
und folgt dem MVC Konzept. In NetBeans wird die
Entwicklung komfortabel mit der Erweiterung Visual Web Pack, siehe dazu WebEntwicklung im Kriterienkatalog, unterstützt.
JavaServer Pages Standard
Tag Library 1.1 [JSTL06]
JSTL ist eine Sammlung von Tag-Bibliotheken, die
für Entwicklung mit JavaServer Pages hilfreich sind.
NetBeans SVG MIDP Com-
Klassenbibliothek, um Scaleable Vector Graphics
[SVG06] auch auf leistungsfähigen mobilen Geräten
Evaluierung
68
ponents
nutzen zu könnnen.
ProGuard Obfuscator 3.5
[ProG06]
ProGuard obfuskiert und verkleinert Java-Bytecode.
Es wird dadurch unerwünschter Zugriff auf den
Sourcecode erheblich erschwert und die Größe der
Applikation verringert.
Apache Struts 1.2.9 [Apa06c]
Bei Struts handelt es sich um Framework um Java
Webapplikationen nach der MVC Architektur zu
entwickeln.
Swing Layout Extensions
1.0.1 [SL06]
Das Ziel der Swing Layout Extensions ist die Vereinfachung der Gestaltung professioneller GUI Layouts mit Swing. Aus diesem Projekt ging das
GroupLayout [Sun06f] hervor, dass Teil von Java
1.6 sein wird und direkt vom NetBeans GUIDesigner unterstützt wird.
Tabelle 3.6: NetBeans - Einige mitgelieferte Klassenbibliotheken
Einen wichtigen Komponentenstandard im Bereich der Java Entwicklung stellen die
Enterprise JavaBeans [EJB06] dar. Folgende Vorteile ergeben sich nach [KCC+06]
wenn man Applikationslogik in EJBs verpackt:
•
Enterprise Beans unterstützen Transaktionen, d. h. man muss das verteilte
Objekt nicht manuell vor gleichzeitigem Zugriff schützen. Die Transaktionseinstellungen sind bequem über sogenannte Deployment Descriptor-Dateien
möglich.
•
Enterprise Beans können einfach von mehreren Clients genutzt werden, unabhängig davon, ob der Zugriff lokal oder entfernt erfolgt.
•
Die Geschäftslogik des Beans kann geschützt werden, ohne direkt Änderungen im Quelltext vornehmen zu müssen.
•
EJBs können auf externe Ressourcen wie beispielsweise Datenbanken, Nachrichtenwarteschlangen und Webdienste über das Java Naming und Directory
Interface (JNDI) zugreifen. Der JNDI Namensdienst vereinfacht das Lokalisieren verschiedenster Komponenten und Ressourcen. Um z. B. eine JDBCDatenquelle zu finden, kann eine JNDI lookup-Methode verwendet werden,
Evaluierung
69
welche durch Übergabe entsprechender Parameter das gesuchte Objekt zurückliefert.
NetBeans bietet umfangreiche Möglichkeiten bei Design und Arbeit mit EJBs. Zum
Erstellen eines neuen EJB-Moduls existiert ein komfortabler Assistent und zu bereits
bestehenden Modulen können bequem zusätzliche Beans, Dateien oder Bibliotheken
hinzugefügt werden. Die für die Geschäftslogik notwendigen Methoden des Beans
können mit einer Standardimplementierung über entsprechende Popup-Menüs des
Projekt-Managers oder direkt in der Editoransicht hinzugefügt werden. Die IDE generiert automatisch den zusätzlich notwendigen Quelltext z. B. um die lokale oder
entfernte Methodensignatur zu aktualisieren.
Zum Bearbeiten des sogenannten EJB-Deploymentdeskriptors existiert eine leistungsfähige Editorkomponente die sowohl graphisches als auch manuelles Editieren
der XML-Datei ermöglicht.
Das im Abschnitt Evaluierung bereits beschriebene UML Design Center unterstützt
neben der bekannten Patterns der Gang of Four auch EJB Entwurfsmuster.
Neben EJBs erleichtert NetBeans die Arbeit im Bereich der Middleware und Kompontenstandards auch mit den Frameworks Java API for XML-Based Remote Procedurce Calls (JAX-RPC) [JRPC06] sowie Java Message Service [JMS06] durch die
Bereitstellungen verschiedenster Assistenten.
Klassenbibliotheken und Komponenten von Drittanbietern stehen, wie auch schon
bei der Eclipse IDE Evaluierung beschrieben, in sehr großem Umfang zur Verfügung. Im NetBeans Library Manager können sowohl von NetBeans bereitgestellte
Bibliotheken verwaltet, als auch eigene hinzugefügt und geändert werden. Nach Angabe eines Namens und dem Hinzufügen der eigentlichen Komponente können optional noch Pfade zum Quelltext und zur API-Dokumentation im JavaDoc Format,
falls vorhanden, spezifiziert werden. Diese Details sind vor allem für dynamische
Hilfefunktionalitäten, z. B. bei der Code Completion und um Implementierungsdetails untersuchen zu können, hilfreich.
Evaluierung
70
Abbildung 3.24: NetBeans - Library Manager zur Verwaltung der Klassenbibliotheken
Um die Suche nach Bibliotheken zu vereinfachen, bietet der Verwaltungsdialog eine
einfache Einteilung der Komponenten in verschiedene Gruppen. Standardmäßig existieren die Kategorien Class Libraries, Mobile Libraries, Component Libraries und
Theme Libraries.
Wie bereits in der Eclipse-Evaluierung beschrieben, bietet die Standard Java Klassenbibliothek bereits umfangreiche Mechanismen um Anwendungen internationalisieren zu können. Eine dieser Techniken ist das Auslagern sprachspezifischer Inhalte
in einzelne Dateien. Die Dateien beinhalten idente Schlüssel und sprachspezifische
Werte, in den meisten Fällen Texte. Für das Editieren stellt NetBeans neben der manuellen Variante auch einen tabellenbasierten Editor zur Verfügung.
Abbildung 3.25 zeigt exemplarisch die relevanten Teile von NetBeans beim Übersetzen der einzelnen Sprachdateien. In der Projektansicht werden die Sprachdateien
übersichtlich gruppiert. Es ist möglich, die Dateien einzeln zu bearbeiten, siehe dazu
die geöffneten Sprachdateien rechts unten. Die komfortablere und weniger fehleranfällige Variante ist das Editieren der Dateien in Tabellenform. Für jede vorhandene
Sprache wird eine eigene Spalte mit den jeweiligen Übersetzungen angezeigt.
Evaluierung
71
Abbildung 3.25: NetBeans - Tabellenbasiertes Editieren von Sprachdateien
Neben dem Spracheditor stehen noch weitere Assistenten zur Internationalisierung
zur Verfügung, die beispielsweise das Auslagern bereits fix kodierter Texte in Dateien erlauben. Der bereits beschriebene GUI-Designer bietet ebenfalls die Möglichkeit
die Texte direkt aus den einzelnen Sprachressourcen zu beziehen und darüber hinaus
noch die Sprache in der Voransicht zu definieren.
NetBeans bringt auch Unterstützung für Datenbanken mit. In der Runtime-Ansicht
werden auch die Datenbankverbindungen verwaltet. Die Apache Datenbank Derby,
welche Teil von Java 1.6 sein wird, ist schon jetzt in der NetBeans Distribution gut
integriert und ist für das rasche Testen der Datenbankfunktionalität einer Applikation
ideal geeignet. Es können natürlich beliebige Datenbanksysteme verwendet werden,
sofern ein geeigneter JDBC-Treiber zur Verfügung steht.
Für das Anlegen einer neuen Datenbankverbindung steht ein entsprechender Assistent zur Verfügung, um Verbindungsdaten und Treiberinformationen eingeben zu
können. Die Verbindung wird anschließend in die Baumstruktur der RuntimeAnsicht eingeordnet. Verbindet man sich mit der Datenquelle, werden die üblichen
Strukturen der Verbindung angezeigt: Tabellen, Ansichten und Prozeduren. In der
Editoransicht können typische SQL-Statements abgesetzt werden. Die Abfrageergebnisse werden in einer Tabelle angezeigt und können bei Bedarf mittels CopyPaste Funktionalität kopiert werden. Eine Exportfunktion, um die Daten in eine
Spreadsheet-Applikation zu übernehmen, wird nicht zur Verfügung gestellt.
Evaluierung
72
Abbildung 3.26: NetBeans - Verbundene Datenquelle und SQL-Abfrageeditor
Darüber hinaus gibt es eine sogenannte Persistenz-Funktionaliät, die es ermöglicht,
aus existierenden Datenbank-Schemen Klassen zu generieren. Umgekehrt kann eine
Datenbankstruktur aus bereits entwickelten Klassen erzeugt werden.
NetBeans kommt mit einer umfassenden Unterstützung bei der Entwicklung von
Webapplikationen:
•
Mit der IDE wird ein Tomcat-Server [Apa06d] ausgeliefert, auf dem die entwickelten Applikationen deployt, getestet und debuggt werden könnnen.
•
Die Datei- und Verzeichnisstruktur der Webapplikation wird von der IDE automatisch umgesetzt.
•
Der Editor bietet Syntax Highlighting, Code Completion und einige weitere
Editorhilfen, wie z. B. Refactoringmöglichkeiten, bei der Bearbeitung von
Servlet-, JSP-, HTML- und Tagbibliotheks- Dateien.
•
Es gibt eine umfangreiche Unterstützung der Webframeworks JSF [JSF06]
und Struts [Apa06c]. Die beiden Frameworks können nach [DA06] optional
für Webapplikationen integriert werden. Die erforderlichen JAR Dateien
werden automatisch mit in das erstellte Archiv aufgenommen. Darüber hinaus existieren Codevorlagen und Assistenten für die Erstellung von JSF Managed Beans, Struts Actions und ActionForm Beans.
Evaluierung
•
73
Aus der Komponentenpalette können Codefragmente per Drag-and-Drop in
die entsprechenden Quelldateien, z. B. JSP- oder HTML-Dateien, gezogen
werden.
Ein sehr nützliches Feature beim Testen von Webapplikationen ist der integrierte
HTTP-Monitor, siehe dazu Abbildung 3.27, der laufend die Kommunikation zwischen Browser und Server visualisiert.
Abbildung 3.27: NetBeans - HTTP-Monitor
Die Anfragen und Antworten können damit genau analysiert werden. Weiters ist es
auch möglich, den Verkehr aufzuzeichnen um ihn später wieder abspielen zu können. Auch ein Ändern der einzelnen Anfragen ist möglich, um z. B. verschiedene
Umgebungen zu simulieren.
Neben der textbasierten Entwicklung von Webapplikationen direkt mit dem Codeeditor im JSP- oder Servlet-Quelltext, steht mit dem Visual Web Pack eine Erweiterung zur Verfügung, die es erlaubt, JSF-basierte Seiten in einer WYSIWYG Umgebung zu entwickeln, siehe dazu Abbildung 3.28.
Die JavaServer Faces Komponenten können via Drag-and-Drop aus der Palette auf
die Seite gezogen und frei platziert werden. Die Ausrichtung der Komponenten ist
einfach über eine Gittereinteilung der Arbeitsfläche möglich. Es gibt eine schnelle
Voransicht im Browser, ohne dazu einen Webserver starten zu müssen. Für die
AJAX basierten JSF Komponenten können JavaScript Abläufe innerhalb der Komponente, sowie eine komplexe Kommunikation zum Server realisiert werden.
Evaluierung
74
Abbildung 3.28: NetBeans - WYSIWYG Editor für JSF basierte Webseiten
Die Arbeit mit den AJAX basierten Komponenten gestaltet sich ähnlich einfach, wie
die Gestaltung von Benutzeroberflächen mit JavaBeans im Desktopbereich: Die
Komponenten werden platziert, individuell konfiguriert und es können serverseitige
Ereignisbehandlungsroutinen implementiert werden.
Die Applikationsentwicklung für mobile Endgeräte wird unter NetBeans mit der
Mobility Pack Erweiterung ermöglicht. Mit diesem Paket können Anwendungen,
sogenannte Midlets, auf Basis der CLDC (Connection Limited Device Configuration) Klasse entwickelt werden. In diese Gruppe fallen die meisten Mobiltelefone,
welche standardmäßig mit einer Java VM ausgestattet sind. Zusätzlich steht eine
Erweiterung für das Mobility Pack bereit, die für die Unterstützung leistungsfähiger
Geräte, auf Basis der CDC (Connection Device Configuration), optimiert ist. Zum
Zeitpunkt des Verfassens dieser Arbeit fielen in diese Klasse beispielsweise die Nokia-80 sowie Sony-Ericsson-CDC Serie sowie die Savaje Mobile-Plattform. Für die
Entwicklung CLDC basierter Applikationen wird das Sun’s J2ME Wireless Toolkit
(WTK) [JWTK06] mit optionalen, herstellerspezifischen Erweiterungen verwendet.
CDC Anwendungen stehen bei der Entwicklung ebenfalls entsprechende Basisplattformen, wie beispielsweise das UIQ 3 SDK [UIQ06] und herstellerabhängige Erweiterungen wie Sony Ericssons CDC Platform 1 Extension Package [SE06] zur Verfügung.
Die Entwicklung einer mobilen Anwendung gestaltet sich mit NetBeans sehr komfortabel. Zunächst wird mit einem intuitiven Assistenten eine grobe Anwendungsstruktur erzeugt. Das Bearbeiten des generierten Midlets kann direkt im Quelltext, in
einem GUI-Designer und im sogenannten Flow Designer erfolgen.
Evaluierung
75
Abbildung 3.29: NetBeans - Screen Designer für mobile CLDC Geräte
Abbildung 3.29 zeigt die Arbeit mit dem Oberflächendesigner des Mobility Packs.
Bei der Entwicklung von CLDC basierten Anwendungen können mit dem Screen
Designer einfach gehaltene Benutzeroberflächen bequem erstellt werden. Es steht
wie bei GUI-Designern üblich eine Komponentenpalette zur Verfügung, von der für
die verwendetete Plattform geeignete Elemente per Drag-and-Drop auf die Arbeitsfläche gezogen werden können. Neben der grafischen Gestaltung können den Komponenten auch Aktionen zugeordnet werden, siehe dazu „Assigned Commands“ in
Abbildung 3.29.
Für CDC Applikationen steht ein visueller Editor auf Basis des leistungsfähigen
Standard GUI-Designer Matisse, siehe dazu den Abschnitt „Editor“ dieser Evaluierung, zur Verfügung. Damit können auch im mobilen Bereich komplexe Oberflächen
intuitiv und bequem erzeugt werden.
In Abbildung 3.30 wird exemplarisch die Arbeit im Flow Designer gezeigt. In diesem Bearbeitungsmodus können die einzelnen Oberflächengestaltungen zu einem
Flussdiagramm modelliert werden.
Evaluierung
76
Abbildung 3.30: NetBeans - Mobility Pack Flow Designer
Um denselben Quelltext für unterschiedliche Plattformen nutzen zu können, bietet
NetBeans einen Präprozessor, der bei der Übersetzung des Programms von einem
speziellen Ant-Task behandelt wird, an. Die Direktiven sind dem C-Präprozessor
sehr ähnlich, werden jedoch mit „//“ eingeleitet, wodurch sie von normalen JavaEditoren als Kommentar wahrgenommen und dadurch ignoriert werden. Typische
Präpozessoranweisungen bei der mobilen Entwicklung mit NetBeans wären beispielsweise:
//#if manufacturer == „Nokia“ && type == „6230“
…
//#elif manufacturer == „Siemens“
…
//#endif
Das Mobility Pack bietet weiters noch die Integration typischer Obfuskatoren, wie
auch bei der Eclipse Evaluierung beschrieben, sowie eine Unterstützung von Whitebox-Tests auf Basis der J2MEUnit-Frameworks [JMEU06].
Softwarequalitätssicherung
NetBeans bietet einen leistungsfähigen integrierten Debugger, der angenehm und
intuitiv bedienbar ist. Er beherrscht alle Funktionen, die man von einem Debugger
erwartet, wie beispielsweise schrittweise Ausführung, Untersuchung spezifischer
Abschnitte durch das Setzen eines Breakpoints und die Anzeige von Variableninhalten. Darüber hinaus verfügt der NetBeans Debugger über eine Reihe zusätzlicher,
nützlicher Funktionen.
Evaluierung
77
Abbildung 3.31: NetBeans - Debugger Ansicht
Abbildung 3.31 zeigt exemplarisch den Debugger in Aktion beim Untersuchen einer,
durch einen Breakpoint gestoppten, Applikation. Im Editorbereich werden die Inhalte einzelner Variablen durch Bewegen des Mauszeigers über das, zu untersuchende,
Feld mit einem Tooltip angezeigt. Bei komplexen Datentypen wird die Stringrepräsentation, welche durch die toString() Methode erzeugt wird, für den Tooltiptext
herangezogen. Die Variablenansicht, in Abbildung 3.31 rechts unten eingeblendet,
werden alle Variablen im aktuellen Ausführungskontext mit entsprechenden Typen
und Werten angezeigt. Zusätzliche Variablenansichten können in der WatchesAnsicht, siehe Abbildung 3.31 links unten, hinzugefügt werden. Die Besonderheit
bei dieser Ansicht ist, dass beliebige lokale und statische Felder sowie Metodenaufrufe entsprechend der Java-Syntax miteinander kombiniert werden können und
so sehr spezifische Evaluierungsausdrücke untersucht werden können. Bei der Eingabe derartiger Ausdrücke stehen einige Editorfunktionalitäten wie Code Completion und Code Hilfe zur Verfügung.
Der Debugger kann sich zu entfernten Anwendungen verbinden und so ein Remote
Debugging durchführen. Dazu muss die JVM der untersuchten Anwendung in einem
Debugmodus gestartet werden (weitere Informationen dazu finden sich in [NB06b]).
Mit dem Profiler Erweiterungspaket stellt NetBeans eine leistungsfähige Möglichkeit bereit, um die erstellten Applikationen bezüglich ihres Laufzeitverhaltens zu
Evaluierung
78
analysieren. Nach [KCC+06] können alle Applikationen, welche das sogenannte
JVM Tool Interface [JVMTI06] unterstützen, untersucht werden. Ab Sun JDK 1.5
Update 4 ist das Interface standardmäßig integriert.
Der Profiler bietet Standardprofile für typische Analysen wie laufende Anwendungsüberwachung, Performance- und Speicherbedarfanalyse. Für spezielle Analyseschwerpunkte ist es auch möglich, eigene Profile zu definieren.
Abbildung 3.32: NetBeans - Profiler Ansicht
Abbildung 3.32 zeigt einen typischen Profiling-Vorgang. Im Hauptbereich wird der
Zeitbedarf der einzelnen Methoden angezeigt. Die Darstellung kann flexibel konfiguriert werden, um z. B. nur im Zuge der untersuchten Anwendung entwickelten
Methoden zu visualisieren, und Standard JDK Aufrufe auszublenden. Am rechten
Rand wird das Profiler Control Panel angezeigt, in dem die Analyse gesteuert und
die Ansicht angepasst werden kann. Die VM Telemetry Overview Ansicht, im unteren Bereich der Abbildung, gibt einen Überblick über die Heapauslastung, die Arbeit
des Garbage Collectors sowie die Anzahl der laufenden Threads.
Mit dem Profiler können auch entfernte Prozesse analysiert werden. Diese Art der
Untersuchung hat den Vorteil, dass durch die zu analysierende Anwendung und Profiler auf unterschiedlichen Maschinen ausgeführt werden können und so mehr Ressourcen für die Applikation zur Verfügung stehen. Wird der Profiler zur Untersu-
Evaluierung
79
chung von Anwendungen im Produktivbetrieb herangezogen, ist es aufgrund des
Overheads sinnvoll, die Profilingvorgänge möglichst kurz zu halten. Um trotzdem
eine genaue Analyse durchzuführen, können die gesammelten Daten in sogenannten
Snapshots gespeichert und offline untersucht werden.
Für Unit Tests wird in NetBeans das JUnit Testframework verwendet. Es stehen Assistenten zur Verfügung, die es erlauben, Rümpfe von Testklassen zu generieren. Es
wird in diesem Fall für jede Methode der zu testenden Klasse eine korrespondierende Testmethode erzeugt, in der lediglich die Implementierung angepasst werden
muss. Die Testfälle werden standardmäßig in einem anderen Verzeichnis abgelegt,
sodass Produktiv- von Testcode sauber getrennt ist. Zum Ausführen der Testfälle
wird eine spezielle JUnit Ansicht eingeblendet, die in Ansicht und Funktion an die
Orginal JUnit Swingoberfläche angelehnt ist, siehe dazu Abbildung 3.33.
Abbildung 3.33: NetBeans - JUnit Ansicht
NetBeans unterstützt derzeit JUnit Version 3. An einer Unterstützung von Version 4
wird nach [NB06h] derzeit gearbeitet. Standardmäßig bietet NetBeans keine Code
Coverage-Analyse. Diese kann jedoch z. B. durch die Erweiterung Clover [Clov06]
nachgerüstet werden.
NetBeans bietet derzeit standardmäßig keine spezielle Unterstützung für die Durchführung von Quality Audits. Es stehen jedoch einige externe Programme bereit, die
sich in die IDE integrieren lassen. Für CheckStyle [CkS06] steht beispielsweise eine
Integration unter [NBCS06] zur Verfügung. Diese ist jedoch veraltet und unterstützt
keine aktuellen Versionen von CheckStyle. Um eine aktuelle Version des Programms unter NetBeans nutzen zu können, ist es jedoch möglich den der CheckStyle-Distribution beiliegenden Ant-Task zu verwenden. Für Auditanalysen stehen für
die Tools [FB06] sowie PMD [PMD06] weitere leistungsfähige NetBeans Module
Evaluierung
80
zur Verfügung. Die Funktionsweise von CheckStyle, FindBugs und PMD wurde in
der Eclipse Evaluierung bereits erläutert.
Derzeit bietet NetBeans keine integrierte Möglichkeit eine Analyse nach üblichen
Qualitätsmetriken durchzuführen. Das derzeit in Entwicklung befindliche NetBeans
Projekt Metrics [NB06i] verspricht jedoch eine Verbesserung dieser Situation für
zukünftige NetBeans Versionen.
Erweiterbarkeit der Entwicklungsumgebung
Im Bereich des ALM werden die Phasen Modellierung, Implementierung und Testen
direkt von der Entwicklungsumgebung abgedeckt. Spezielle Bestrebungen, einen
kompletten Application Lifecycle, entweder außschließlich durch die IDE oder auch
durch teilweiser Zusammenarbeit mit Fremdkomponenten, abzudecken, sind derzeit
nicht zu erkennen.
Nachdem, wie eingangs im Allgemeinen Teil (Kapitel 4.3.1) bereits erwähnt, NetBeans eine modulare Erweiterungsstruktur bietet und die Entwicklung von Modulen
mit Version 5.0 erheblich vereinfacht und dokumentiert wurde, gibt es inzwischen
viele Plugins für die IDE. Der NetBeans Plugin Catalogue [NB06j] listet inzwischen
über 80, teils kommerzielle, Erweiterungen für die Entwicklungsumgebung auf.
Hilfe und Support
NetBeans verfügt über eine umfangreiche und gut aufbereitete Online-Hilfe. Alle
untersuchten Erweiterungen integrierten ihre Dokumentation in das Hilfesystems
und sind konsistent gestaltet.
Abbildung 3.34: NetBeans - Dynamisches Hilfesystem
Evaluierung
81
Neben der Standard-Hilfe gibt es eine dynamische Hilfe. Bei diesem Hilfesystem
wird eine Ansicht eingeblendet, in der passende Themen in einer Baumstruktur zum
aktuell fokussierten Element eingeblendet werden, siehe dazu Abbildung 3.34.
Für die Entwicklung von J2EE Applikationen steht der sogenannte BluePrints Solutions Catalog zur Verfügung. Bei diesem Hilfesystem wird zu verschiedensten J2EE
Fragestellungen zunächst ein Artikel bereitgestellt, der die Problemstellung erläutert
und anschließend zur Lösung führt. Um das Thema anschließend auch praktisch
nachvollziehen zu können, gibt es die Möglichkeit, ein passendes Beispielprojekt
generieren zu lassen.
NetBeans verfügt über eine stetig größer werdende Community die nach [BC06] in
den letzten eineinhalb Jahren von ca. 40.000 auf ungefähr 300.000 Anwender angewachsen ist. Obwohl die Popularität von NetBeans hinter der von Eclipse liegt, gibt
es auf der offiziellen Community Hompage unter [NB06k] umfangreiche Aktivitäten, siehe dazu auch Tabelle 3.7.
Veranstaltungen
Ein Kalender gibt einen Überblick über kommende
Veranstaltungen mit NetBeans-Bezug. Es werden
beispielsweise Konferenzen, Seminare und Messen
angekündigt. Im Normalfall finden sich hier mindestens 4 Einträge pro Monat.
Video Demonstrationen
Neue und andere interessante NetBeans Funktionalitäten werden oft von Mitgliedern des Entwicklungsteam oder routinierten Anwendern in Form einer
Flash Demonstration zur Verfügung gestellt. Diese
Videos erlauben einen praxisnahen Einblick in die
Arbeit mit NetBeans.
Mailinglisten
Zum Informationsaustausch stehen diverse Mailinglisten für Anwender und Entwickler bereit.
Tabelle 3.7: NetBeans - Aktivitäten der Community
Für Anwender, die auf kommerziellen Support Wert legen, bietet die Firma Sun
Microsystems entsprechende Pakete an. Unter [NB06l] wird beispielsweise eine 24/7
Telefonunterstützung für die NetBeans IDE angeboten.
Evaluierung
82
Sonstiges
Das bereits bei der Eclipse Evaluierung beschriebene Ant-Buildsystem kommt in der
NetBeans IDE intensiv zum Einsatz. Bei diversen anderen JavaEntwicklungsumgebungen, wie z. B. Eclipse oder JBuilder, ist Ant als alternatives
Buildsystem integriert. NetBeans geht nach [KCC+06] hier einen Schritt weiter und
verwendet es als alleiniges System für alle projektbezogenen Aktionen wie beispielsweise Kompilier- oder Debugprozesse. Wenn ein neues Projekt angelegt oder
ein bestehendes abgeändert wird, generiert die IDE die entsprechenden XML-Tags
im Ant-Skript automatisch. Der größte Vorteil dieses Ansatzes ist, dass das Projekt
auch ohne spezielle Anpassungen in einer anderen IDE oder direkt in der Konsole
übersetzt oder ausgeführt werden kann.
NetBeans unterstützt die VCS-Systeme CVS [CVS06] und Subversion [SubV06].
Während CVS bereits in der Standarddistribution enthalten ist, muss Subversion
über das Update-Center nachinstalliert werden. Laut der NetBeans SubversionIntegrations-Homepage [NB06m] wird es in der, voraussichtlich Mitte 2007 erscheinenden, Version 6.0 standardmäßig integriert sein. Die Systeme binden sich direkt in
die Projektverwaltung ein und erlauben das einfache Absetzen der entsprechenden
VCS Befehle. Die Arbeit mit den VCS Systemen wird durch eine Reihe integrierter
Hilfsprogramme, die beispielsweise das Vereinen, das Suchen oder den Vergleich
unterschiedlicher Versionen ermöglichen, sehr komfortabel gestaltet.
Für moderne Entwicklungsumgebungen ist eine adäquate Unterstützung von XML
sehr wichtig. So bietet auch NetBeans in der IDE als Standard-Plugins bereits einige
Möglichkeiten, XML-Dokumente, DTDs oder Schemas zu erstellen bzw. zu verarbeiten. Oft wird hier ein textbasierter Ansatz gewählt. Mit dem XML-Plugin im Enterprise Erweiterungspack geht man hier neue Wege. Man hat erkannt, dass die rein
textbasierte Erstellung und Darstellung von z. B. großen Schema-Dateien nicht sonderlich intuitiv ist. Das XML-Plugin bietet deshalb verschiedene Varianten, um
Schemas grafisch aufzubereiten sowie zu editieren. Neben der einfachen SourceAnsicht existiert eine Baumansicht, eine mehrspaltige Ansicht der SchemaBestandteile sowie eine grafische Designansicht. Ein weiteres innovatives Feature
des Plugins ist die Analyse von Abhängigkeiten in der Schema-Datei. Wenn man
herausfinden möchte, an welchen Stellen im Schema Elemente referenziert werden,
kann bequem eine entsprechende Option im Kontextmenü genutzt werden. Dies öffnet zum einen eine XML-Refactoring-Ansicht für die Darstellung der Abhängigkeiten, zum anderen wird auch ein grafisches Modell, welches an UMLKlassendiagramme angelehnt ist, angezeigt. (nach [AT06])
Evaluierung
83
Abbildung 3.35: NetBeans - Refactoring einer XML-Schema Datei
Evaluierung
3.3
84
JBuilder 2006
Hersteller
Borland Software Corporation
Produktversionen
Foundation, Developer, Enterprise
Testversion
JBuilder 2006 Enterprise, Deutsche Trialversion
Anschaffungskosten
Kostenlos (Foundation) – 4000 EUR5 (Enterprise)
Plattform
Windows, Linux, Solaris
Homepage
www.borland.com
3.3.1 Allgemeines
Borland JBuilder war eine der ersten Entwicklungsumgebungen für die Programmiersprache Java. Nach [RGN03] war Borland’s erste Idee, Java-Unterstützung in
ihr Produkt C++ 4.5.1, ein früher Vorgänger des C++ Builders [Bor06e], bereitzustellen. Diese Erweiterung erlaubte das Erstellen von Java-Quelltexten und bot die
Möglichkeit, den Compiler aus der IDE zu starten. Unterstützung bei der Fehlersuche oder gar Debuggingfunktionalitäten wurden nicht geboten.
Die ersten JBuilder Versionen waren nach [RGN03] teilweise in C++ und Delphi,
sowie ein kleiner Teil der Implementierung, ungefähr 20 Prozent, in Java implementiert. Der im Jahr 2000 erschienene JBuilder 3.5 war schließlich die erste Version,
die komplett in Java realisiert wurde. Der aktuelle JBuilder 2006 ist, nach einer Änderung der Versionskennzeichnung im Jahr 2005 von laufender Nummer auf Erscheinungsjahr, bereits das 12. Major-Release.
Anfang 2006 sah es so aus, als wäre JBuilder 2006 die letzte Version unter der Leitung der Firma Borland. In einer Pressemitteilung [Bor06d] teilte die Firmenleitung
mit, ihre IDE-Produke, mit denen Borland einst Markführer gewesen ist, verkaufen
zu wollen, um sich verstärkt auf Application-Lifecyle-Mangement Produkte konzentrieren zu können. Zum angekündigten Verkauf kam es schließlich nicht. Stattdessen gründete Borland die Tochterfirma CodeGear (Pressemitteilung: [Bor06c]),
die sich um die IDE-Produkte kümmern sollte.
5 Borland Vertrieb durch http://www.edv-buchversand.de/borland/ (16.09.2006)
Evaluierung
85
Trotzdem wird JBuilder 2006 die letzte Version in seiner heutigen Form sein. Borland bzw. CodeGear kündigte an [Bor06f], dass JBuilder 2007 auf die Eclipse Plattform aufsetzen wird und diese um Borland’s ALM Produkte, wie Together, CaliberRM und StarTeam ergänzen wird. Borland ist zwar langjähriges Mitglied der
Eclipse Foundation, trotzdem kam dieser Schritt für viele überraschend.
3.3.2 Bewertung nach Kriterienkatalog
Editor
JBuilder verfügt über einen modernen Codeeditor, der fast alle im entsprechenden
Abschnitt des Kriterienkatalogs aufgelisteten Features abdeckt. Die Change Bar, eine
vertikale Markierungsleiste, welche geänderte Codebereiche farbig hervorhebt, fehlt
jedoch.
Abbildung 3.36: JBuilder - Codeeditor
Abbildung 3.36 zeigt exemplarisch die Arbeit mit dem JBuilder Quelltexteditor. Die
diversen Vervollständigungsfunktionalitäten, wie z. B. die Code Completion in Abbildung 3.36, sind komfortabel bedienbar und individuell konfigurierbar. So kann
beispielsweise die Zeitdauer zwischen dem letzten Tastendruck durch den Benutzer
Evaluierung
86
und dem Erscheinen des Popup-Fensters eingestellt werden. Wird die Vervollständigung bei einer Wertzuweisung verwendet, können unpassende Vorschläge ausgeblendet werden. Diese Funktion ist besonders bei umfangreichen Strukturen hilfreich. Die Abbildung zeigt weiters einen eingeklappten Abschnitt (Zeilen 126-129),
einen Debugger-Haltepunkt (Zeile 141) sowie ein Lesezeichen (Zeile 138). Aktuell
fehlerhafter Quelltext wird rot unterwellt dargestellt.
Der Codeeditor bietet einige weitere hilfreiche Funktionen. Die sogenannte ScopeInsight Funktion beispielsweise ist ein Bereichswerkzeug für den Quelltext, das die
Verschachtelungsebenen oberhalb des aktuell im Editor sichbaren Code-Elements
identifiziert und den Kontext angibt, indem es die verknüpften Klassen, Methoden
oder Ausdrücke im Quelltext anzeigt. ScopeInsight zeigt die Position in der geöffneten Datei an, indem es den Klassen- und Methodennamen der aktuellen Struktur in
einem schattierten Popup-Feld am obigen Editorrand einblendet. Mit dem sogenannten SyncEdit-Werkzeug können mehrfach vorkommende Bezeichner innerhalb eines
markierten Bereichs schnell und einfach abgeändert werden.
Bei jeder geöffneten Java Quelltext-Datei kann in die sogenannte „Doku“-Ansicht
umgeschaltet werden. In dieser einfach gehaltenen JavaDoc-Ansicht kann jederzeit
der aktuelle Zustand der Klassendokumentation, ohne manuelles Erstellen der APIDokumentation, untersucht werden.
Bei Klassen, die grafische Oberflächenstrukturen enthalten, ist es möglich in die
sogenannte Designer-Ansicht zu wechseln. Diese enthält mehrere Entwurfswerkzeuge. Zu diesen gehören ein UI- und Menü-Designer sowie ein Werkzeug für den Datenzugriff. Der UI-Designer ermöglicht das übliche Zusammenstellen der Benutzeroberfläche mit JavaBeans aus einer Komponentenpalette. Das Arbeiten mit den
komplexeren Layout-Managern wie beispielsweise dem GridBagLayout ist relativ
umständlich und bietet keine besonderen Vorteile gegenüber dem Arbeiten direkt im
Quelltext. Der Designer eignet sich gut für einfache Designs z. B. auf Basis des BorderLayouts und Null-Layouts. Mit dem Borland Layout-Manager XYLayout steht
ein erweitertes Null-Layout zur Verfügung, das die bevorzugte Größe (preferredSize) der Komponente berücksichtigt. XYLayout passt die Komponentengröße an das
Erscheinungsbild, z. B. spezielle Schriftarten, des Systems an. Bei Verwendung des
Null-Layouts würden durch die absoluten Pixelangaben Probleme, wie beispielsweise abgeschnittene Texte und überlappende Komponenten, auftreten.
Evaluierung
87
Abbildung 3.37: JBuilder - GUI-Designer Ansicht
Der Designer verwendet keine speziellen Ressourcen um die Oberflächeninformationen zu speichern, sondern bezieht und legt die Information direkt im Java Quelltext
ab. Diese von Borland als Two-Way-Tool-Technologie bezeichnete Technik erlaubt
sowohl Änderungen im Designer als auch direkt im Quelltext.
Beim visuellen Designer handelt es sich um eine Komponente mit gut dokumentierten Schnittstellen. Diese erlauben es Entwicklern ihn gegebenfalls anzupassen. Beispielsweise wäre eine Unterstützung zusätzlicher Layout-Manager denkbar.
JBuilder unterstützt die typischen, im Kriterienkatalog vorgestellten, Refactoringmöglichkeiten (siehe dazu das in Abbildung 3.38 dargestellte Refactoring-Menü).
Abbildung 3.38: JBuilder - Refactoringmenü, Refactoring-Historie
Evaluierung
88
Die durchgeführten Änderungen werden in der sogenannten Refactoring-Historie
abgelegt. Diese kann zu Projekt- und Bibliotheksarchiven hinzugefügt werden, sodass beispielsweise andere Projekt-Mitglieder sehen können, welche RefactoringVorgänge ausgeführt wurden. Im Dialogfeld „Verteilte Refactorings“ können die
Teammitglieder ihren Quelltext entsprechend anpassen. Refactoring-Vorgänge müssen nicht unbedingt im Quelltexteditor durchgeführt werden, einige Mechanismen
stehen auch in der UML-Ansicht zur Verfügung (siehe dazu Modellierung in diesem
Abschnitt).
JBuilder 2006 ist neben der englischen Orginalversion in den Sprachen Deutsch,
Französisch und Japanisch erhältlich. Im Zuge dieser Evaluierung wurde großteils
mit der deutschen Version gearbeitet. Die deutsche Übersetzung ist durchwegs in
Ordnung, in der Onlinehilfe gibt es jedoch einige Übersetzungsfehler und einige
Spezialkapitel, wie beispielsweise die OpenTool-Dokumentation, sind nur auf Englisch verfügbar. Die Oberfläche wurde gut übersetzt, auf unbedingtes Übersetzen
jedes Spezialbegriffes wurde jedoch verzichtet.
JBuilder 2006 verfügt über keine spezielle Unterstützung für Entwurfsmuster, da bei
Borland IDEs üblicherweise die Erweiterung Together [Bor06g] diese Aufgabe übernimmt. Borland Together wurde für JBuilder 2006, im Gegensatz zur Vorversion
2005, nicht zur Verfügung gestellt. Da es sich bei der kommenden JBuilder Version
2007 um einen Eclipse-basierten Ansatz handelt und für Eclipse bereits eine Together Portierung bereit steht, ist anzunehmen, dass für JBuilder 2006 kein entsprechendes Modul nachgereicht wird.
Der Aufbau der Arbeitsumgebung bietet in der Standardkonfiguration eine für Entwicklungsumgebungen typische Anordnung der Komponenten. Zentrales Element ist
der Eingabeteil, z. B. Code- oder visueller Editor, am rechten Rand eine Übersicht
der Dateien des Projekts und eine Strukturansicht der aktuell geöffneten Klasse mit
ihren einzelnen Elementen wie Methoden und Variablen. Die Anordnung dieser
Komponenten kann per Drag-and-Drop einfach geändert werden und bei Bedarf als
sogenannter Arbeitsbereich gespeichert werden. Ein Arbeitsbereich ist vergleichbar
mit einer Perspektive unter der Eclipse IDE. Zwischen den abgelegten Arbeitsbereichkonfigurationen kann einfach gewechselt und diese für jeweils unterschiedliche
Aspekte der Entwicklung verwendet werden.
Evaluierung
89
Modellierung
JBuilder 2006 bietet minimale Unterstützung für UML, indem es die Möglichkeit
bereitstellt begrenzte Paket-Abhängigkeitsdiagramme und kombinierte Klassendiagramme aus dem Quelltext zu generieren (Reverse Engineering). Zur Visualisierung
von Code mit Hilfe von UML-Diagrammen gibt es den UML-Browser. Dieser ist
über das Register UML in der Editoransicht erreichbar und jede aktuell aktive JavaDatei kann in diese Ansicht umgeschaltet werden (siehe dazu auch Abbildung 3.39).
UML-Sichtbarkeitssymbole können wahlweise gemäß der UML-Standard-Notation
oder eigenen JBuilder Grafiken ausgeführt sein, wie etwa in Abbildung 3.39 ersichtlich. Durch Klicken auf einzelne Elemente wie Klassen und Abhängigkeiten kann zu
anderen Diagrammen navigiert werden. In der UML-Ansicht steht ein Kontextmenü
zur Verfügung, welches schnellen Zugriff auf gängige Aktionen, wie passende Refactoring-Befehle (Referenzen suchen, Umbenennen, Verschieben, Parameter ändern, …), Diagramm als PNG-Grafik abspeichern und JavaDoc-Anzeige bietet.
Abbildung 3.39: JBuilder - UML Ansicht
Neben der eigentlichen UML-Ansicht gibt es noch ein Strukturfenster, in Abbildung
3.39 rechts unten eingeblendet, welches eine Baumansicht der Beziehungen anzeigt.
Diese Ansicht kann für die Auswahl und Navigation zu einer Klasse oder einem Paket verwendet werden. Darüber hinaus werden auch Informationen angezeigt, die im
Diagramm nicht enthalten sind, weil sie beispielsweise durch den Benutzer herausgefiltert wurden oder aus Gründen der Übersichtlichkeit entfernt wurden.
Evaluierung
90
Für erweiterte UML-Fähigkeiten sowie Unterstützung für modellgetriebene Entwicklung ist bei Borland IDE-Produkten das Produkt Borland Together [Bor06g]
zuständig. Dieses ist jedoch, wie bereits erwähnt, nicht für den JBuilder 2006 erhältlich. Durch diesen Umstand stehen im UML-Bereich standardmäßig nur wenige und
für modellgetriebene Entwicklung keine Funktionen zur Verfügung.
Programmierung
JBuilder 2006 ist eine reine Java-Entwicklungsumgebung und unterstützt keine weiteren Programmiersprachen. Eine Integration alternativer Java Compiler, wie beispielsweise Jikes [IBM06b] ist jedoch mit OpenTool-Erweiterungen möglich.
JBuilder 2006 liefert standardmäßig bereits viele Klassenbibliotheken und Frameworks mit. Tabelle 3.8 zeigt einige der mitgelieferten Bibliotheken.
Apache Axis 1.2.1 [Apa06f]
Bei Apache Axis handelt es sich um eine Implementierung des Simple Object Access Protocol (SOAP),
ein XML-basiertes Protokoll für den Austausch von
Informationen.
Apache Cocoon 2.1.5
[Apa06g]
Bei Cocoon handelt es sich um ein Servlet-basiertes
Java-Publishing-Framework zur Veröffentlichung
von XML. Dabei wird Inhalt, Stil und Logik getrennt und mittels XSL-Transformation in das Zielformat übergeführt.
Apache Cactus 1.7 [Apa06e]
Cactus erweitert JUnit um Komponententests für
serverseitigen Java-Code. Cactus leitet dazu den
Testfall an einen serverseitigen Proxy weiter.
Apache Xalan 2.2 [Apa06h]
Xalan ist ein XSLT-Prozessor. Zu den Features von
Xalan zählt beispielsweise eine umfangreiche
Schnittstellenunterstützung für die Java API for
XML Processing (JAXP).
BorlandXML
BorlandXML bietet laut der JBuilder Onlinehilfe
einen Datenbindungsmechanismus, der die Details
von XML ausblendet und somit die CodeKomplexität zur leichteren Handhabung verringert.
Evaluierung
91
HttpUnit 1.5.4 [HttpU06]
HttpUnit ermöglicht Komponententests für Webseiten und wird dazu in das JUnit-Testframework integriert. Es ermöglicht die Emulierung typischer
Browserfunktionalitäten inklusive Formularbehandlung, JavaScript, HTTP-Authentifizierung, Cookies
und automatische Weiterleitungen.
Sun JavaMail 1.3.2 [Sun06i]
JavaMail stellt ein plattform- und protokollunabhängies Framework für das Entwickeln von Mailapplikationen zur Verfügung.
Tabelle 3.8: JBuilder - Einige mit der IDE ausgelieferte Klassenbiblotheken
JBuilder bietet umfangreiche Unterstützung bei der Arbeit mit Komponentenstandards und Middlewaresysteme. Für Enterprise JavaBeans steht beispielsweise ein
komfortabler Deployment-Deskriptor-Editor zur Verfügung. Weiters steht ein leistungsfähiger EJB-Designer bereit, mit dem man visuell ein Enterprise-Bean erstellen
kann. Abbildung 3.40 zeigt die Arbeit mit diesem EJB-Werkzeug.
Abbildung 3.40: JBuilder - EJB-Designer (Bildschirmfoto: JBuilder-OnlineHilfe)
Evaluierung
92
Der Designer ist ein vollständiges Zwei-Wege-Tool: Änderungen können sowohl
direkt im grafischen, als auch im Code-Editor durchgeführt werden. Der Quelltext
und das Modell werden dabei synchronisiert.
Auch für den Middleware-Standard CORBA (Common Object Request Broker Architecture) bietet JBuilder eine umfassende Unterstützung. JBuilder hat standardmäßig die CORBA-Entwicklungswerkzeuge VisiBroker ORB [Bor06h] sowie OrbixWeb ORB [OW06] integriert und bietet auch Werkzeuge zur Konfiguration anderer
ORBs von Drittherstellern an.
Das Borland eigene Produkt VisiBroker bietet eine CORBA ORB-Laufzeit- und Entwicklungsumgebung, zur Verteilung und Verwaltung verteilter Java-Anwendungen.
Erstellte Objekte können auf webbasierte Anwendungen zugreifen, die den Übertragungsstandard IIOP (Internet Inter-ORB Protocol) zur Kommunikation zwischen
verteilten Objekten verwenden.
Die, für Methodenaufrufe von externen Java-Objekten entwickelte, Technologie
RMI (Remote Method Invocation) wird durch einige Assistenten sowie einer integrierten RMI-Registrierung ebenfalls unterstützt.
Klassenbibliotheken und Komponenten von Drittanbietern stehen, wie bei jeder anderen Entwicklungsumgebung für Java, in großem Umfang zur Verfügung. Zur Verwaltung gibt es einen komfortablen Dialog, in dem die Bibliotheken übersichtlich
kategorisiert werden können, siehe dazu auch Abbildung 3.41.
Abbildung 3.41: JBuilder - Dialog zum Verwalten der Klassenbibliotheken
Evaluierung
93
Die von JBuilder standardmäßig mitgelieferten Komponenten werden ebenfalls direkt mit diesem System verwaltet. Zu den einzelnen Einträgen können optional neben der eigentlichen Klassenbibliothek zusätzlich noch Pfade zu Quellcodedateien
sowie API-Dokumentation definiert werden. Es ist auch möglich, Abhängigkeiten zu
anderen Bibliotheken anzugeben.
Zum Internationalisieren von Anwendungen bietet JBuilder verschiedene Funktionen. Für Anwendungen, die nachträglich übersetzt werden sollen, gibt es einen sogenannten Ressourcen-Experten. Dieser durchsucht den Quelltext und ermöglicht die
Verschiebung von fixkodierten Texten, sowie bereits definierten Tastaturkürzeln in
Ressourcebündel-Dateien. Beim Platzieren übersetzbarer Textkomponenten im UIDesigner gibt es die Möglichkeit, die entsprechenden Strings umgehend in Ressourcebündeln abzulegen. Länderspezifische Zeichen, wie beispielsweise die Umlaute im
deutschsprachigen Bereich, werden automatisch mit entsprechenden Unicode Escape-Sequenzen kodiert, um eine korrekte Darstellung auf allen Systemen zu gewährleisten.
Für das Entwickeln von Projekten, die eine Datenbank benötigen, bietet JBuilder
einige Funktionen. Die integrierte Borland Datenbank JDataStore ist eine reine JavaDatenbank folgende Komponenten beinhaltet:
•
Eine eingebettete relationale Datenbank mit JDBC- und DataExpressSchnittstellen, die einen Mehrbenutzerzugriff unter Transaktionsbedingungen
unterstützt.
•
Eine Objektspeicherlösung für das Speichern von serialisierten Objekten und
Dateiströmen.
•
Eine JavaBean-Komponente, die mit visuellen Tools zum Erstellen von JavaBeans bearbeitet werden kann.
Zur Verwaltung der JDataStore-Datenbanken steht der sogenannte JDataStoreExplorer, der in die IDE integriert ist, zur Verfügung.
Für Datenbanken mit JDBC-Treiber steht der Datenbank-Pilot bereit, der einen Dankenbank-Browser sowie einen SQL-Abfrageeditor bietet. Mit Hilfe des JDBCMonitors kann der laufende Datenbankverkehr beobachtet werden. Dabei werden,
laut OnlineHilfe, alle JDBC-Treiber während ihrer Verwendung in JBuilder überwacht.
Evaluierung
94
Für den grundlegenden Datenzugriff stellt JBuilder die DataExpress-Komponenten
zur Verfügung. Diese decken mit den Phasen Daten bereitstellen, Daten manipulieren und Daten Speichern alle wichtigen Funktionalitäten einer typischen Datenbankanwendung ab. Die dbSwing-Klassenbibliothek stellt grafische Komponenten für ein
Datenbankfrontend auf Basis des Swing-Widgetsets zur Verfügung. Die gebotenen
Tabellen- und Navigationskomponenten werden standardmäßig im GUI-Designer
angeboten und können einfach konfiguriert werden.
Abbildung 3.42: JBuilder - Mit dbSwing-Komponenten erstelltes Datenbank-Frontend
JBuilder bietet umfangreiche Unterstützung bei der Erstellung von Webapplikationen. Folgende Technologien werden beispielsweise durch Assistenten und teilweise
durch unterschiedliche Modellierungswerkzeuge unterstützt:
Struts
Für die Entwicklung von Anwendungen auf Basis
des Struts-Frameworks bietet JBuilder verschiedenste Werkzeuge und Assistenten. Mit dem StrutsDesigner können Elemente des Webmoduls visuell
gestaltet werden. Die XML-basierten Konfigurationsdateien können über komfortable Editoren bearbeitet werden.
Applets
Um ein Applet zu entwickeln, steht ein Assistent
bereit, der die Appletgrundstruktur sowie eine pas-
Evaluierung
95
sende HTML-Datei generiert. Das User Interface
kann mit dem Designer gestaltet werden. Zum Testen der Anwendung kann der AppletViewer oder ein
Browser direkt aus der IDE gestartet werden.
Web Start
Um aus einem Applet oder einer Applikation eine
Web Start Anwendung zu entwickeln steht ein passender Assistent zur Verfügung. Weiters hilft JBuilder bei der Erstellung einer geeigneten JNLPStartdatei und bietet einen passenden Webserver,
z. B. TomCat 5.0, um die Anwendung testen zu
können.
JavaServer Faces/Pages
Die Entwicklung von JSF bzw. JSP wird von zahlreichen Assistenten und Designer unterstützt. So
steht beispielsweise ein JSF-Editor zur Verfügung
mit dem auf Quelltext-Basis die Seite bearbeitet
werden kann. Von einer Komponentenpalette können Textvorlagen per Drag-and-Drop in den Quelltext eingefügt werden. Mit dem visuellen JSFDesigner, siehe Abbildung 3.42, kann der Nachrichtenfluss der einzelnen Seiten modelliert und Attribute der einzelnen Elemente definiert werden.
Web Services
Für Web Services steht eine Konsole zum Anzeigen
von WSDLs und SOAP-Nachrichten, ein AxisFlow-Designer, ein TCP-Monitor sowie ein WebLogic-Flow-Designer zur Verfügung.
InternetBeans Express
Dabei handelt es sich, laut JBuilder Onlinehilfe, um
Komponenten und Tag-Bibliotheken von Borland,
die die Darstellung und Bearbeitung von Daten aus
einer Datenbank erleichtern. Diese Technologie
wird in Verbindung mit Servlets oder JSP verwendet.
Servlets
Wird direkt mit Servlets gearbeitet, können diese auf
den integrierten Servern, z. B. TomCat, ausgeführt
und getestet werden.
Tabelle 3.9: JBuilder - Unterstützte Technologien bei der Entwicklung von Webapplikationen
Evaluierung
96
Bei J2EE werden die Versionen 1.3 und 1.4 unterstützt. Die aktuelle Version 1.5
wird derzeit noch nicht unterstützt. Die Server TomCat 4.1 sowie TomCat 5.5 sind in
der JBuilder 2006 Distribution enthalten. Für folgende Applikationsserver sind passende Konfigurationen vorhanden: Borland Enterprise Server 5.2 und 6.0, JBoss 3.2
und 4.1, BEA Weblogic Server 7.0 und BEA Weblogic Platform 8.1, IBM Webshere
4 und 5, Sybase EAServer 4.x und 5.x.
Abbildung 3.42: JBuilder - JavaServer Faces Flow-Designer
Die Anwendungsentwicklung für mobile Endgeräte ermöglicht das integrierte und
konfigurierte J2ME Wireless Toolkit 2.1 (WTK) von Sun Microsystems. Alternative
J2ME-WTKs, beispielsweise die Nokia Developer Suite for J2ME [NSDK06], können ebenfalls verwendet werden.
Evaluierung
97
Abbildung 3.43: JBuilder - Entwicklung für mobile Endgeräte
Abbildung 3.43 zeigt exemplarisch die Anwendungsentwicklung für mobile Endgeräte mit dem JBuilder 2006. Der gestartete Emulator stammt aus Sun’s WTK 2.1. Im
Hintergrund ist die MIDP Designeransicht geöffnet. Der Designer ähnelt dem JBuilder-Standarddesigner für Swing und AWT Oberflächen, bietet jedoch durch die fehlende Unterstützung komplexer LayoutManager des Wireless Toolkits nicht den
gleichen Komfort.
Die Applikationsentwicklung für mobile Endgeräte ist unter JBuilder einfach gehalten. Erweiterte Fähigkeiten wie beispielsweise ein Flow-Designer, um die Abfolge
der einzelnen Oberflächen übersichtlich gestalten zu können, wären wünschenswert.
Softwarequalitätssicherung
Der JBuilder verfügt über einen gut integrierten und leistungsfähigen Debugger. Für
das Starten der zu untersuchenden Anwendung im Debug-Modus steht ein eigenes
Menü in der JBuilder-Symbolleiste zur Verfügung. In diesem sind alle LaufzeitKonfigurationen, die für das Ausführen der Anwendung erstellt wurden, bereits vorhanden. Der Debugger unterstützt alle Funktionalitäten, die man sich erwartet, wie
beispielsweise eine schrittweise Ausführung, Untersuchung spezifischer Abschnitte
Evaluierung
98
durch das Setzen eines Breakpoints und die Darstellung von Variableninhalten. Darüber hinaus stehen noch einige weitere interessante Funktionalitäten bereit. So existiert eine sogenannte Monitorsynchronisierung, die bei der Suche möglicher Verklemmungen (Deadlocks) sehr hilfreich sein kann.
Abbildung 3.44: JBuilder - Debuggeransicht
Abbildung 3.44 zeigt exemplarisch eine Debug-Sitzung. Während der Arbeit mit
dem Debugger wird ein Fenster (Abbildung 3.44, unterer Bildschirmrand) eingeblendet, welches Zugriff auf derzeit mögliche Aktionen des Debuggers erlaubt. Die
Inhalte dieser Ansicht sind durch Register gruppiert und bieten folgende Funktionalitäten: Eine Konsole mit Programmausgaben durch System.out bzw. System.err, eine
Ansicht der laufenden Threads mit Stack-Ansicht, die bereits erwähnte Monitoransicht, eine Datenausdruck-Ansicht, einen Überblick aktuell geladener Klassen sowie
statischer Daten und eine Übersicht über die gesetzten Haltepunkte im Quelltext.
Abbildung 3.44 zeigt eine durch einen Haltepunkt in Zeile 27 gestoppte Anwendung
mit geöffneter Threadansicht. Wird der Mauszeiger über Variablen bewegt, wird der
Inhalt dieser, falls vorhanden, visualisiert. Der Debugger bietet die Möglichkeit, sich
zu entfernten Applikationen zu verbinden, um diese untersuchen zu können.
Um Performance-Probleme auf Quelltextebene über den gesamten Entwicklungszyklus einer Anwendung verfolgen und protokollieren zu können, stellt Borland im JBuilder die Optimizeit Enterprise Suite zur Verfügung. Nach der Onlinehilfe ist es damit möglich, Performance-Engpässe auf JDBC-, JMS-, JNDI-, JSP-, EJB-, CCI- und
Evaluierung
99
auf Webservices-Ebene zu ermitteln. Tabelle 3.10 gibt einen Überblick über die einzelnen Werkzeuge der Optimizeit-Suite.
Profiler
Mit dem eigentlichen Profiler kann die Performance
auf den beschriebenen Ebenen untersucht und verbessert werden. Er enthält eine Speicher- und CPUProfiling-Funktion. Mit dem sogenannten Application Quality Analyzer werden auftretende Fehlermeldungen und Exceptions erfasst und protokolliert.
Zusätzlich gibt es noch eine Berichtfunktion, mit der
Snapshots generiert und erfasste Daten in Berichtform, beispielsweise im PDF-Format, exportiert
werden können.
Code Coverage
Dieses Optimizeit Werkzeug erlaubt die Feststellung, welche Zeilen des Quellcodes tatsächlich ausgeführt werden. Code Coverage kann verwendet
werden, um nicht benötigten Quelltext zu erkennen,
gegebenenfalls zu entfernen und so den Speicherbedarf der Anwendung zu verringern.
Thread Debugger
Der Thread Debugger ermöglicht es Threadkonflikte, verhungerte Threads und Verklemmungen zu
erkennen.
Request Analyzer
Der Request Analyzer ist, nach der Onlinehilfe, ein
Performance-Management-Tool, das bei der Optimierung von J2EE-Anwendungen hilft. Die Analyse
umfasst die Erkennung von schlechter Anwendungsperformance auf bestimmten Applikationsservern, Überbeanspruchung von J2EE-Resourcen,
sowie Probleme bei Zuverlässigkeit und Skalierbarkeit.
Progress Tracker
Dieses Werkzeug ermöglicht das Analysieren und
Vergleichen der Snapshots mittels übersichtlicher
Tabellen. Es stehen Ansichten für CPU- und Speicherprofiling sowie Code Coverage zur Verfügung.
Evaluierung
Filtereditor
100
Mit dem Filtereditor ist es möglich, einzelne Codebereiche vom Profiling auszuschließen. Dadurch
kann gezielt der Overhead reduziert werden.
Tabelle 3.10: JBuilder - Optimizeit Werkzeuge
Die Optimizeit-Suite ist zwar in die Entwicklungsumgebung integriert, ihre Werkzeuge unterscheiden sich im Vergleich zu anderen JBuilder-Komponenten jedoch
sowohl bei der Bedienung als auch im Aussehen.
Für die Arbeit mit Unit Tests bietet JBuilder umfassende Unterstützung des JUnit
Testframeworks, für das er auch eine Reihe von Assistenten zur Verfügung stellt,
siehe Abbildung 3.45. Die JUnit Unterstützung beschränkt sich derzeit auf Version
3.8. Um für eine bestehende Klasse Testfälle zu erstellen, generiert die IDE für
wählbare Methoden die entsprechenden Strukturen. Diese können anschließend um
die eigentliche Implementierung erweitert werden.
Abbildung 3.45: JBuilder - Unit Test Unterstützung
Beim Ausführen der Testfälle wird die JBTestRunner-Ansicht eingeblendet, deren
Oberfläche und Bedienung an die Orginal JUnit Swingoberfläche angelehnt ist, siehe
dazu Abbildung 3.45. Die Testfälle werden standardmäßig getrennt vom Produktivcode abgelegt, dieses Verhalten kann jedoch einfach geändert werden.
JBuilder stellt mit Cactus eine JUnit-Erweiterung bereit, die Unit-Tests für serverseitigen Java-Code ermöglicht. Laut der Onlinehilfe ist dies hilfreich beim Testen von
Enterprise JavaBeans und Webanwendungen.
Quality Audits, im JBuilder Code-Audits genannt, können auf Projektebene bequem
konfiguriert werden, siehe dazu Abbildung 3.46.
Evaluierung
101
Abbildung 3.46: JBuilder - Code Audits
Nach dem Aktivieren der Code-Audits, werden eventuelle Regelverstöße als Warnungen direkt in der Quelldatei sowie in der entsprechenden Strukturansicht durch
einen zusätzlichen Knoten „Warnungen“ visualisiert. Die Untersuchung des Quellcodes erfolgt im Hintergrund und arbeitet angenehm schnell. JBuilder erlaubt es derzeit nur vordefinierte Regeln zu wählen. Die Möglichkeit eigene Audits zu definieren, existiert derzeit nicht.
JBuilder 2006 unterstützt standardmäßig keine Qualitätsmetriken. Für die Vorgängerversion JBuilder 2005 war die Borland Erweiterung „Together“ erhältlich, die
unter anderem auch Metriken unterstützte. Together wird derzeit, wie bereits erwähnt, nicht für die aktuelle JBuilder Version angeboten.
Erweiterbarkeit der Entwicklungsumgebung
Borland versucht den kompletten Lebenszyklus einer Applikationen mit eigenen
Produkten abzudecken. Nach [Bor06a] sind Borland’s Lösungen im ALM-Bereich
auf die einzelnen Phasen der Anwendungsentwicklung, d. h. Definition, Design, Entwicklung und Testen, abgestimmt. Sie bieten hierfür eine integrierte Plattform, in der
die Hauptfunktion für die verschiedenen Rollen des Anwendungslebenszyklus Analytiker, Architekt, Entwickler und Tester – zusammengeführt werden. Laut
[Bor06a] ermöglichen Borland’s ALM Lösungen den IT-Unternehmen, aus der
Softwareentwicklung einen überschaubaren Geschäftsprozess zu machen. Die für die
verschiedenen Rollen optimierten Lösungen sind nahtlos in einer gemeinsamen
Plattform integriert. Dadurch werden nicht nur die einzelnen Schritte des Anwen-
Evaluierung
102
dungsentwicklungszyklus überschaubar und lassen sich problemlos steuern, sondern
sie stehen – dank der verknüpften Entwicklungsprozesse – gleichzeitig in dauerhafter Verbindung mit den allgemeinen Geschäftszielen.
Abbildung 3.47: JBuilder - Borland ALM (Grafik: [MK06])
Abbildung 3.47 zeigt Borland’s Vorstellung zum Application Lifecycle Management. Für jede Entwicklungsphase stellt Borland ein entsprechendes Werkzeug zur
Verfügung. In JBuilder 2006 sind, neben der eigentlichen IDE für die Entwicklungsphase, einige Produkte, wie beispielsweise die Optimizeit-Suite (Testphase) oder die
JDataStore Datenbank (Deployphase) direkt integriert. Für manche Werkzeuge, wie
beispielsweise die Anforderungsverwaltungssoftware CaliberRM [Bor06i] (Anforderungsphase) oder diverse Datebanksysteme (Deployphase), stehen die notwendigen
Schnittstellen für eine saubere Integration bereit. Eine Ausnahme macht hier die
Modellierungsplattform Together, die derzeit nicht für JBuilder 2006 angeboten
wird.
JBuilder 2006 stellt mit der sogenannten OpenTools-API eine flexible und gut dokumentierte Schnittstelle bereit, damit die IDE um Zusatzkomponenten von Drittanbietern erweiterbar ist. Auf der Borland Homepage werden unter [Bor06j] rund 500
Erweiterungen aus den unterschiedlichsten Bereichen aufgelistet.
Hilfe und Support
JBuilder verfügt über eine umfangreiche und gut strukturierte Onlinehilfe. Diese
enthält neben den typischen Registern Inhalt, Index und Suchen auch das Register
Evaluierung
103
Aufgaben. In dieser Ansicht findet sich eine Liste mit Anleitungen die den Anwender bei der Einarbeitung in die Entwicklungsumgebung unterstützen sollen. Dabei
handelt es sich großteils um relativ einfache Aufgaben, die alle Bereiche der IDE
abdecken. Neben diesem Standard-Hilfesystem gibt es noch eine dynamische Hilfe,
welche schnellen Zugriff auf passende Hilfeinformationen während der Arbeit mit
der IDE anbietet. Das Verhalten der dynamischen Hilfe kann detailliert eingestellt
werden. So kann beispielsweise der Detailgrad festgelegt, die Verzögerungszeit bis
zur Anzeige definiert und die Art der Anzeige (Popup oder andockbares Meldungsfenster) bestimmt werden.
Die offizielle Borland Community Webseite, das Borland Developer Network
[Bor06k], behandelt Themen zu all ihren Produkten, wie eben den JBuilder aber
auch sämtliche andere IDEs (z. B. Borland Developer Studio) und ALM Produkte.
Um die dargestellten Informationen zu reduzieren, kann jedoch ein Interessensgebiet
gewählt werden. Im JBuilder- bzw. Java-Bereich finden sich folgende Inhalte:
Artikel
In diesem Bereich finden sich Neuigkeiten zu Produkten, FAQs und ausführliche Anleitungen typische Arbeiten mit den Produkten.
Audio & Video
Dieser Bereich ist besonders interessant. Hier finden
sich Produktpräsentationen und von Entwicklern
kommentierte Videos, die bestimmte Fähigkeiten
eines Produkts praxisnah und sympathisch vermitteln. Auch Interviews werden hier als Audiomitschnitt publiziert.
Beispiele
In diesem Bereich finden sich diverse Beispielprojekte für bestimmte Aufgaben. Diese sind ähnlich
den mitgelieferten Beispielprogrammen, jedoch oft
mit mehr Bezug zu aktuellen Technologien.
Termine
Im sogenannten EventCentral findet sich ein übersichtlicher Kalender mit Einträgen rund um Borland.
Termine für Seminare, Workshops und Messen sind
typischerweise hier nachzuschlagen.
Fehler und Vorschläge
Im QualityCentral haben Anwender die Möglichkeit, auf Fehler im Produkt hinzuweisen. Weiters
Evaluierung
104
kann mit anderen Anwendern diskutiert werden und
Borland-Mitarbeiter stellen gegebenenfalls Workarounds bereit.
Blogs
Viele Entwickler aus den einzelnen IDE-Teams führen ihre eigenen Blogs und schreiben Tipps und sehr
aktuelle Ankündigen über die jeweiligen Produkte.
Das JBuilder Team führt derzeit sieben Blogs.
Tabelle 3.11: JBuilder - Borland Communityaktivitäten
Für den JBuilder und allen anderen Borland Produkten steht ein kostenpflichtiges
Supportprogramm zur Verfügung. Dabei kann nach [Bor06l] zwischen drei Paketen
gewählt werden:
•
Assurance: Dieses Paket beinhaltet Produktupdates, sowie einen, auf drei Anfragen pro Jahr und einen Kontakt pro Lizenz beschränken, E-Mail und Telefonsupport innerhalb der Geschäftszeiten. Der Zugang zur Borland OnlineKnowlegebase wird ermöglicht. Dieses Paket ist bei JBuilder 2006 Enterprise
für ein Jahr im Kaufpreis enthalten.
•
Advantage: Im Vergleich zum Assurance-Paket beinhaltet es eine unbeschränkte Anzahl von Anfragen an den Support innerhalb der Geschäftszeiten, sowie drei autorisierte Kontakte für die Support-Leistungen.
•
Premium: Dieses Paket erlaubt zusätzlich fünf autorisierte Kontakte für die
Support-Leistungen und bietet Unterstützung bei Ausfällen, bei denen der
Kunde in kritischen Situation, d. h. wenn ein System nicht mehr betriebsbereit ist, gegebenenfalls einen Patch. Kunden dieses Pakets können zusätzlich
noch 24x7 Notfall-Support und erweiterte Hilfe für nicht mehr unterstützte
Produkte bestellen.
Die Preise dieser Pakete gibt es nur auf Anfrage und werden normalerweise individuell, je nach Kunden und eingesetzte Borland Produkte, verhandelt.
Sonstiges
In JBuilder 2006 wird besonders viel Wert auf Teamfähigkeit gelegt und daher besitzt die IDE in diesem Bereich interessante Funktionalitäten. So bietet JBuilder
2006 mit ClearCase [IBM06c], CVS [CVS06], StarTeam [Bor06m], Subversion
Evaluierung
105
[SubV06] und Visual SourceSafe [VSS06], im Vergleich zu den anderen evaluierten
Entwicklungsumgebungen standardmäßig die umfangreichste Unterstützung für Versions- und Konfigurationsmanagementsysteme, siehe dazu auch Abbildung 3.48.
Abbildung 3.48: JBuilder - Unterstützte VCS-Systeme
Mit der sogenannten Peer-to-Peer-Collaboration-Funktionaliät können mehrere Anwender als Team zusammen an demselben Projekt und Quelltext arbeiten. Dazu
werden folgende Funktionen bereitgestellt: Dateien senden, LAN-basierter Chat zwischen JBuilder Instanzen, gemeinsame Fehlersuche, gemeinsames Bearbeiten von
Dateien, verschlüsselte Kommunikation sowie einen integrierten Jabber-Client
[JAB06] für die Nutzung der Peer-to-Peer Funktionen über das Internet.
Abbildung 3.49: JBuilder - Peer-to-Peer Modus (Bildschirmfoto: [Bor06n])
Evaluierung
106
Abbildung 3.49 zeigt exemplarisch die Arbeit mit den Peer-to-Peer Funktionen. Es
wurden, zu Demonstrationszwecken auf einem Computer zwei JBuilder Instanzen
geöffnet, welche über das lokale Netzwerk kommunizieren. Die beiden Instanzen
arbeiten am selben Projekt. Am rechten Rand ist jeweils eine Chat-Ansicht eingeblendet. Wird eine Quelldatei zur Bearbeitung geöffnet, können Änderungen die seit
der letzten Bearbeitung von anderen Entwicklern durchgeführt wurden, einfach untersucht werden.
Öffnet ein Entwickler eine Datei, die derzeit von einem anderen Projektmitglied bearbeitet wird, werden alle durchgeführten Änderungen sofort auch auf der neu geöffneten Instanz sichtbar. Um Inkonsistenzen zu vermeiden, kann eine Datei nur von
einem Anwender aktiv bearbeitet werden. Dieser kann jedoch jederzeit die Kontrolle, mittels eines sogenannten Tokens, weiterreichen. Die sofortige Synchronisierung
funktioniert nicht nur bei der Bearbeitung auf Textebene, sondern auch bei aufwendigen grafischen Operationen, wie beispielsweise während einer Oberflächengestaltung im User Interface Designer. Jede Änderung im Designer, wie beispielsweise das
Markieren oder das Verschieben einer Schaltfläche, wird unmittelbar auch auf den
passiven Clients sichtbar.
Die Arbeit im Peer-to-Peer Modus ist sicher nicht immer sinnvoll. Doch gerade
wenn es um wichtige Designentscheidungen geht, beispielsweise um die Gestaltung
von User Interfaces, ist die Verwendung dieses Modus eine effiziente Form der
Kommunikation. Vorstellungen eines Teammitglieds können bequem anderen Entwicklern demonstriert werden und diesen wiederum ist es möglich, ihre Ideen rasch
und anschaulich einzubringen. Auch die Fehlersuche kann durch die Möglichkeit
gemeinsamer Debug-Sitzungen, interaktiv gestaltet werden.
Evaluierung
3.4
107
IntelliJ IDEA 6.0
Hersteller
JetBrains
Produktversionen
Standard
Testversion
IntelliJ IDEA 6.0
Anschaffungskosten
408 EURO6
Plattform
Windows, Linux, Mac OS X
Homepage
www.jetbrains.com/idea
3.4.1 Allgemeines
Die Firma JetBrains wurde, nach [JetB06c], im Februar 2000 von drei Softwareentwicklern gegründet. Ihr erstes Produkt, die Java Entwicklungsumgebung IntelliJ
IDEA, wurde bereits im Jänner des Folgejahres herausgebracht.
Der Markt für Java-IDEs schien zu diesem Zeitpunkt bereits gesättigt und so bescheinigten Kritiker JetBrains nur geringen Erfolg. Die Gründer rechtfertigten ihre
Entscheidung, eine neue Java-IDE zu entwickeln, nach [FSB06], mit dem Argument,
dass die, zu diesem Zeitpunkt vorhandenen IDEs, es zwar einfach ermöglichten
schnell eine Applikation zu erstellen, die Entwicklungsumgebungen jedoch nur in
sehr geringem Umfang Werkzeuge bereitstellten, die Hilfestellungen für zeitintensive Vorgänge beim eigentlichen Programmieren boten. IntelliJ IDEA erhielt viele
Funktionalitäten, die eine komfortable Umstrukturierung des vorhandenen Quelltexts
ermöglichten. Laut Eugene Belyaev, ein Chefentwickler von IntelliJ IDEA, war
JetBrains die erste Firma, die kommerzielle Unterstützung beim sogenannten Refactoring anbot. Auch der Leitspruch der Firma „Develop with pleasure!“ weist auf die
Bemühungen hin, die Softwareentwickler bei ihrer täglichen Arbeit zufrieden zu
stellen.
Der Erfolg gibt der Firma inzwischen Recht. Es verwenden, nach [JetB06c], inzwischen 60 000 Benutzer IntelliJ IDEA. Über 3000 Firmen, darunter 100 der Fortune
500 [For06] Unternehmen, zählen zu den Kunden von JetBrains.
6 Preis laut Onlineshop: http://www.jetbrains.com/idea/buy/buy.html (02.01.2007)
Evaluierung
108
Für Entwickler von OpenSource Software stellt JetBrains, bei Angabe des entsprechenden Projekts, eine spezielle Lizenz zur Verfügung, die ihnen eine kostenlose
Nutzung der IDE erlaubt.
Seit der Gründung von JetBrains erschien praktisch jährlich ein Major-Release von
IntelliJ IDEA, sodass im Oktober 2006 die aktuelle Version 6.0 veröffentlicht wurde.
3.4.2 Bewertung nach Kriterienkatalog
Editor
IntelliJ IDEA verfügt über einen modernen und komfortabel zu bedienenden Codeeditor. Bis auf die fehlende Change Bar werden alle im entsprechenden Abschnitt
des Kriterienkatalogs aufgeführten Funktionalitäten bereitgestellt.
Abbildung 3.50: IntelliJ IDEA - Codeeditor
Abbildung 3.50 zeigt exemplarisch die Arbeit mit dem Quelltexteditor. Deutlich zu
sehen ist ein gesetzter Haltepunkt in Zeile 29, sowie die Arbeit mit der Code
Completion in Zeile 32. Faltbare Strukturen werden mit Minus-Pfeilen markiert
(z. B. Zeilen 24, 35, 40 und 42). Ein gefalteter Methodenrumpf ist bei Zeile 16 zu
Evaluierung
109
erkennen. Fehlerhafte Codeabschnitte werden rot unterwellt. Der Editor unterstützt
auch das Setzen von Lesezeichen, welche entweder als Häkchen dargestellt werden
(Zeile 39), oder, falls es eine Tastenkombination zugewiesen hat, als gelbes Kästchen mit einer entsprechenden Ziffer. Neben geforderten Editorfunktionalitäten nach
dem Kriterienkatalog bietet der Editor beispielsweise noch eine leistungsfähige
Makrofunktion, sowie Unterstützung beim Editieren von JavaDoc Kommentaren.
Zur Gestaltung grafischer Benutzeroberflächen wird ein leistungsfähiger und einfach
zu bedienender Designer zur Verfügung gestellt. Er unterstützt die Standard LayoutOutManager GridBagLayout, GridLayout, CardLayout, BorderLayout und FlowLayout. Zusätzlich kann noch das populäre FormLayout aus der JGoodies Forms
[Jgo06] Bibliothek verwendet werden.
Abbildung 3.51: IntelliJ IDEA - GUI Designer
Bei der Standardeinstellung werden die Komponenten unmittelbar nach dem Platzieren an einem Gitterraster ausgerichtet. Die grafischen Komponenten stehen, wie üblich, in einer Palette bereit und können per Drag-and-Drop auf der Arbeitsfläche
platziert werden. Die Arbeit mit dem Gittersystem gestaltet sich angenehm und auch
komplexe Oberflächen können jederzeit leicht geändert und erweitert werden. Falls
Übersetzungen der Komponenten als RessourceBündel vorliegen, kann während der
Gestaltung die Sprache gewechselt werden. Der Designer stellt eine Voransicht bereit, die das Austesten der erstellten GUI in Kombination mit installierten Java Look
& Feels [Sun06j] erlaubt. Die Designeransicht beinhaltet noch eine Strukturansicht
als Übersicht der Komponentenhierarchie, sowie die für JavaBeans typische Konfigurationstabelle. Die Oberflächeninformation wird in einer XML-Datei abgelegt.
Evaluierung
110
Die notwendigen Komponentendeklarationen werden, falls direkter Zugriff vom
Quelltext gewünscht ist, direkt in der Java Datei vorgenommen. Rümpfe für Ereignisbehandlungsroutinen können direkt aus dem Designer generiert werden. Für Oberflächen, die mit anderen Produkten erstellt wurden, steht das sogenannte
Snapshot Werkzeug zur Verfügung. Dieses analysiert die Struktur der Oberfläche,
erzeugt daraus die notwendige Beschreibungsdatei und ermöglicht anschließend die
Bearbeitung in gewohnter Manier.
Wie eingangs schon erwähnt, war IntelliJ IDEA eine der ersten Entwicklungsumgebungen mit professioneller Refactoring-Unterstützung. Dementsprechend umfangreich gestaltet sich der Funktionsumfang in diesem Bereich, siehe dazu Abbildung
3.52.
Abbildung 3.52: IntelliJ IDEA - Refactoring
Abbildung 3.52 zeigt links das Refactoring-Menü bei der Bearbeitung von Java
Quelltext, das einen Überblick über die Möglichkeiten von IntelliJ IDEA in diesem
Bereich gibt. Eine Besonderheit ist, dass Refactoring-Funktionalitäten nicht nur für
reine Java Dateien, sondern auch für JSP, XML, CSS, HTML und JavaScript Datei-
Evaluierung
111
en geboten werden. Rechts in Abbildung 3.52 wird beispielsweise der Editor beim
Refactoring einer XML Datei gezeigt. Bevor das Umbenennen eines XML-Tags
tatsächlich durchgeführt wird, kann auf Wunsch eine Vorschau angezeigt werden.
IntelliJ IDEA 6.0 ist derzeit nur in englischer Sprache erhältlich. Seit Version 5.1
wird jedoch eine Schnittstelle bereitgestellt, die eine Übersetzung der Oberfläche für
engagierte Anwender ermöglicht. Unter [JetB06b] wird der Übersetzungsvorgang
ausführlich beschrieben. JetBrains selbst stellte laut [JetB06a] Anfang 2006 eine
japanische Übersetzung bereit. Diese ist für die aktuelle Version noch nicht erhältlich. Die verfügbaren Inhalte auf der Produktwebseite sind durchwegs in Englisch
gehalten.
IntelliJ IDEA 6.0 bietet derzeit keine Unterstützung für Entwurfsmuster.
Der Aufbau der Arbeitsumgebung ist, für Entwicklungsumgebungen typisch, mit
einer zentralen Editorkomponente und diversen zusätzlichen Ansichten rund um diese realisiert. Die einzelnen Ansichten können beliebig angeordnet werden. Perspektiven, wie sie beispielsweise Eclipse bietet, stehen nicht zur Verfügung. Es können
jedoch automatisch Ansichten dem Arbeitsbereich hinzugefügt werden. So wird beispielsweise beim Ausführen von Komponententests eine entsprechende Unit TestAnsicht eingeblendet.
Modellierung
Im Bereich der Modellierung bietet IntelliJ IDEA standardmäßig praktisch keine
Funktionalitäten. Mit der kostenlosen Erweiterung SimpleUML [SUML06] ist es
zumindest möglich, den erstellten Code als Klassen- und Sequenzdiagramm grafisch
aufzubereiten. Erst mit der kommerziellen Modellierungserweiterung Visual Paradigm SDE [VP06] werden Funktionalitäten wie Forward-, Reverse- und Roundtripengineering geboten.
Programmierung
IntelliJ IDEA ist eine reine Java-Entwicklungsumgebung und unterstützt daher standardmäßig nur Java. Neben den JDKs von Sun kann auch IBM Jikes [IBM06b] verwendet werden. Für die populäre Skriptsprache Groovy [Gro06a] steht eine Erweiterung unter [Gro06b] zur Verfügung.
Es werden nur die notwendigsten Klassenbibliotheken und Frameworks mitgeliefert,
wie beispielsweise das JUnit-Testframework [JUnit06], Apache Ant [Ant06] oder
Evaluierung
112
das für den GUI-Designer benötigte FormLayout [Jgo06]. Werden für eine Webapplikation beispielsweise die Frameworks Struts [Apa06c] oder JSF [JSF06] benötigt,
werden diese direkt vom Assistenten heruntergeladen und integriert. Diese Vorgehensweise wird jedoch nicht konsequent für alle benötigten Zusatzbibliotheken angeboten. Für das Google Web Toolkit [Goo06], für welches auch einige Funktionalitäten angeboten werden (siehe Abschnitt Webentwicklung), muss das entsprechende
Framework manuell heruntergeladen und der Installationspfad anschließend angegeben werden.
Im Bereich der Middleware und Komponentenstandards wird eine umfangreiche
Unterstützung für Enterprise JavaBeans geboten, siehe dazu Tabelle 3.12 – Webentwicklung. RMI- bzw. IIOP-Stubs können mit einem entsprechenden Assistenten von
der IDE generiert werden. Für CORBA steht keine spezielle Unterstützung bereit.
Java-Klassenbibliotheken und Komponenten von Drittanbietern können in IntelliJ
IDEA auf drei Ebenen verwaltet werden:
•
Projekt Bibliotheken: Diese können nur vom jeweiligen Projekt genutzt werden.
•
Modul Bibliotheken: Ein Modul ist ein Teil eines Projekts. Diese Bibliotheken können nur vom dem Modul genutzt werden.
•
Globale Bibliotheken: Hier sollten Komponenten abgelegt werden, die in vielen Projekten genutzt werden und daher häufig benötigt werden. Klassenbibliotheken, die hier abgelegt wurden, können von jedem Projekt oder Modul
verwendet werden.
Abbildung 3.53: IntelliJ IDEA - Verwaltung der Klassenbibliotheken von Drittanbietern
Evaluierung
113
Abbildung 3.53 zeigt die Verwaltung der Klassenbibliotheken. Der Dialog ermöglicht für erweiterte Hilfefunktionalitäten bei der Nutzung der Komponenten auch das
hinzufügen einer entsprechenden JavaDoc API-Dokumentation oder den Quelltext
der Komponente.
Bei der Internationalisierung von Anwendungen wird der Entwickler durch eine Reihe nützlicher Funktionen unterstützt. Grundsätzlich können die Funktionalitäten in
diesem Bereich bei der Bearbeitung von normalen Java-Dateien, grafischen Benutzeroberflächen und JavaServer Pages genutzt werden. Zunächst stellt IntelliJ IDEA
die typischen Assistenten zum Suchen und Auslagern von fixkodierten Texten bereit.
Werden die Texte schließlich in sprachspezifische Ressourcenbündel ausgelagert,
steht bei der Nutzung der Schlüssel eine Code Completion zur Verfügung, siehe dazu Abbildung 3.54, links.
Abbildung 3.54: IntelliJ IDEA - Internationalisierungs-Funktionalitäten
Im rechten Teil von Abbildung 3.54 wird weiters der Editor für die Bearbeitung der
Sprachdateien gezeigt. Dieser erlaubt die Bearbeitung mehrere Sprachdateien gleichzeitig, indem er für jeden Schlüssel alle verfügbaren Übersetzungen anzeigt und man
diese ändern kann. Um bei vielen, zu übersetzenden, Einträgen die Arbeit übersichtlicher gestalten zu können, ist es möglich, die Schlüssel nach ihren Präfixen zu gruppieren.
Im Bereich der Datenbankprojekte steht zur Verwaltung von Datenquellen ein Dialog zur Verfügung, in dem der Entwickler die Verbindungsdaten und die zu verwendenden JDBC-Teiber definieren kann. Es gibt auch eine EJB PersistenzUnterstützung, die ein Datenmapping von JDBC- oder Hibernate [Hib06]Datenquellen ermöglicht. Für das Mapping steht auch ein Diagrammeditor zur Verfügung. Siehe dazu Abbildung 3.55.
Evaluierung
114
Abbildung 3.55: IntelliJ IDEA - EJB Persistenz Diagramm (Bildschirmfoto: [JetB06d])
Ein Abfrageeditor für SQL-Datenquellen existiert standardmäßig nicht. Mit der
kostenlosten Erweiterung DBHelper [DBH06] kann die Unterstützung relationaler
Datenbanken um einen SQL-Editor mit Syntax Highlighting und Code Completion,
einen Datenbankbrowser, eine grafische Schema-Ansicht und eine SQL-Konsole
erweitert werden.
Bei der Webentwicklung kommt IntelliJ IDEA mit umfangreichen Möglichkeiten.
Tabelle 3.12 gibt einen Überblick über die Art der unterstützten Technologien.
AJAX
Die Unterstützung von AJAX (Asynchronous JavaScript and XML) ist ein neues Feature der aktuellen Version 6.0. Bei der Arbeit mit AJAX gibt es
Refactoringmöglichkeiten, Erstellung eigener Bibliotheken, Code Completion und Syntax Highlighting. Eine einfache Integration des leistungsfähigen
AJAX Frameworks Google Web Toolkit [Goo06]
wird ebenfalls geboten.
JavaServer Faces/Pages
Die Editorkomponente für JSF und JSP bietet Code
Completion, Refactorings, Syntax Highlighting,
Code Vorlagen und die Möglichkeit der Internationalisierung. Nach [JetB06f] wird die JSP 2.0 Spezifikation vollständig unterstützt. Der integrierte Debugger kann auch für JSP-Quellcode verwendet
werden. Weiters steht eine JSP/JSF-Seiten Fluss-
Evaluierung
115
diagrammansicht zur Verfügung.
Enterprise JavaBeans
Enterprise JavaBeans werden in den Spezifikationen 1.0 bis 3.0 unterstützt. Für Routinearbeiten wie
Stub-Generierung stehen entsprechende Assistenten zur Verfügung. Es gibt leistungsfähige Refactoringmöglichkeiten, die auch auf die (XML) Descriptor-Dateien angewendet werden können.
Struts
Nach [JetB06g] wird ein Struts-Assistent zur Verfügung gestellt, der eine native Integration des Frameworks bereitstellt. Die Struts-Unterstützung bietet eine spezielle Projektansicht, um durch die
Struktur navigieren zu können. Die Quelltexteditoren bieten die typischen Funktionen wie Code
Completion und Refactoring Möglichkeiten. Für
Konfigurationsdateien stellt die IDE einige grafische Editoren zur Verfügung.
Applikationsserver Integration
IntelliJ IDEA erlaubt die Integration vieler gebräuchlicher Applikationsserver. Die Unterstützung beinhaltet nach [JetB06e] volle Debuggingmöglichkeiten, Verteilung und Entfernung von
Web-, J2EE- und EJB-Modulen sowie Start- und
Stoppmöglichkeit
der
Serverinstanz.
Nach
[JetB06e] werden folgende Server nativ unterstützt:
Apache TomCat 4.x und 5.x, Bea Systems WebLogic 7.x, 8x und 9.x sowie IBM WebShpere 5.1, 6.0
und 6.1. Für JBoss, Geronimo und Glassfish stehen
entsprechende Erweiterungen bereit.
JavaScript, (X)HTML, CSS
Auch bei der Arbeit mit diesen einfachen Webentwicklungstechniken bietet IntelliJ IDEA Hilfestellungen. Bei der Arbeit mit HTML-Dateien zeigt die
Code Completion beispielsweise die Browerkompatibilität einzelner HTML/CSS-Elemente an. Für
JavaScript-Funktionen gibt es Refactoringunterstützung.
Tabelle 3.12: IntelliJ IDEA - Webentwicklung
Evaluierung
116
Für die Entwicklung von Anwendungen mobiler Endgeräte steht standardmäßig nur
die Integration eines auswählbaren Wireless Toolkits, wie beispielsweise Sun’s
J2ME WTK, zur Verfügung. Beim Ausführen des erstellten Programms wird, wie
üblich, der entsprechende Emulator gestartet. Mit IntelliME [IME06] steht jedoch
eine kostenlose und ausgereifte Erweiterung für die Entwicklung von Midlets zur
Verfügung. IntelliME stellt einen leistungsfähigen Flow-Designer bereit, siehe Abbildung 3.56.
Abbildung 3.56: IntelliJ IDEA – Erweiterung IntelliME
Abbildung 3.56 zeigt die Arbeit mit der IntelliME Erweiterung. Aus der J2METoolbar können die entsprechenden Komponenten per Drag-and-Drop in den FlowDesigner gezogen werden. Die einzelnen Formulare können noch um Komponenten,
wie Eingabefelder und Beschriftungen, erweitert werden. Zwischen den Formularen
kann der Navigationsfluss mit Kanten festgelegt werden. Die Knoten im Diagramm
können entweder frei platziert werden oder mit einigen vorhanden LayoutAlgorithmen automatisch angeordnet werden. Aus dem Diagramm kann jederzeit
eine entsprechende Midlet-Struktur generiert werden, siehe IntelliME-Menü in Abbildung 3.56.
Evaluierung
117
Softwarequalitätssicherung
JetBrains’ IDE verfügt über einen integrierten Debugger, der eine Untersuchung von
Anwendungen, Applets und Webanwendungen ermöglicht. Ein Debugging von entfernten Anwendungen ist durch die Verwendung von Sun’s JPDA Technologie
[Sun06k], auf welcher der integrierte Debugger nach [JetB06j] basiert, möglich. Jede
definierte Laufzeitkonfiguration kann im Debug-Modus gestartet werden.
Abbildung 3.57: IntelliJ IDEA - Debugger
Abbildung 3.57 zeigt die Arbeit mit dem Debugger. In der Editoransicht können
Haltepunkte (Breakpoints) gesetzt werden. IntelliJ IDEA unterscheidet vier verschiedene Arten von Breakpoints: Line-, Exception-, Field- und Methodbreakpoints.
In Abbildung 3.57 ist, in Zeile 10, ein Methodenbreakpoint und, in Zeile 14, ein Linenbreakpoint gesetzt. Das Debugfenster, in Abbildung 3.57 unten eingeblendet,
bietet eine Konsole zur Anzeige der Programmausgaben, eine Threadansicht, eine
Frameansicht, um den aktuellen Stack untersuchen zu können, sowie eine Watchansicht, die eine Untersuchung von definierbaren Ausdrücken ermöglicht. Da die Anwendung in der Abbildung durch einen Methodenbreakpoint angehalten wurde, zeigt
die Frameansicht beispielsweise gerade die Werte der Übergabeparameter in der
Frameansicht. Am linken Rand des Debugfensters sind Schaltflächen für das
schrittweise Ausführen der Applikation, sowie zur Steuerung des Debuggers sichtbar.
Evaluierung
118
IntelliJ IDEA enthält in der Standarddistribution keinen Profiler. Der leistungsfähige
und kommerzielle JProfiler [JPro06] kann jedoch in die Entwicklungsumgebung
integriert werden.
Für Komponententests ist das JUnit Testframework integriert. Es werden sowohl
Version 3.8 als auch 4.0 unterstützt. Nach dem Implementieren der Testfälle können
diese einfach über eine JUnit Laufzeitkonfiguration ausgeführt werden. Dabei wird
eine, der originalen JUnit-Oberfläche ähnelnde, Ansicht mit einigen Statistiken eingeblendet, siehe Abbildung 3.58.
Abbildung 3.58: IntelliJ IDEA - Durchführung von Unit Tests
Durch die standardmäßige Integration des EMMA Frameworks [EM06] kann optional eine Testabdeckungsanalyse aktiviert werden. Diese zeigt in der Editoreditoransicht genau an, welche Strukturen durch die implementierten Testfälle durchlaufen
wurden. In der Projektansicht, in Abbildung 3.58 links oben eingeblendet, wird für
jede Klasse bzw. jedes Paket angezeigt, welche Testabdeckung erreicht wurde.
Im Quality Audit-Bereich bietet die IDE den sogenannten Inspector, der den Quelltext entsprechend einstellbarer Regeln analysiert. Abbildung 3.59 zeigt den Einstellungsdialog, in dem die anzuwendenden Regeln ausgewählt werden können. Standardmäßig verfügt die IDE bereits über einen großen Regelumfang, beispielsweise
im Bereich Namenskonventionen oder potentielle Fehlerquellen.
Evaluierung
119
Abbildung 3.59: IntelliJ IDEA - Definition von Code Audit-Regeln
Für jede Regel kann der Grad der Information (Information, Warnung, Fehler) festgelegt werden. Interessant ist, dass verschiedene Profile angelegt werden können. So
kann bei unterschiedlichen Anforderungen rasch der Untersuchungsschwerpunkt
gewechselt werden. Die Entwicklungsumgebung bietet auch die Möglichkeit eigene
Regeln zu definieren. Für alternative Quality Audit-Analysewerkzeuge, wie
CheckStyle oder PMD, stehen Plugins für die Integration in IntelliJ IDEA zur Verfügung.
Einige einfache Methoden- und Klassenmetriken sind als Regelsammlung im Inspector vorhanden. Erweiterte Qualitätsmetriken können mit der kostenlosen Erweiterung
MetricsReloaded [MR06] abgedeckt werden. Das Plugin ermöglicht beispielsweise
Metrikanalysen in den unterschiedlichsten Bereichen. Abbildung 3.60 zeigt beispielsweise einige Komponententest-Metriken.
Abbildung 3.60: IntelliJ IDEA - Plugin MetricsReloaded
Evaluierung
120
Gewählte Metrik-Regeln können als Profil abgelegt werden, wie etwa das, in Abbildung 3.60 verwendete, Profil „JUnit testing metrics“. Die Erweiterung kann darüber
hinaus die ermittelten Werte mittels diversen Diagrammtypen grafisch aufbereiten.
Erweiterbarkeit der Entwicklungsumgebung
JetBrains bietet kein explizites Application Lifecycle Management Programm. Einige Punkte eines solchen Programms können jedoch mit JetBrains Produkten abgedeckt werden. Für die Entwicklungs- und Testphase ist IntelliJ IDEA direkt geeignet.
Auch Konfigurations- und Änderungsmanagement kann durch die Integration diverser VCS-Systeme (siehe dazu Abschnitt „Sonstiges“ in diesem Kapitel) direkt von
der IDE übernommen werden. Vor allem für die Modellierungsphase wäre jedoch
noch eine direkte Unterstützung durch IntelliJ IDEA wünschenswert.
JetBrains stellt für Zusatzkomponenten von Drittanbietern eine eigene Plattform, das
Plugin Repository [JetB06h], zur Verfügung. Auf dieser können die jeweiligen Anbieter ihre Erweiterungen verwalten. Um IntelliJ IDEA mit diversen Erweiterungen
auszustatten, steht ein Dialog zur Pluginverwaltung zur Verfügung. Siehe Abbildung
3.61.
Abbildung 3.61: IntelliJ IDEA - Pluginverwaltung
Falls eine Internetverbindung hergestellt werden kann, wird nach dem Öffnen des
Dialogs zunächst eine aktuelle Liste mit Erweiterungen von der erwähnten Plattform
bezogen. Anschließend können Plugins gewählt werden, welche abschließend automatisch geladen und installiert werden. Ein Vorteil dieses Systems ist, dass nur Erweiterungen angeboten werden, die zur installierten Version der IDE kompatibel
sind. Derzeit können über das Plugin Repository circa 300 Erweiterungen bezogen
werden. Plugins können bei Bedarf auch manuell installiert werden.
Evaluierung
121
Hilfe und Support
Neben der umfangreichen und gut strukturierten Onlinehilfe bietet JetBrains unter
[JetB06k] weiterführende Artikel, die im PDF Format kostenlos bezogen werden
können. Weiters werden für komplexere Aufgaben, sowie innovativen Neuerungen
unter [JetB06l] Videopräsentationen bereitgestellt.
Eine innovative Form der Hilfe gibt die IDE während zeitaufwendigen Aktionen,
wie beispielsweise dem Öffnen umfangreicher Projekte oder Kompiliervorgänge.
Unter der entsprechenden Fortschrittsanzeige werden sogenannte Produktivitätstipps
angezeigt, siehe Abbildung 3.62. So kann, neben der IDE, auch der Anwender die
notwendige Zeit sinnvoll nutzen. Falls man mehr Zeit für das Lesen benötigt oder
zusätzliche Tipps lesen möchte, kann der Entwickler das Dialogfenster geöffnet halten.
Abbildung 3.62: IntelliJ IDEA - Hilfe während zeitaufwendigen Prozessen
Laut [JetB06c] wird die IntelliJ IDEA von über 60 000 Entwicklern verwendet. Für
die Community bietet JetBrains unter [intellij.org] eine Wiki Plattform, sowie ein
Forum [JetB06m] für Diskussionen. Weiters werden von JetBrains sogenannte Plugin Contests veranstaltet, welche einige Mitglieder zum Entwickeln von Erweiterungen für die IDE motiviert. Beispielsweise, die in dieser Evaluierung beschriebenen
Plugins, IntelliME und DBHelper gingen aus einem solchen Wettbewerb hervor.
Die Kundenbetreuung erfolgt großteils per E-Mail. Eine IntelliJ IDEA Lizenz beinhaltet laut [JetB06n] unlimitierten technischen Support per E-Mail. Weiters ist das
JetBrains-Team auch im Community-Forum aktiv. Es beantwortet dort häufig Anfragen und beteiligt sich auch aktiv an Diskussionen. Das IntelliJ Technology Net-
Evaluierung
122
work ITN [JetB06o] bietet kostenlosen Zugriff auf eine umfangreiche Wissensbasis.
Beta-Versionen von zukünftigen Produktversionen können ebenfalls hier bezogen
und getestet werden. Auf Fehlermeldungen und Funktionalitätswünsche kann im
Tracker des ITN aufmerksam gemacht werden.
Sonstiges
IntelliJ IDEA bietet einige interessante Funktionalitäten im Bereich der Teamzusammenarbeit. So gibt es seit der aktuellen Version eine Integration von TeamCity
[JetB06p]. Bei TeamCity handelt es sich um ein weiters JetBrains-Produkt das nach
[JetB06p] Funktionalitäten wie Continious Integreation, Build Management, serverseitige Code Coverage und Code Analyse bietet. TeamCity kann über eine Weboberfläche bedient werden und bietet eine Integration von Build-Systemen, Komponententest-Frameworks und Versionskontrollsystemen.
Im Bereich der VCS-Unterstützung werden von der IDE die Systeme CVS, Perforce,
StarTeam, Subversion sowie Visual SourceSafe standardmäßig unterstützt.
Mit dem sogenannten IDE talk ist ein, mit dem Jabber-Protokoll arbeitender, Instant
Messenger integriert. Dieser bieten neben typischen Kommunikationsfähigkeiten
beispielsweise auch die Möglichkeit Referenzen zu aktuell diskutierten Quelltextabschnitten oder Stacktraces zu übermitteln.
Abbildung 3.63: IntelliJ IDEA - Integrierter Instant Messenger (Bildschirmfoto: [JetB06i])
Für Entwickler, die nebenbei auch für die Software Dokumentation zuständig sind,
ist die integrierte DocBook-Unterstützung ein komfortables Feature. Bei DocBook
[DB06] handelt es sich um ein, vor allem bei technischen Dokumentationen, sehr
verbreitetes Format. Dieses kann durch XSLT-Transformationen in verschiedene
Formate wie PDF, RTF, HTML, CHM und JavaHelp [Sun06l] konvertiert werden.
Kapitel 4
Gegenüberstellung der Produkte
In diesem Kapitel werden die evaluierten Produkte gegenübergestellt und miteinander verglichen. Zunächst erfolgt eine allgemeine Gegenüberstellung mit augenscheinlichen Stärken und Schwächen der Umgebungen. Anschließend wird detailliert mit Hilfe des erstellten Kriterienkatalogs verglichen und bewertet. Abschließend
gibt es eine Tabelle, die den Vergleich aller Entwicklungsumgebungen unter Berücksichtigung aller Kritieren übersichtlich auf einer Seite zusammenfasst.
4.1
Allgemeine Gegenüberstellung
In diesem Abschnitt werden einige Stärken und Schwächen für die jeweilige Entwicklungsumgebung beschrieben. Die resultierende Tabelle 4.1 ermöglicht, aufgrund der Verschiedenheit der einzelnen Stärken und Schwächen, keinen direkten
Vergleich, bietet jedoch einen kurzen Überblick zu den untersuchten Produkten.
Ein detaillierter Vergleich sowie eine Bewertung auf Basis der einzelnen Kriterien
des Katalogs wird in den Abschnitten 4.2 (Gegenüberstellung nach Kriterienkatalog)
sowie 4.3 (Übersichtstabelle) durchgeführt.
Gegenüberstellung der Produkte
Eclipse 3.2
NetBeans 5.5
JBuilder 2006
IntelliJ IDEA 6
Sehr große Commu- Gute UML2nity
Unterstützung
Innovative
Teamzusammenarbeitstechniken
Sehr leistungsfähige Refactoringmöglichkeiten
Viele Werkzeuge zur Performanceoptimierung
Durchdachte
PluginVerwaltung
Stärken
Größtes Erweiterungsangebot
Kostenlos erhältlich
Perspektivenkonzept GUI-Designer
Matisse
Natives GUIVerhalten
WYSIWYG JSPDesigner
Viele prominente
Firmen Mitglied der Leistungsfähige
Foundation
J2MEKomponente
Kostenlos erhältlich
Gute Verbindung
zum Java Team
(Hersteller: Sun)
Schwacher GUIDesigner
Schwächen
124
Grafische Modellierungstechniken
noch in Anfangsstadium
Keine Funktionen
im Bereich Quality-Audits/Metrics
Keine XMIExportmöglichkeit
der erstellten Modelle
Derzeit nur in
Englisch erhältlich
Innovative
Hilfetechniken
Für OpenSource-Entwickler
kostenlos
Minimalistische UMLUnterstützung
durch fehlendes TogetherModul
Hoher Anschaffungspreis
Undurchsichtige Supportangebote
Tabelle 4.1: Allgemeine Gegenüberstellung
Standardmäßig
keine UMLModellierung
Derzeit nur in
Englisch erhältlich
Gegenüberstellung der Produkte
4.2
125
Gegenüberstellung nach Kriterienkatalog
In diesem Abschnitt werden die Entwicklungsumgebungen gemäß der einzelnen
Kriterien und Subkriterien des Katalogs verglichen und bewertet.
Editor - Subkriterium
Eclipse 3.2
NetBeans 5.5
JBuilder 2006
IntelliJ IDEA 6
4.2.1 Editor
Codeeditor
+
+
+
+
User Interface Designer
o
+
o
+
Refactoring
+
+
+
+
Sprachunterstützung
+
-
+
-
Entwurfsmuster
-
+
-
-
Aufbau der Arbeitsumgebung
+
+
+
+
Tabelle 4.2: Bewertung: Editor7
Wie in Tabelle 4.2 ersichtlich, verfügen alle evaluierten Entwicklungsumgebungen
über einen leistungsfähigen Codeeditor mit umfangreichen Refactoringmöglichkeiten. Auch der Aufbau der Arbeitsumgebung ist bei den IDEs ähnlich gestaltet, kann
an den persönlichen Geschmack angepasst werden und ist standardmäßig übersichtlich.
NetBeans bietet mit dem GUI-Designer „Matisse“ in Kombination mit dem
GroupLayout die komfortabelste Möglichkeit, Desktop-Oberflächen zu gestalten.
Auch IntelliJ IDEA besitzt einen intuitven und leistungsfähigen Designer. Der Visual Editor von Eclipse sowie der JBuilder Designer sind umständlich zu bedienen und
bieten bei der Gestaltung keinen großen Vorteil gegenüber der manuellen Oberflächengestaltung. Für Eclipse gibt es mit der WindowBuilder-Erweiterung eine leis7 Für alle Tabellen mit +/-/o-Notation in diesem Kapitel gilt: +…gut unterstützt, -…nicht unterstützt,
o … schwache Unterstützung oder kommerzielle Erweiterung erforderlich
Gegenüberstellung der Produkte
126
tungsfähige, kommerzielle Alternative.
Derzeit stehen nur für Eclipse und JBuilder Übersetzungen der Oberflächen zur Verfügung. Bei NetBeans und IntelliJ IDEA sind derzeit nur englische Versionen verfügbar. Mit Übersetzungen ist jedoch aufgrund übersetzter Vorgängerversionen noch
zu rechnen.
Entwurfsmuster werden derzeit nur von der NetBeans IDE angeboten.
Modellierung - Subkriterium
Eclipse 3.2
NetBeans 5.5
JBuilder 2006
IntelliJ IDEA 6
4.2.2 Modellierung
Unified Modelling Language
o
+
o
o
Model Driven Architecture
o
-
-
-
Forward Engineering
o
+
-
-
Reverse Engineering
o
+
o
o
Roundtrip Engineering
o
o
-
-
Tabelle 4.3: Bewertung: Modellierung
Im Bereich der Modellierung gibt es für jede der evaluierten Entwicklungsumgebungen noch Verbesserungspotential
Eclipse stellt zwar mit EMF und GEF notwendige Komponenten für Modelleditoren
bereit, jedoch muss für grafische UML-Modellierungstechniken auf kommerzielle
Erweiterungen zurückgegriffen werden. Mit openArchitectureWare steht eine offene
Lösung für modellgetriebene Entwicklung zur Verfügung. Diese muss jedoch noch
um leistungsfähige grafische Editoren erweitert werden.
NetBeans bietet umfangreiche UML2-Unterstützung. Forward- sowie Reverse Engineering funktionieren intuitiv. Rountrip Engineering funktioniert prinzipiell, muss
jedoch manuell die Forward- bzw. Reverse Engineering Aktion durchgeführt werden. Abgesehen von Codevisualisierungen bietet NetBeans keine MDAFunktionalitäten.
JBuilder bietet minimale Reverse Engineering Möglichkeiten für Klassen mittels
Gegenüberstellung der Produkte
127
einer Ansicht, die eine Kombination aus Klassen- und Paketdiagramm ist. Erweiterte
UML und MDA Fähigkeiten werden bei Borland normalerweise durch die Erweiterung „Together“ geboten. Diese wird jedoch für JBuilder 2006 nicht angeboten. Der
angekündigte JBuilder 2007 wird standardmäßig ein Together-Modul enthalten.
IntelliJ IDEA enthält in der Standardausführung keine UML bzw. MDA Modellierungsmöglichkeiten. Durch die Integration der kostenlosen Erweiterung
„SimpleUML“ wird zumindest einfaches Reverse Engineering mittels Klassen- und
Sequenzdiagrammen geboten. Für erweiterte Modellierungstechniken ist ein kommerzielles Plugin eines Drittanbieters erhältlich.
Programmierung - Subkriterium
Eclipse 3.2
NetBeans 5.5
JBuilder 2006
IntelliJ IDEA 6
4.2.3 Programmierung
Compiler und Programmiersprachen
+
+
o
o
Mitgelieferte Klassenbibliotheken
+
+
+
+
Middleware und Komponentenstandards
+
+
+
+
Klassenbibliotheken von Drittanbietern
+
+
+
+
Internationalisierung von Anwendungen
+
+
+
+
Datenbankprojekte
+
+
+
+
Webentwicklung
o
+
o
+
Entwicklung für mobile Endgeräte
o
+
o
+
Tabelle 4.4: Bewertung: Programmierung
Bei diesem Kriterium schneiden die Entwicklungsumgebungen durchwegs gut ab.
Alle Hersteller liefern die wichtigsten Klassenbibliotheken mit. Für Java stehen zusätzlich viele Klassenbibliotheken zur Verfügung. Diese müssen die IDEs nur in
einer komfortablen Weise integrieren und verwalten, was alle elegant gelöst haben.
Auch bei der Internationalisierung von Anwendungen sowie bei der Arbeit mit Da-
Gegenüberstellung der Produkte
128
tenbankprojekten unterstützen die IDEs den Entwickler mit vielen Werkzeugen und
Assistenten.
Neben Java bieten Eclipse und NetBeans Unterstützung für andere Programmiersprachen. Beide unterstützen die Entwicklung von C bzw. C++ Programmen. Für
Eclipse stehen zusätzlich noch Plugins für eine Reihe anderer Sprachen wie PHP,
Perl und Phyton zur Verfügung.
Bei der Webentwicklung bieten NetBeans und IntelliJ IDEA innovative Ansätze wie
ein WYSIWYG-Editor für JavaServer Pages (NetBeans) sowie eine Integration des
AJAX basierten Google Web Toolkits (IntelliJ IDEA). Eclipse verfügt mit dem
WTK über ein flexibles Framework für die Webentwicklung. Dieses sollte jedoch,
wie auch die JBuilder Webfähigkeiten, um grafische Designtechniken erweitert werden. Die Zusammenarbeit mit gängigen Applikationsservern funktioniert bei allen
getesteten IDEs gut.
Im Bereich der Entwicklung für mobile Endgeräte bieten die Entwicklungsumgebungen das Wireless Toolkit von Sun inklusive einer Integration der beiliegenden
Emulatoren. NetBeans und IntelliJ IDEA bieten zusätzlich die Möglichkeit, den
Workflow der Applikation grafisch zu modellieren und daraus entsprechende Midlets generieren. Diese Technik hat sich in den Tests als sehr hilfreich erwiesen.
Softwarequalitätssicherung - Subkriterium
Eclipse 3.2
NetBeans 5.5
JBuilder 2006
IntelliJ IDEA 6
4.2.4 Softwarequalitätssicherung
Debugger
+
+
+
+
Remote Debugger
+
+
+
+
Profiler
+
+
+
o
Unit Tests
o
o
o
+
Quality Audits
+
+
+
+
Quality Metrics
+
-
-
+
Tabelle 4.5: Bewertung: Softwarequalitätssicherung
Gegenüberstellung der Produkte
129
Alle untersuchten IDEs bieten einen leistungsfähigen Debugger mit remote Debugging-Funktionalität. Einen Profiler haben bis auf IntelliJ IDEA, wo auf eine kommerzielle Erweiterung eines Drittanbieters zurückgegriffen werden muss, integriert.
Besonders viele Werkzeuge im Bereich der Performanceanalyse bietet hier der JBuilder mit seiner sogenannten Optimizeit-Suite.
Für die Durchführung von Komponententests integrieren alle Umgebungen das JUnit-Testframework. Nur IntelliJ IDEA bietet standardmäßig noch eine Möglichkeit
zur Analyse der Testabdeckung.
Quality Audits können bei allen getesteten Entwicklungsumgebungen, teils mit kostenlosen Plugins von Drittanbietern, durchgeführt werden.
Im Bereich der Qualitätsmetriken stehen leistungsfähige und kostenlose Erweiterungen derzeit nur für die Entwicklungsumgebungen Eclipse und IntelliJ IDEA zur Verfügung. Diese Funktionalität wird bei Borland normalerweise durch das TogtherModul abgedeckt, welches für JBuilder 2006 nicht angeboten wird. In der Nachfolgeversion 2007 wird es jedoch integriert sein. Bei NetBeans wird derzeit an einer
Metriken-Erweiterung für zukünftige Versionen gearbeitet.
Erweiterbarkeit der IDE - Subkriterium
Eclipse 3.2
NetBeans 5.5
JBuilder 2006
IntelliJ IDEA 6
4.2.5 Erweiterbarkeit der Entwicklungsumgebung
Einbindung in ein ALM
o
o
+
o
Zusatzkomponenten von Drittanbietern
+
+
+
+
Tabelle 4.6: Bewertung: Erweiterbarkeit der Entwicklungsumgebung
Einen kompletten Application Lifecycle kann derzeit nur JBuilder mit entsprechenden Zusatzprodukten von Borland abdecken. Die Eclipse Foundation hat für diesen
Zweck das ALF-Projekt ins Leben gerufen. Dieses befindet sich derzeit jedoch noch
in einem frühen Entwicklungsstadium. NetBeans und IntelliJ IDEA bieten zwar kein
spezielles ALM Programm, einige Punkte des Application Lifecycle können trotzdem abgedeckt werden.
Positiv fällt auf, dass für jedes Produkt eine Fülle von Zusatzkomponenten von Drittanbietern zur Verfügung stehen.
Gegenüberstellung der Produkte
130
Hilfe und Support - Subkriterium
Eclipse 3.2
NetBeans 5.5
JBuilder 2006
IntelliJ IDEA 6
4.2.6 Hilfe und Support
Dokumentation des Produkts
+
+
+
+
Größe der Community
+
+
+
+
Kundenbetreuung durch den Hersteller
+
+
o
+
Tabelle 4.7: Bewertung: Hilfe und Support
Die untersuchten Entwicklungsumgebungen verfügen alle über eine ausführliche
Dokumentation. Oft stehen auch Videopräsentationen für komplexe Aufgaben und
innovativen Neuerungen bereit.
Alle Entwicklungsumgebungen verfügen über große Anwendergemeinschaften, denen vom IDE-Hersteller Online-Plattformen zur Verfügung gestellt werden.
Die Firma JetBrains bietet für ihre IDE IntelliJ IDEA eine umfangreiche und faire
Kundenbetreuung mittels kostenlosen E-Mail Support, Beteiligung bei Forumsdiskussionen und Zugang zu einer Wissensbasis. Borland bietet für JBuilder hingegen
ein undurchsichtiges Supportprogramm, dessen Preis nur auf Anfrage bekanntgegeben wird. Die Hersteller der Open-Source Umgebungen leisten umfangreiche Kundenbetreuung über die Community-Plattformen. Zusätzlich bieten sie kommerziellen
Support entweder direkt (NetBeans) oder durch externe Firmen (Eclipse) an.
Kriterium
Eclipse 3.2
NetBeans 5.5
JBuilder 2006
IntelliJ IDEA 6
4.2.7 Sonstiges
Sonstiges
+
+
+
+
Tabelle 4.8: Bewertung: Sonstiges
Gegenüberstellung der Produkte
131
Jede evaluierte Entwicklungsumgebung bietet neben den bisher untersuchten Kriterien noch einen großen Umfang an Zusatzfunktionalitäten. Im Bereich der Versionsund Konfigurationsverwaltung beispielsweise unterstützen die IDEs standardmäßig
zumindest eine VCS-Lösung.
Für Eclipse existiert ein kostenloses Service, das die Möglichkeit bietet, seine persönliche Eclipse Distribution mit auswählbaren Erweiterungen online zusammenzustellen, die dann als Archiv heruntergeladen werden kann.
NetBeans bietet eine sehr gute Unterstützung bei der Arbeit mit XML-Dateien. So
können Refactoringprozesse, wie z. B. das Umbenennen von Tags, auch für XML
basierte Dokumente angewendet werden.
JBuilder und IntelliJ IDEA verfügen über innovative Lösungen für die Teamzusammenarbeit wie etwa integrierte Instant Messenger und die Möglichkeit einer gemeinsamen Fehlersuche.
Gegenüberstellung der Produkte
Übersichtstabelle
Kriterium
NetBeans
JBuilder
IntelliJ I.
Tabelle 4.9 vergleicht die IDEs unter Berücksichtigung aller Kriterien.
Eclipse
4.3
132
Editor
+
+
o
o
+
o
+
+
+
+
+
+
+
+
+
o
+
+
+
+
+
+
+
o
o
-
-
o
o
o
o
o
+
+
+
o
o
o
-
o
o
-
+
+
+
+
+
+
+
+
+
+
o
o
+
+
+
+
+
+
+
+
o
+
+
+
+
+
o
o
o
+
+
+
+
+
+
+
+
+
+
+
+
+
+
o
+
+
+
+
+
o
+
-
+
+
+
o
+
-
+
+
o
+
+
+
+
+
+
+
o
+
o
+
+
+
o
+
+
+
+
+
+
+
+
+
+
+
+
+
o
+
+
+
+
+
+
+
Codeeditor
User Interface Designer
Refactoring
Sprachunterstützung
Entwurfsmuster
Aufbau der Arbeitsumgebung
Modellierung
Unified Modeling Language
Model Driven Architecture
Forward Engineering
Reverse Engineering
Roundtrip Engineering
Programmierung
Compiler und Programmiersprachen
Mitgelieferte Klassenbibliotheken
Middleware und Komponentenstandards
Klassenbibliotheken von Drittanbietern
Internationalisierung von Anwendungen
Datenbankprojekte
Webentwicklung
Entwicklung für mobile Endgeräte
Softwarequalitätssicherung
Debugger
Remote Debugger
Profiler
Unit Tests
Quality Audits
Quality Metrics
Erweiterbarkeit der EntwicklungsumgeEinbindung in ein ALM
Zusatzkomponenten von Drittanbietern
Hilfe und Support
Dokumentation des Produkts
Größe der Community
Kundenbetreuung durch den Hersteller
Sonstiges
Tabelle 4.9: Bewertung: Gesamtübersicht
Kapitel 5
Zusammenfassung und Ausblick
Zusammenfassend lässt sich sagen, dass jede Entwicklungsumgebung seine ganz
speziellen Stärken, siehe dazu Kapitel 4 (Gegenüberstellung der Produkte), aufweist.
Die Entscheidung für eine IDE sollte deshalb nach dem Einsatzgebiet der zu erstellenden Software getroffen werden. Da in dieser Arbeit alle Produkte auf Basis desselben Kriterienkataloges untersucht und anschließend gegenübergestellt wurden,
kann einfach festgestellt werden, ob die gewünschten Funktionalitäten unterstützt
werden. Falls diese von mehreren Produkten geboten werden, sollte die Unterstützung vom Entwickler auf persönliche Vorlieben untersucht, und die IDE entsprechend gewählt werden.
Bemerkenswert ist, dass alle untersuchten Produkte zumindest für die Betriebssysteme Windows (32-Bit Versionen) und Linux verfügbar sind. Alle Umgebungen
wurden selbst in der Programmiersprache Java realisiert und erwiesen sich im Zuge
der Evaluierung als performant und stabil. Eclipse verwendet als einzige IDE mit
SWT ein alternatives WidgetSet gegenüber Swing, das von den restlichen Produkten
eingesetzt wird.
Bei der Bewertung in Kapitel 4 sowie vom Umfang der jeweiligen IDEFunktionalitäten konnte zwischen kommerziellen und freien (Open Source) Produkten praktisch nicht unterschieden werden. Es ist jedoch zu sagen, dass mit den Firmen IBM (Eclipse) und Sun Microsystems (NetBeans) große Unternehmen die Produkte unterstützen.
In den Bewertungskriterien Editor, Programmierung, Softwarequalitätssicherung,
Erweiterbarkeit der Entwicklungsumgebung, Hilfe und Support verfügen alle Pro-
Zusammenfassung und Ausblick
134
dukte über die notwendigen Fähigkeiten, um damit produktiv arbeiten zu können.
Einzig im Bereich Modellierung haben sämtliche Entwicklungsumgebungen noch
Verbesserungsbedarf. UML2-Modellierungstechniken werden lediglich von NetBeans adäquat unterstützt. Doch auch hier fehlen wichtige Features, wie beispielsweise die Möglichkeit, die erstellten Modelle im XMI-Format zu exportieren, um
nicht an ein Werkzeug gebunden zu sein. Ansätze für modellgetriebene Entwicklungstechniken sind derzeit nur in Eclipse zu finden.
Die IDEs werden sich in den nächsten Jahren aber sicher auch bei der Modellierung
verbessern. Wenn man typische Entwicklungsumgebungen, wie sie vor circa fünfzehn Jahren üblich waren (siehe dazu Abbildung 5.1), mit denen, in dieser Arbeit
vorgestellten, vergleicht, erkennt man den Unterschied.
Abbildung 5.1: Entwicklungsumgebung Borland C++ 3.1 (1991)
Ähnlich könnte es mit den Modellierungsfähigkeiten heutiger IDEs im Vergleich zu
zukünftigen Werkzeugen aussehen.
Ein Trend ist auch bei Erweiterungen für Entwicklungsumgebungen zu erkennen.
Jedes Produkt bietet ein leistungsfähiges Plugin-Konzept, um eventuell spezielle
Funktionalitäten von Drittherstellern nachrüsten zu können. Diese Vorgehensweise
ist durchaus zu verstehen, da die Umgebungen inzwischen derart umfangreich und
komplex sind, dass es zukünftig für einen Hersteller fast unmöglich sein wird, für
Zusammenfassung und Ausblick
135
alle Funktionen Ressourcen bereitzustellen.
Die Firma Borland hat sich beispielsweise von ihrer Plattform, welche sie für JBuilder 2006 noch verwendete, getrennt. Die Nachfolgeversion 2007 setzt auf die Eclipse Plattform auf und besteht im Grunde nur aus einer Reihe von Plugins.
In Zukunft könnte es Standard sein, dass sich Entwickler ihre Entwicklungsumgebungen, je nach ihren persönlicher Bedürfnissen, selbst zusammenstellen.
Abkürzungsverzeichnis
AJAX
Asynchronous JavaScript and XML
ALM
Application Lifecycle Management
API
Application Programming Interface
ASP
Active Server Pages
AWT
Abstract Windowing Toolkit
BIRT
Business Intelligence and Reporting Tools
CDC
Connection Device Configuration
CLDC
Connection Limited Device Configuration
CDT
Eclipse C/C++ Development Tooling
CHM
Compiled HTML Help
CSS
Cascading Style Sheets
CSV
Comma Separated Values
CVS
Concurrent Versions System
DTD
Document Type Definition
DTP
Data Tools Platform
DSL
Domain Specific Language
EJB
Enterprise JavaBeans
EMF
Eclipse Modelling Framework
Abkürzungsverzeichnis
FAQ
Frequently Asked Questions
GDB
GNU Debugger
GEF
Graphical Editor Framework
GMF
Graphical Modelling Framework
GMT
Generative Modeling Technologies
GNU
GNU’s Not Unix
GoF
Gang of Four
GUI
Graphical User Interface
GWT
Google Web Toolkit
HTML
Hypertext Markup Language
IDE
Integrated Development Environment
IIOP
Internet Inter-ORB Protocol
ITN
IntelliJ Technology Network
J2EE
Java 2 Platform, Enterprise Edition
J2ME
Java 2 Platform, Mobile Edition
J2SE
Java 2 Platform, Standard Edition
JAD
Java Application Descriptor
JAR
Java Archive
JAXP
Java API for XML Processing
JDT
Eclipse Java Development Tools
JDBC
Java Database Connectivity
JMS
Java Message Service
JNDI
Java Naming and Directory Interface
137
Abkürzungsverzeichnis
JSF
JavaServer Faces
JSP
JavaServer Pages
JST
J2EE Standard Tools
JSTL
JavaServer Pages Standard Tag Library
JTA
Java Transaction API
kB
Kilobyte
MDA
Model Driven Architecture
MDSD
Model Driven Software Development
MIDP
Mobile Information Device Profile
MOM
Message Oriented Middleware
MVC
Model View Controller
oAW
openArchitectureWare
OCL
Object Constraint Language
ODA
Open Data Access
OMG
Object Management Group
ORB
Object Request Broker
OTI
Object Technologies International
OS
Operating System
PDA
Personal Digital Assistant
PDE
Plugin Development Environment
PDF
Portable Document Format
PHP
Hypertext Preprocessor
PSE
Pattern Support for Eclipse
138
Abkürzungsverzeichnis
RCP
Rich Client Platform
RM
Requirement Management
RMI
Remote Method Invocation
RTF
Rich Text Format
SDK
Software Development Kit
SOA
Service Oriented Architecture
SQL
Structured Query Language
SVG
Scaleable Vector Graphics
SWT
Standard Widget Toolkit
TPTP
Test and Performance Tools Platform
UDDI
Universal Description, Discovery and Integration
UI
User Interface
UML
Unified Modelling Language
URL
Uniform Resource Locator
VCS
Version Control System
VE
Visual Editor
VM
Virtual Machine
W3C
World Wide Web Consortium
WSDL
Web Service Definition Language
WST
Web Standard Tools
WTK
Wireless Toolkit
WTP
Web Tools Platform
WYSIWYG What You See Is What You Get
139
Abkürzungsverzeichnis
XHTML
Extensible Hypertext Markup Language
XMI
XML Metadata Interchange
XML
Extensible Markup Language
XSL
Extensible Stylesheet Language
XSLT
XSL Transformation
140
Literaturverzeichnis
Druckwerke:
[And04]
Andreas Andresen: Komponentenbasierte Softwareentwicklung, 2. Auflage, Carl Hanser Verlag, München, Wien, 2004
[AR04]
Stefan Matthias Aust, Michael Rusitska: Die zweite Sonnenfinsternis,
Javamagazin 11/2002
[AT06]
Daniel Adelhardt, Jens Trapp: Die NetBeans-Erweiterungspakete im Überblick, Javamagazin 11/2006
[BC06]
Tim Boudreau und Jan Chalupa im Interview, Javamagazin 9/2006
[Blo06]
Joshua Bloch: Effective Java Programming Language Guide, 12. Auflage, Addison-Wesley, 2006
[BWB+06] Kai Brüssau, Oliver Widder, Herbert Brücker, Martin Lippert, Matthias
Lübken, Birgit Schwartz-Reinken, Lars Wunderlich: Eclipse – Die Plattform, 2. Auflage, entwickler.press, 2006
[BZ05]
Java IDE survey, BZ Research, Software Development Times 2/2006
[Car05]
David Carlson: Eclipse Distilled, 1. Auflage, Addison-Wesley, 2005
[Cub05]
Ulrich Cuber: Einführung in Eclipse 3, 1. Auflage, Galileo Computing,
2005
[DA06]
Daniel Adelhardt: Mit Milch und Zucker – Enterprise-Java-Entwicklung
mit NetBeans, Javamagazin 9/2006
[EM05]
Jochen Krause: Gut Ding will Weile haben – Ziele, Vision und Status des
Eclipse Web Tools Project, Eclipse Magazin 2/2005
[FSB06]
Duane K. Fields, Stephen Saunders, Eugene Belyaev: IntelliJ IDEA in
Action, Manning Publications, 2006
[Fow05]
Martin Fowler: Refactoring oder wie Sie das Design vorhandener Software verbessern, 1. Auflage, Addison-Wesley München, 2005
[GoF96]
E. Gamma, R. Helm, R. Johnson, J. Vlissides: Elemente wiederverwendbarer objektorientierter Software, Addison Wesley Verlag, 1996
[GoF99]
J. Vlissides: Entwurfsmuster anwenden. Die Fortsetzung des Klassikers
der Gang of Four, 1. Auflage, Addison Wesley Verlag, 1999
[Kapp03a] G. Kappel, M. Hitz: UML@Work, Von der Analyse zur Realisierung, 2.
Auflage, dpunkt.verlag, 2003
Literaturverzeichnis
142
[Kapp03b] G.Kappel: Web Engineering. Systematische Entwicklung von Webanwendungen, dpunkt.verlag, 2003
[KCC+06] Patrick Keegan, Ludovic Champenois, Gregory Crawley, Charlie Hunt,
Christopher Webster: NetBeans IDE Field Guide – Developing Desktop,
Web, Enterprise, and Mobile Applications, Prentice Hall Verlag, 2006
[Kent03]
Kent Beck: Extreme Programming, Neuauflage, Addison-Wesley München, 2003
[NM06a] Fernando Lozano: Open-Source UML Modeling, NetBeans Magazine
2/2006
[RGN03] Mike Rozlog, Geoffrey Goetz, Sung Nguyen: Mastering JBuilder, Wiley
Publishing, 2003
[Sko07]
Florian Skopik: Moderne Softwareentwicklungsumgebungen – Evaluierung C++/C#-basierter Ansätze, Magisterarbeit, Business Informatics
Group, TU Wien, 2007
[StVö05] Thomas Stahl, Markus Völter: Modellgetriebene Softwareentwicklung,
1. Auflage, dpunkt.verlag, Heidelberg, 2005
[Trap06]
Jens Trapp: Frisch aufgebrührt – Netbeans, Überblick über die Entwicklungsumgebung und Plattform, Javamagazin 09/2006
[Wes02]
Ivo Wessel: GUI-Design, 2. Auflage, Carl Hanser Verlag, 2002
[ZBGK01] W.Zuser, S.Biffl, T.Grechenig, M.Köhle: Software Engineering mit
UML und dem Unified Process, 1. Auflage, Pearson Studium, München,
2001
Weblinks:
[AM06]
Applied Models
http://www.appliedmodels.com (27.11.2006)
[Ant06]
Apache Ant
http://ant.apache.org/ (14.11.2006)
[Apa06a] Apache Commons Codec
http://jakarta.apache.org/commons/codec/ (29.10.2006)
[Apa06b] Apache Commons Logging
http://jakarta.apache.org/commons/logging/ (29.10.2006)
[Apa06c] Apache Struts Framework
http://struts.apache.org (2.12.2006)
[Apa06d] Apache Tomcat
http://tomcat.apache.org/ (9.12.2006)
[Apa06e] Apache Cactus
http://jakarta.apache.org/cactus (20.12.2006)
Literaturverzeichnis
[Apa06f]
143
Apache Axis
http://ws.apache.org/axis (20.12.2006)
[Apa06g] Apache Cocoon
http://cocoon.apache.org (26.1.2007)
[Apa06h] Apache Xalan (Java Version)
http://xml.apache.org/xalan-j/ (26.1.2007)
[Apa06i]
Apache Batik SVG Toolkit
http://xmlgraphics.apache.org/batik/ (29.10.2006)
[Apa06j]
Apache Derby
http://db.apache.org/derby/ (29.10.2006)
[Bor06a]
Application-Lifecylce-Lösungen von Borland
http://www.borland.com/de/products/alm/index.html (28.11.2006)
[Bor06b]
JBuilder OpenTools
http://info.borland.com/jbuilder/resources/jbopentools.html (30.12.2006)
[Bor06c]
Borland announces CodeGear
http://bdn.borland.com/article/33819 (10.10.2006)
[Bor06d]
Borland announces plan to divest IDE product lines
http://www.borland.com/us/company/news/press_releases/2006/02_08_0
6_borland_acquires_segue_software.html (10.10.2006)
[Bor06e]
Borland C++ Builder
http://www.borland.com/de/products/cbuilder/index.html (03.01.2007)
[Bor06f]
Borland announces JBuilder Product Roadmap
http://www.borland.com/us/company/news/press_releases/2005/05_31_0
5_borland_announces_jbuilder_product_roadmap.html (03.01.2007)
[Bor06g]
Borland Together – Model Driven Architecture & Visual Modeling Application
http://www.borland.com/de/products/together/index.html (30.12.2006)
[Bor06h]
Borland VisiBroker ORB
http://www.borland.com/us/products/visibroker/index.html (28.12.2006)
[Bor06i]
Borland CaliberRM
http://www.borland.com/de/products/caliber/index.html (28.12.2006)
[Bor06j]
Borland CodeCentral
http://cc.codegear.com/Default.aspx (28.12.2006)
[Bor06k]
Borland Developer Network
http://bdn.borland.com (30.12.2006)
[Bor06l]
Borland Support Angebote
http://www.borland.com/de/services/support/offerings.html (30.12.2006)
[Bor06m] Borland StarTeam
http://www.borland.com/us/products/starteam/index.html (30.12.2006)
[Bor06n]
Präsentation: JBuilder 2006 Peer to Peer Collaboration
http://bdntv.borland.com/jbuilder/2006/jb2006_p2p.html (28.12.2006)
Literaturverzeichnis
[Cas06]
The Castor Project
http://www.castor.org (20.12.2006)
[CkS06]
CheckStyle Audit Software
http://checkstyle.sourceforge.net/ (14.11.2006)
144
[COR06] CORBA 3.0
http://www.omg.org/technology/documents/formal/corba_2.htm
(14.11.2006)
[Cov06]
Coverlipse
http://coverlipse.sourceforge.net/ (12.11.2006)
[Clov06]
Clover
http://www.cenqua.com/clover/ (12.11.2006)
[CVS06]
Concurrent Versions System (CVS)
http://www.nongnu.org/cvs/ (10.11.2006)
[DB06]
DocBook
http://www.docbook.org (11.1.2007)
[DBH06] IntelliJ IDEA Plugin - DBHelper
http://ca.geocities.com/davidhuo2003/dbhelper.html (3.1.2007)
[EA06]
Enterprise Architect – UML Design Tools
http://www.sparxsystems.com/ea.htm (14.11.2006)
[Ecl06a]
Eclipse Platform Technical Overview
http://www.eclipse.org/whitepapers/eclipse-overview.pdf (22.09.2006)
[Ecl06b]
Feature Request: Enable Eclipse to be used as a rich client platform
https://bugs.eclipse.org/bugs/show_bug.cgi?id=36967 (22.09.2006)
[Ecl06c]
Standard Widget Toolkit (SWT)
http://www.eclipse.org/swt/ (22.09.2006)
[Ecl06d]
Eclipse Callisto
http://www.eclipse.org/callisto/ (4.10.2006)
[Ecl06e]
C/C++ Development Tooling (CDT)
http://www.eclipse.org/cdt/ (4.10.2006)
[Ecl06f]
Web Tools Platform (WTP)
http://www.eclipse.org/webtools/ (4.10.2006)
[Ecl06g]
Visual Editor Project (VE)
http://www.eclipse.org/vep/ (4.10.2006)
[Ecl06h]
Data Tools Platform (DTP)
http://www.eclipse.org/datatools/ (4.10.2006)
[Ecl06i]
Graphical Editor Framework (GEF)
http://www.eclipse.org/gef/ (4.10.2006)
[Ecl06j]
Business Intelligence and Reporting Tools (BIRT)
http://www.eclipse.org/birt/phoenix/ (4.10.2006)
Literaturverzeichnis
[Ecl06k]
Eclipse Language Pack Download
http://download.eclipse.org/eclipse/downloads/drops/L3.2_Language_Packs-200607121700/index.php (9.10.2006)
[Ecl06l]
Eclipse Modeling Framework (EMF)
http://www.eclipse.org/emf/ (11.10.2006)
145
[Ecl06m] Eclipse Application Lifecycle Framework
http://www.eclipse.org/alf (16.11.2006)
[Ecl06n]
ALF Architecture Design Draft
http://www.eclipse.org/alf/includes/ALFArchitectureDraft-v00-07.pdf
(16.11.2006)
[Ecl06o]
Eclipse Community Page
http://www.eclipse.org/community (16.11.2006)
[Ecl06p]
Eclipse Modeling Framework (EMF)
http://www.eclipse.org/emf/ (16.10.2006)
[Ecl06q]
Graphical Modeling Framework (GMF)
http://www.eclipse.org/gmf/ (16.10.2006)
[Ecl06r]
Test and Performance Tools Platform
http://www.eclipse.org/tptp/ (16.10.2006)
[Ecl06s]
Eclipse profiling example
http://www.eclipse.org/tptp/home/documents/tutorials/profilingtool/profi
lingexample_32.html (12.11.2006)
[ECo06]
Eclipse CORBA Plugin
http://sourceforge.net/projects/eclipsecorba/ (14.11.2006)
[EJB06]
Enterprise JavaBeans Technology
http://java.sun.com/products/ejb/ (14.11.2006)
[EM06]
EMMA: a free Java code coverage tool
http://emma.sourceforge.net/ (6.1.2006)
[EMe06]
Eclipse Metrics Plugin
http://sourceforge.net/projects/metrics (14.11.2006)
[EME06] EclipseME
http://eclipseme.org/ (14.11.2006)
[EPC06]
Eclipse Plugin Central
http://www.eclipseplugincentral.com (16.11.2006)
[FB06]
FindBugs – Find Bugs in Java Programs
http://findbugs.sourceforge.net/ (14.11.2006)
[For06]
Fortune 500: Ranking of the top 500 American public corporations
http://www.fortune.com/fortune/fortune500 (3.1.2007)
[GDB06] GDB: The GNU Project Debugger
http://www.gnu.org/software/gdb/ (9.12.2006)
[Goo06]
Google Web Toolkit
http://code.google.com/webtoolkit/ (3.1.2007)
Literaturverzeichnis
[Gro06a]
146
Groovy - An agile dynamic language for the Java Platform
http://groovy.codehaus.org/ (3.1.2007)
[Gro06b] GroovyJ - Groovy Integration into JetBrains’ IntelliJ IDEA
http://groovy.codehaus.org/IntelliJ+IDEA+Plugin (3.1.2007)
[Hib06]
Hibernate Persistence Framework
http://www.hibernate.org/ (14.11.2006)
[HM06]
Henry Matisse - Biografie
http://www.whoswho.de/templ/te_bio.php?PID=871&RID=1
(9.12.2006)
[HttpU06] HttpUnit
http://httpunit.sourceforge.net (26.1.2007)
[IBM06a] Eclipse’s Rich Client Platform
https://www6.software.ibm.com/developerworks/education/osrcp1/index.html (22.09.2006)
[IBM06b] Java Compiler Jikes
http://www.alphaworks.ibm.com/formula/Jikes (20.12.2006)
[IBM06c] Rational ClearCase
http://www-306.ibm.com/software/awdtools/clearcase/ (30.12.2006)
[IME06]
IntelliJ IDEA Plugin – IntelliME J2ME
http://sourceforge.net/projects/intellime (3.1.2007)
[INNO06] Innoopract Eclipse Solutions
http://www.innoopract.com (1.11.2006)
[Ins06]
WindowBuilder (SWT and Swing Development for Eclipse), Instantiations
http://www.instantiations.com/windowbuilderpro/default.htm
(9.10.2006)
[iText06] iText Java-PDF Library
http://www.lowagie.com/iText/ (29.10.2006)
[J2EE06] Java 2 Enterprise Edition (J2EE)
http://java.sun.com/javaee/ (14.11.2006)
[J2ME06] Java 2 Platform, Micro Edition
http://java.sun.com/javame/index.jsp (14.11.2006)
[J2SE06] Java 2 Standard Edition
http://java.sun.com/javase/ (14.11.2006)
[JAB06]
Jabber - Open Instant Messaging
http://www.jabber.org (31.12.2006)
[JAPI06a] Java Logging Framework, Java 1.5 API
http://java.sun.com/j2se/1.5.0/docs/api/java/util/logging/packagesummary.html (29.10.2006)
[JRPC06] Java API for XML-Based RPC (JAX-RPC)
http://java.sun.com/webservices/jaxrpc/ (9.12.2006)
Literaturverzeichnis
[JaD06]
Javadoc Tool Home Page
http://java.sun.com/j2se/javadoc/ (14.11.2006)
[JCP06]
The Java Community Process
http://jcp.org (14.11.2006)
147
[JDBC06] Java Database Connectivity
http://java.sun.com/javase/technologies/database/index.jsp (14.11.2006)
[JetB06a] JetBrains Company History and Timeline
http://www.jetbrains.com/company/history.html (2.1.2007)
[JetB06b] Localizing (translating to national languages) IntelliJ IDEA
http://www.jetbrains.net/confluence/display/IDEADEV/Localization+Gu
ide (2.1.2007)
[JetB06c] JetBrains Corporate Overview
http://www.jetbrains.com/company/CorpOverview.pdf (3.1.2007)
[JetB06d] IntelliJ IDEA - EJB Features
http://www.jetbrains.com/idea/features/java_ejb.html (3.1.2007)
[JetB06e] IntelliJ IDEA - Application Servers Integration
http://www.jetbrains.com/idea/features/application_server.html
(4.1.2007)
[JetB06f] IntelliJ IDEA – JSP Editor
http://www.jetbrains.com/idea/features/jsp_editor.html (5.1.2007)
[JetB06g] IntelliJ IDEA - Struts
http://www.jetbrains.com/idea/features/jakarta_struts.html (5.1.2007)
[JetB06h] IntelliJ IDEA – Plugin Repository
http://plugins.intellij.net (11.1.2007)
[JetB06i] IntelliJ IDEA - Collaboration features
http://www.jetbrains.com/idea/features/collaboration.html (11.1.2007)
[JetB06j] IntelliJ IDEA – Running and Debugging
http://www.jetbrains.com/idea/features/compiler.html#Running_and_De
bugging (11.1.2007)
[JetB06k] IntelliJ IDEA - Developers Documentation
http://www.jetbrains.com/idea/documentation/documentation.html
(11.1.2007)
[JetB06l] IntelliJ IDEA - How to Get Started with IntelliJ IDEA (Videos)
http://www.jetbrains.com/idea/training/how_to_start.html (11.1.2007)
[JetB06m] IntelliJ IDEA – Support Forum
http://www.intellij.net/forums/ (11.1.2007)
[JetB06n] IntelliJ IDEA - Commercial License
http://www.jetbrains.com/idea/buy/buy.html (11.1.2007)
[JetB06o] IntelliJ IDEA – IntelliJ Technology Network ITN
http://www.intellij.net (11.1.2007)
Literaturverzeichnis
148
[JetB06p] JetBrains TeamCity
http://www.jetbrains.com/teamcity/ (11.1.2007)
[Jgo06]
FormLayout for Java, JGoodies.com
http://www.jgoodies.com/freeware/forms/index.html (8.10.2006)
[JInto06]
JInto Eclipse Plugin
http://www.guh-software.de/jinto.html (14.11.2006)
[JMEU06] J2MEUnit – A J2ME Unit Testing Framework
http://j2meunit.sourceforge.net/ (9.12.2006)
[JMS06]
Java Message Service (JMS)
http://java.sun.com/products/jms/ (14.11.2006)
[JNDI06] Java Naming and Directory Interface (JNDI)
http://java.sun.com/products/jndi/ (14.11.2006)
[JPro06]
ej-technologies JProfiler
http://www.ej-technologies.com/products/jprofiler/overview.html
(6.1.2007)
[JSF06]
JavaServer Faces Technology
http://java.sun.com/javaee/javaserverfaces/ (2.12.2006)
[JSP06]
JavaServer Pages Technology
http://java.sun.com/products/jsp/ (14.11.2006)
[JSTL06] JavaServer Pages Standard Tag Library
http://java.sun.com/products/jsp/jstl/ (2.12.2006)
[JTA06]
Java Transaction API
http://java.sun.com/products/jta/ (14.11.2006)
[JUnit06] JUnit – Test Framework
http://www.junit.org (3.1.2007)
[JVMTI06] JVM Tool Interface (JVM TI)
http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/index.html (9.12.2006)
[JWS06]
Java Web Services
http://java.sun.com/webservices/ (14.11.2006)
[JWTK06] J2ME Wireless Toolkit (WTK)
http://java.sun.com/products/sjwtoolkit/ (14.11.2006)
[L4J06]
Apache Log4j project
http://logging.apache.org/log4j/ (29.10.2006)
[MD06]
MagicDraw UML
http://www.magicdraw.com/ (14.11.2006)
[MIDP06] Mobile Information Device Profile
http://java.sun.com/products/midp/ (14.11.2006)
[MK06]
Accelerate. The Application Lifecycle
http://caparea.com/LinkClick.aspx?link=BorlandPresentation.ppt&tabid=
60&mid=378 (28.12.2006)
Literaturverzeichnis
[MR06]
IntelliJ IDEA Plugin MetricsReloaded
http://www.sixthandredriver.com/metricsreloaded.html (7.1.2006)
[MS06a]
Offizielle User Interface Guidelines für Windows-Anwendungen
http://msdn.microsoft.com/ui (31.08.2006)
149
[MSDK06] Motorola SDK for J2ME
http://developer.motorola.com (14.11.2006)
[NB06a]
A Brief History of NetBeans
http://www.netbeans.org/about/history.html (9.10.2006)
[NB06b]
VM Options for Debugging
http://debuggercore.netbeans.org/docs/VM-options.html (5.12.2006)
[NB06c]
NetBeans Enterprise Pack
http://www.netbeans.org/products/enterprise/ (9.12.2006)
[NB06d]
NetBeans Mobility Pack
http://www.netbeans.org/products/mobility/ (9.12.2006)
[NB06e]
NetBeans Profiler
http://www.netbeans.org/products/profiler/ (9.12.2006)
[NB06f]
NetBeans Visual Web Pack
http://www.netbeans.org/products/visualweb/ (9.12.2006)
[NB06g]
NetBeanc C/C++ Development Pack
http://www.netbeans.org/products/cplusplus/ (9.12.2006)
[NB06h]
NetBeans JUnit Module
http://junit.netbeans.org/ (9.12.2006)
[NB06i]
NetBeans Metrics Module
http://metrics.netbeans.org/ (9.12.2006)
[NB06j]
NetBeans Plugin Catalogue
http://www.netbeans.org/catalogue/index.html (9.12.2006)
[NB06k]
NetBeans Community
http://www.netbeans.org/community/ (9.12.2006)
[NB06l]
NetBeans Support Resources
http://www.netbeans.org/community/ (9.12.2006)
[NB06m] NetBeans Subversion Integration
http://subversion.netbeans.org/ (9.12.2006)
[NBCS06] NetBeans CheckStyle Plugin
http://nbcheckstyle.sourceforge.net/ (9.12.2006)
[NSDK06] Nokia Developer Suite for J2ME
http://www.forum.nokia.com/main/resources/tools_and_sdks/tools_for_
mobile_java_developers.html (14.11.2006)
[NUnit06] NUnit Homepage – Komponententests für .NET
http://sourceforge.net/projects/nunit (31.08.2006)
Literaturverzeichnis
150
[Omo06a] Omondo – The Live UML Company
http://www.omondo.de (11.10.2006)
[OSt06]
ORB Studio
http://www.orbzone.org/?p=125 (14.11.2006)
[OW06]
IONA Orbix
http://www.iona.com/products/orbix (28.12.2006)
[Pat06]
PatternBox – Entwurfsmuster Plugin für Eclipse
http://www.patternbox.com/ (14.11.2006)
[PeE06]
Eclipse Perl Integration
http://e-p-i-c.sourceforge.net/ (11.10.2006)
[PhE06]
PHPEclipse
http://www.phpeclipse.de (11.10.2006)
[PMD06] PMD
http://pmd.sourceforge.net/ (14.11.2006)
[ProG06] ProGuard Java Bytecode Obfuscator
http://proguard.sourceforge.net/ (14.11.2006)
[PSE06]
Pattern Support for Eclipse (PSE)
http://www.swe.uni-linz.ac.at/people/sametinger/research/pse.html
(14.11.2006)
[Pos06]
Poseidon for UML
http://www.gentleware.com/ (14.11.2006)
[PyE06]
PyDEV Python Development Environment
http://pydev.sourceforge.net/ (11.10.2006)
[RetG06] RetroGuard Java Bytecode Obfuscator
http://www.retrologic.com/ (14.11.2006)
[Rhino06] Rhino – JavaScript for Java
http://www.mozilla.org/rhino/ (29.10.2006)
[Rose06]
Rational Rose
http://www-306.ibm.com/software/awdtools/developer/rose/
(14.11.2006)
[SCC06]
Code Conventions for the Java Programming Language
http://java.sun.com/docs/codeconv/ (14.11.2006)
[SE06]
Sony Ericssons CDC Platform
http://developer.sonyericsson.com/site/global/docstools/symbian/p_symb
ian.jsp
[Serv06]
Java Servlet Technology
http://java.sun.com/products/servlet/ (14.11.2006)
[SL06]
Swing Layout Extensions
https://swing-layout.dev.java.net/ (2.12.2006)
[Struts06] Struts Framework
http://struts.apache.org/ (14.11.2006)
Literaturverzeichnis
151
[SubV06] Subversion VCS System
http://subversion.tigris.org/ (9.12.2006)
[SUML06] IntelliJ IDEA Plugin - SimpleUML
http://www.intellij.org/twiki/bin/view/Main/SimpleUML (4.1.2007)
[Sun06a]
Abstract Windowing Toolkit AWT
http://java.sun.com/j2se/1.5.0/docs/guide/awt/ (23.09.2006)
[Sun06b] Without a Layout Manager (Absolute Positioning)
http://java.sun.com/docs/books/tutorial/uiswing/layout/none.html
(8.10.2006)
[Sun06c]
BorderLayout, Java 5 SE API Documentation
http://java.sun.com/j2se/1.5.0/docs/api/java/awt/BorderLayout.html
(8.10.2006)
[Sun06d] GridBagLayout, Java 5 SE API Documentation
http://java.sun.com/j2se/1.5.0/docs/api/java/awt/GridBagLayout.html
(8.10.2006)
[Sun06f]
GroupLayout, Java 6 SE Beta API Documentation
http://java.sun.com/javase/6/docs/api/javax/swing/GroupLayout.html
(8.10.2006)
[Sun06g] JavaBeans http://java.sun.com/products/javabeans/ (8.10.2006)
[Sun06h] Java Foundation Classes (JFC/Swing)
http://java.sun.com/products/jfc/ (8.10.2006)
[Sun06i]
JavaMail API
http://java.sun.com/products/javamail/ (20.12.2006)
[Sun06j]
Pluggable Look and Feel
http://java.sun.com/docs/books/tutorial/ui/features/plaf.html (3.1.2007)
[Sun06k] Java Platform Debugger Architecture (JPDA)
http://java.sun.com/products/jpda/ (11.1.2006)
[Sun06l]
JavaHelp System
http://java.sun.com/products/javahelp/ (11.1.2007)
[Sun06m] Building Compelling Services for the Wireless Market Using Java Technology
http://developers.sun.com/techtopics/mobility/getstart/articles/whyjava/
(18.1.2007)
[Sun06n] Ein Jahrzehnt der Zusammenarbeit
http://de.sun.com/homepage/feature/2005/javaone/learn_more.html
(24.1.2006)
[Sun06o] Lernen über Java-Technologie
http://www.java.com/de/about/ (24.1.2006)
[SVG06]
Scaleable Vector Graphics (SVG) 1.1 Specification
http://www.w3.org/TR/SVG/ (29.10.2006)
Literaturverzeichnis
[UIQ06]
UIQ Platform
http://www.uiq.com/uiqplatform.html (9.12.2006)
[Völ06a]
Markus Völter: openArchitectureWare 4
http://www.eclipse.org/gmt/oaw/oAWFactSheet.pdf (13.08.2006)
[Völ06b]
Markus Völter: openArchitectureWare und Eclipse
http://www.voelter.de/data/articles/oaweclipse.pdf (14.11.2006)
[VP06]
Visual Paradigm SDE for IntelliJ IDEA
http://www.visual-paradigm.com/product/sde/ij/ (4.1.2007)
[VSS06]
MicroSoft Visual SourceSafe
http://msdn.microsoft.com/ssafe (30.12.2006)
152
[W3C06a] W3C XML Schema
http://www.w3.org/XML/Schema (20.12.2006)
[Wiki06a] Begriffserklärung: Gang of Four (GoF)
http://de.wikipedia.org/wiki/Viererbande_%28Softwareentwicklung%29
(31.08.2006)
[WinF06] Windows Forms .NET
http://www.windowsforms.net (9.12.2006)
[WOP06] WebOfPatterns – Entwurfsmuster Plugin für Eclipse
http://www-ist.massey.ac.nz/wop/ (14.11.2006)
[Xerces06] Apache Xerces
http://xerces.apache.org/ (29.10.2006)
[YOX06] Yoxos On Demand
http://yoxos.com/ondemand (16.11.2006)

Documentos relacionados