In einem ist sich die RIA-Gemeinde einig: Das hart umkämpfte Rennen um die Krone des RIA-Olymps kann nur diejenige Technologie gewinnen, die auch entsprechende RAD-Tools mit im Handgepäck hat. Bezüglich Toolsupport waren bisher Silverlight (Microsystems) und Flex/Flash (Adobe) die klaren Vorreiter. JavaFX (Sun Microsystems) dagegen tat sich eher durch Ankündigungen – so z. B. die Demonstration des JavaFX-Authoring-Tools auf der letzten JavaOne – als durch wirkliche Taten hervor. Dieser Zustand soll nun ein Ende haben. Dezember 2009 fand die erste Veröffentlichung des NetBeans-Plug-ins JavaFX Composer statt. Aktuell zwar nur als Early-Access-Version verfügbar – also noch weniger als ein Betarelease – lässt das Tool doch bereits erahnen, in welcher Richtung Sun Microsystems die JavaFX-Entwickler in Zukunft stärker unterstützen möchte. Was liegt näher, als einmal einen Blick auf das neue JavaFX-Tool-Flagschiff zu riskieren?
Drag-and-Drop-Design
Das JavaFX-Composer-Plug-in erinnert stark an den Swing UI Builder (a. k. a. Project Matisse) – eine Parallele, die von Sun sicherlich auch so gewollt ist (Abb. 1).
Via Drag-and-Drop von JavaFX-Standard-Controls lassen sich einfache Anwendungen schnell und einfach "designen". Für komplexere Szenarien, z. B. einen mehrseitigen Wizard inklusive Navigation, stehen spezielle Template-basierte UI Komponenten oder gar komplette Template-Projekte zur Verfügung. Natürlich genügen diese Templates nur bedingt den individuellen Anforderungen, sind aber in der Regel so gut durchdacht, dass dem Entwickler zumindest eine Menge (Tipp-)Arbeit erspart wird.
Während der Entwicklung einer JavaFX-Anwendung mit dem Composer kann beliebig zwischen Design- und Source-Modus gewechselt werden. Abbildung 2 zeigt den Screen aus Abbildung 1 im Source-Modus. Sobald man eine UI-Komponente angewählt hat, lassen sich, wie zu erwarten, deren Eigenschaften mithilfe eines Property-Editors bearbeiten. Hierbei ist es besonders hilfreich, dass lediglich die am häufigsten benötigten Eigenschaften zur Bearbeitung vorgeschlagen werden. Alle anderen – nach Kategorien unterteilt – können durch den Entwickler auf Wunsch zusätzlich ein- bzw. ausgeblendet werden.
Leider lassen sich nicht mehrere Komponenten gleichzeitig selektieren und bearbeiten, was das Einstellen gemeinsamer Properties mehrer Komponenten etwas umständlich gestaltet. Möchte man zum Beispiel den Font aller dargestellten Buttons ändern, so müsste man jeden einzelnen Button der Reihe nach auswählen und die entsprechende Eigenschaft "FONT" manuell einstellen. Da die meisten dieser Masseneinstellungen allerdings eher über eine (mehrere) CSS-Datei(en) geregelt werden sollten, ist das Problem nicht ganz so gravierend, wie es auf den ersten Blick erscheint.
Bäumchen wechsle dich
Ein weiteres Highlight des JavaFX Composers findet sich in Form des State-Editors und der damit einhergehenden Unterstützung des aus anderen UI-Technologien bekannten Konstrukts so genannter Application States. Ein Application State – wie z. B. logedIn – kann verwendet werden, um das Erscheinungsbild einzelner UI-Controls bzw. des gesamten Screens zu steuern. Zu diesem Zweck lässt sich für jedes Property einer visuellen UI-Komponente einstellen, ob der aktuell gewählte Wert für alle States oder aber nur für einen bestimmten State gelten soll. Der im Hintergrund generierte JavaFX-Code passt so bei einem State-Übergang automatisch die Oberfläche den gewünschten Einstellungen an. Ein klassischer Anwendungsfall ist das kontextsensitive Enablen/Disablen von Buttons oder Eingabefeldern. Auch die parallele Verwendung mehrerer State-Variablen ist möglich und dank des State-Editors leicht zu realisieren. Das macht z. B. dann Sinn, wenn über eine erste State-Variable innerhalb eines Wizards die aktuelle Wizard-Seite bestimmt werden soll und eine zweite, parallel dazu verwendete State-Variable zusätzlich genutzt wird, Detailinformationen je nach Nutzerwunsch ein- bzw. auszublenden.
Neben den States selbst lassen sich auch Transformationen zwischen den verschiedenen States definieren. Resultat sind einfach zu implementierende, visuell ansprechende Übergänge zwischen zwei States, z. B. ein Fade-in-/Fade-out-Effekt.




