"JavaFX ist gut aufgestellt!" – Über die Leiden und Freuden eines Java-Desktop-Entwicklers

JAXenter: Mit welchen Schwierigkeiten hat man als typischer Desktop-Entwickler zu kämpfen?

Anton Epple: Es gibt eine ganze Reihe zusätzlicher Anforderungen im Vergleich zur Webapp: Der User ist zum Beispiel inzwischen daran gewöhnt, in der Anwendung frei verschiebbare, minimier- und maximierbare, entdockbare Fenster zu haben, deren Zustand zwischen zwei Sessions persistiert wird. Auch das Aktualisieren einer Anwendung ist nicht einfach durch das Deployment der neuen Version auf dem Server erledigt, und die Anforderungen an die Performance sind im allgemeinen höher.

Alles was das UI länger als 20ms blockiert, wird vom User registriert. Auf dem Desktop gibt es keine Ausreden, wenn die Applikation langsam ist – wir können das halt nicht auf Netzwerklatenzen schieben :-). Also müssen wir dafür sorgen, dass lang andauernde Aktionen im Hintergrund ablaufen und anschliessend Thread-sicher das UI aktualisieren. Generell müssen wir eine ganze Menge Komponenten miteinander synchron halten. Wenn wir nicht aufpassen, führt das schnell zu objektorientiertem Spaghetti-Code, der sich auf Dauer zum Alptraum für die Wartbarkeit entwickelt.

Als ob das nicht genug wäre, ist auch noch jedes Betriebssystem ein bisschen anders, und auch wenn die Anwendung zum Beispiel auf dem Mac läuft, entspricht sie nicht unbedingt Apples „Human Interface Guidelines“. Mit den Standard Java APIs kann man dann eine Menge Spaß haben. Wer schon mal versucht hat, in einer internationalisierten Anwendung eine JOptionPane korrekt auf dem Mac anzuzeigen, weiß wovon ich spreche.

JAXenter: Sie sagen, dass Frameworks wie Eclipse RCP oder die NetBeans Plattform dabei helfen, diese Schwierigkeiten in den Griff zu bekommen. Wie tun sie das?

Anton Epple: Vor allem durch modulare Architektur und nützliche APIs. Beide Frameworks haben die meisten gängigen Anforderungen an eine Anwendung fertig implementiert. Fensterverwaltung und Persistenz, deklarative Registrierung von Komponenten, Hilfesysteme, Einstellungsverwaltung, Updatesysteme und vieles mehr. Fast alle generischen Anforderungen sind in der Regel schon abgedeckt, bevor ich eine einzige Zeile Code schreibe.

Beide Frameworks bauen zudem auf ein Modulsystem, das Kommunikationskanäle für lose gekoppelte Anwendungen bietet und es erleichtert, die Anwendung in versionierbare, wartbare Einheiten aufzuteilen. Das unterstützt dabei, API-Verträge aufzustellen und auch deren Einhaltung zu erzwingen.

Und um auf das Beispiel von vorhin zurückzukommen: NetBeans bietet zum Beispiel eine Dialogs API, die je nach OS Platform den Cancel-Button auf die richtige Seite platziert, die Buttons richtig ausrichtet und vollständig internationalisierbar ist. Auf dem Mac sind die Einstellungen automatisch im richtigen Menü, die Menüleiste ist ans Betriebssystem angepasst, etc.. Auch das spart eine Menge Zeit, die man dafür verwenden kann, die eigentliche Anwendungslogik zu entwickeln und fachliche Anforderungen umzusetzen.

JAXenter: Ein wichtiger Teil der Desktop-App-Entwicklung ist die Gestaltung des UI. Nun steht in der Microsoft-Welt ein neues UI-Paradigma an, das mit interaktiven Kacheln arbeitet – der sogenannte Metro-Style. Wird es hier bald Unterstützungen durch NetBeans oder Eclipse geben?

Anton Epple: Alle Neuerungen, die sich durchsetzen, werden normalerweise schnell in NetBeans und Eclipse integriert. Für plattformspezifische Neuerungen, wie die Metrokacheln, kommen meistens schnell Plug-ins von Anwendungsentwicklern auf den Markt. Das war auch in der Vergangenheit mit Dingen wie den Ribbon-Komponenten so. Die Metro-Kacheln sind für Tablets und Smartphones wirklich sehr praktisch, ob sie sich auf dem Desktop durchsetzen, ist eine andere Frage. Wenn ja, werden sie sicher schnell adaptiert.

JAXenter: Sie sind ja nun seit 2008 auch Mitglied des NetBeans Dream Teams. Auf welche Neuerungen dürfen sich NetBeans-User in den nächsten Wochen und Monaten denn freuen?

Anton Epple: Da gibt es eine ganze Menge, gerade für die JavaFX-Fraktion. Der FXML-Support wird massiv überarbeitet, da die Spezifikation gerade größere Umbauten erfährt und sich wohl vom reinen XML-Standard verabschieden wird. Ein wichtiger Punkt ist die enge Integration mit dem sehnsüchtig erwarteten SceneBuilder.

Im Editor wird es eine Menge neue und verbesserte Refactorings geben, zum Beispiel die Möglichkeit, Konstruktoren durch Builder oder Factories zu ersetzen, und die Unterstützung von CDI-Features wird verbessert. Fehler, die erst zur Runtime auftreten, werden so teilweise bereits im Editor erkannt und markiert. Das wird gerade die Produktivität beim Entwickeln von Java-EE-Anwendungen weiter verbessern.

Ich freue mich, dass ich auch persönlich dazu beitragen konnte, dass das NetBeans UI ein Stück besser wird. In Version 7.2 ist es endlich möglich, die proprietäre TabbedPane durch alternative Implementierungen zu ersetzen. Verwendet man hier JTabbedPane, dann lassen sich Swing Look-and-Feels ohne weitere Anpassungen verwenden. Bislang musste man hier häufig eigene UIDelegates schreiben, damit die Anwendung das Look-and-Feel vollständig unterstützt.

JAXenter: Dann freuen wir uns auf eine rosige Zukunft auf dem Java-Desktop: mit NetBeans, Eclipse und JavaFX. Vielen Dank für dieses Gespräch!

Anton Epple arbeitet als freiberuflicher Java Consultant und Trainer in München. Seit mehr als zehn Jahren leitet er die Entwicklung von Java-Desktop-Applikationen. Als aktives Mitglied der Open-Source-Community wurde er 2007 Leiter der JavaTools Community auf java.net. Seit mehreren Jahren beschäftigt er sich spezialisiert intensiv mit der NetBeans Platform und wurde 2008 zum Mitglied des NetBeans Dream Teams ernannt.
Kommentare

Schreibe einen Kommentar

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