Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
Was ist eigentlich NetBeans? Auf den ersten Blick ist NetBeans eine hervorragende integrierte Entwicklungsumgebung, die als reine Java-Anwendung auf vielen Plattformen wie Windows, Linux, Solaris und Mac OS läuft. Neben der Unterstützung mehrerer Sprachen – derzeit Java, Ruby und C/C++ – bietet sie über so genannte »Packs« alles, was wir für die Entwicklung von Java ME-, Java SE- und Java EE-Applikationen benötigen. Ein Vorwort ist sicherlich nicht der passende Ort, um alle Features einer solch umfangreichen IDE aufzuzeigen, aber insbesondere die exzellenten visuellen Editoren für Swing und Web-Anwendungen sowie die Kollaborationstools und der Profiler sind einen Blick wert.
Sie können sowohl die NetBeans IDE als auch die Plattform derzeit in der version 6 under www.netbeans.org herunterladen.
NetBeans ist aber noch wesentlich mehr. Die NetBeans IDE wurde von Anfang an vollständig modular entwickelt und ist durch die Fähigkeit, diese Module dynamisch laden zu können, in ihrem Umfang sehr flexibel. Im Unterschied zu anderen bedeutenden IDEs basiert sie vollständig auf Java-Standards und verwendet Swing als GUI-System. Das NetBeans-Team hat daher schon sehr früh enorme Anstrengungen unternommen, sich selbst ein Framework für die Entwicklung von Swing-basierten Applikationen zu schaffen. Dieses Framework berücksichtigt Aspekte wie die Bereitstellung von Bausteinen für reiche und konsistente Benutzeroberflächen, Ressourenverwaltung, Konfiguration, kontextsensistive Hilfe und nicht zuletzt Verteilungs-, Installations- und dynamische Aktualisierungsfähigkeiten. Da sehr viele Desktop-Applikationen ähnliche technische Anforderungen erfüllen müssen, lag es nahe, den Java-Entwicklern neben dem Tooling auch das Framework zur Verfügung zu stellen – die NetBeans-Plattform war geboren.
Einführende Vedeos finden Sie unter www.netbeans.tv, eine stets informative und unterhaltsame Qvelle für Informationen zur Plattform ist Geertjans Weblog unter blogs.svn.com/seertjan
Sowohl die Plattform als auch das Tooling sind seit Juni 2000 Open Source und stehen sowohl unter der CDDL als auch der GPL v2. Elf Jahre nach dem Beginn der Entwicklung steht NetBeans heute in der Version 6 zur Verfügung. Sun Microsystems ist zwar weiterhin Hauptsponsor des Projekts, die Bedeutung der Community für die Entwicklung von NetBeans wächst jedoch rasant. Mittlerweile sind mehr als 500.000 Mitglieder registriert, bringen ihre Erfahrungen ein und verbessern NetBeans stetig. Immer mehr Partner fördern das Projekt, und die stetig wachsende Liste der auf der NetBeans-Plattform basierenden Referenzprojekte belegt die Akzeptanz der Plattform.
Dieses Buch hat nicht den Anspruch, Ihnen die vollständige Plattform mit all ihren Aspekten zu zeigen. Vielmehr soll Ihnen möglichst zügig ein praxisbezogener Eindruck der Rich-Client-Entwicklung mit der NetBeans IDE und der NetBeans-Plattform verschafft werden. Das Ziel ist, Ihnen zu zeigen, wie die NetBeans-Plattform Sie bei der Entwicklung hochqualitativer Rich-Client-Applikationen unterstützen kann, was die wesentlichen Konzepte sind und wo Stolpersteine liegen. Dieses Entwicklerheft soll kein ausführliches Referenzwerk ersetzen – dafür empfehle ich im Übrigen »Rich Client Programming« von Boudreau, Tulach und Wielenga -, sondern Sie an die Hand nehmen und durch die Entwicklung einer Rich-Client-Applikation führen. Der zentrale Treiber dieses Buches ist daher eine Beispielapplikation, die sich vom ersten bis zum letzten Kapitel durchzieht. Wir werden eine Aufgabenverwaltung implementieren, die zwar einfach gehalten ist, jedoch die meisten wesentlichen Aspekte der Rich-Client-Entwicklung berührt. Wir werden dabei so vorgehen, dass wir jeweils mit dem Wissensstand des aktuellen Kapitels arbeiten und die Applikation Stück für Stück erweitern und bestehende Teile gegebenenfalls so umschreiben, dass letztlich eine vollständige Applikation entsteht.
Im Einzelnen werden wir uns die folgenden Themen ansehen:
Module
Module sind die grundlegenden Bausteine unserer Applikationen. Wir werden uns ansehen, welche Eigenschaften sie haben, wie Abhängigkeiten zwischen Modulen aufgelöst werden und wie sie versioniert werden. Zudem beschäftigen wir uns mit ihrem Lebenszyklus und unseren Eingriffsmöglichkeiten. Bereits in diesem Kapitel werden wir unsere Beispielapplikation vorstellen und mit ihrer Entwicklung beginnen.
Formulare
Beinahe jede Desktop-Applikation benötigt eine Vielzahl von Formularen, um Informationen darzustellen und sie zu erfassen. Wir werden uns ansehen, wie Formulare erstellt werden, wie ihr Layout bestimmt wird und wie wir eine Ereignisbehandlung implementieren können.
Windows API
Die Windows API bietet uns Zugriff auf ein komplexes Fenstersystem. Wir werden uns anschauen, wie Fenster erzeugt werden, wie ihr Lebenszyklus aussieht und wie wir in diesen eingreifen können. Zudem werden wir lernen, wie Fenster im Standardlayout positioniert werden, wie dieses Layout angepasst werden kann und wie Gruppen von Fenstern gebildet werden können.
Lookup API
Die Lookup API ist für die Entwicklung von Plattform-Applikationen von besonders großer Bedeutung. Wir werden uns ansehen, wie mit Hilfe von Lookups Dienste gefunden werden, eine lose gekoppelte Kommunikation zwischen Komponenten ermöglicht wird und über Listener dynamische Lookup-Inhalte realisiert werden. Zudem werden wir lernen, wie ein Lookup als Stellvertreter für einen anderen dienen kann und warum dies die Grundlage für die globale Kontextsensitivität ist.
Actions
Actions sind durch den Benutzer ausführbare Aktionen. Wir werden uns ansehen, wie globale Actions erzeugt, in Menüs, Toolbars etc. eingehängt und wie sie an Tastenkombinationen gebunden werden.
Nodes & Explorer API
Diese beiden APIs bieten uns eine ausgeklügelte MVC-Implementierung mit deren Hilfe wir beliebige Fachmodelle mit wenig Aufwand in wiederverwendbaren Views darstellen können. Wir werden uns anschauen, wie Nodes zur Präsentation von Modellobjekten verwendet und in Explorer Views dargestellt werden. Wir werden dazu sowohl flache als auch hierarchische Strukturen verwenden und uns ansehen, mit wie wenig Aufwand die anzeigende View ausgetauscht werden kann. Anschließend werden wir uns mit der langläufigen Ermittlung von Nodes beschäftigen und sehen, wie die NetBeans-Plattform kontextsensitive Aktionen unterstützt. Zu guter Letzt werden wir uns ansehen, wie die Properties der Nodes über PropertyViews und PropertyEditoren dargestellt und editiert werden können.
Filesystems API
Die Filesystems API bietet Zugriff auf virtuelle Dateisysteme. Wir werden uns anschauen, wie wir auf das Konfigurations- und das lokale Dateisystem zugreifen können. Zudem werden wir uns mit frei vergebbaren Attributen der virtuellen Dateien beschäftigen.
Datasystems API
Die Datasystems API ermöglicht uns, auf Dateiinhalte zuzugreifen. Wir werden uns ansehen, wie wir die Plattform um die Unterstützung weiterer Dateitypen ergänzen und wie die Fähigkeiten im Umgang mit den Dateiinhalten abhängig vom Status der Datei geändert werden können.
Dialogs API
Dialoge reichen von einfachen Benachrichtigungen bis zu Wizards. Wir werden uns daher anschauen, wie wir einfache Benachrichtigungen, Standarddialoge, eigene und mehrseitige Dialoge anzeigen können.
Branding
Branding ermöglicht, die Applikation in ihrem Erscheinungsbild anzupassen. Wir werden uns exemplarisch ansehen, wie wir den Splash Screen austauschen können.
Distribution & Updates
Um unsere Software ausliefern zu können, werden wir uns die verschieden Distributionsformen für Plattform-Applikationen ansehen, einen Exkurs zur Generierung von Installern machen und uns schließlich der Online-Aktualisierung zuwenden.
Kursive Schrift
verwenden wir für Datei- und Verzeichnisnamen, URLs und erstmals eingeführte Begriffe.
Nichtporportionalschrift
wird im Fließtext für Methoden und Schlüsselwörter benutzt, außerdem durchgehend für die Quellcodebeispiele.
Kapitälchen
verwenden wir für GUI-Elemente wie Buttons, Schaltflächen und Menüelemente.
Als Beispielprojekt werden wir eine einfache Aufgabenverwaltung entwickeln. Mit ihr werden Hierarchien von Aufgaben erzeugt, modifiziert, angezeigt, gefiltert und gelöscht werden können. Wir werden dazu Formulare, Wizards und lose gekoppelte Master-Detail-Views erstellen und die Funktionen über kontextsensitive Aktionen in Menüs, Toolbars und Kontextmenüs anbieten. Für die Persistierung werden wir die Plattform um die Unterstützung eines neuen Dateityps erweitern. Zudem werden wir eine Integration in die Standardkonfiguration und das Hilfesystem vornehmen, das Branding durchführen und einen Installer zur Distribution erzeugen. Abgerundet wird die Applikation schließlich über die Fähigkeit, sich über ein Update-Center zu aktualisieren.
Der Source-Code der Beispielapplikation ist auf der begleitenden Website www.netbeansrcp.com veröffentlicht. Sie finden dort sowohl den endgültigen Stand der Applikation als auch die Zwischenstände zum Ende jeden Kapitels.
An der Entstehung dieses Buches waren viele Personen beteiligt, bei denen ich mich an dieser Stelle bedanken möchte. Ausdrücklich bedanken möchte ich mich bei Frau Haite vom O'Reilly Verlag für das entgegengebrachte Vertrauen und die tolle Unterstützung in allen Phasen dieses Projektes. Mein Dank gilt auch Markus Jais, Jens Boß und Geertjan Wielenga für das Review des Buches, die mir mit ihren Ideen und Kritiken sehr geholfen haben. Vor allem aber bedanke ich mich bei meiner Verlobten Sabine, die in den vergangenen Monaten viel Geduld mit mir hatte und mir trotz Fernbeziehung erlaubte, einen großen Teil meiner Freizeit mit dem Schreiben dieses Buches zu verbringen.