Interview mit Alexander Casall und Michael Thiele

JavaFX – Es war Liebe auf den ersten Blick!

Hartmut Schlosser
Alexander Casall, Michael Thiele

Mit dem Release von Java 8 im März 2014 soll auch JavaFX seinen eigentlichen Durchbruch erleben: Zum ersten Mal wird die UI-Technologie Bestandteil des JDK und liegt den Entwicklern damit ohne Umwege auf den Fingerspitzen. Zu erwarten ist, dass sich nun immer mehr reale Projekte von Swing abwenden und JavaFX bevorzugen. Mit ihrem Scrum Board sind Alexander Casall und Michael Thiele (Saxonia Systems AG) genau diesen Weg gegangen. Im W-JAX-Countdown berichten sie von Stärken und Schwächen von JavaFX und wagen einen Vergleich mit Swing.

JAXenter: JavaFX ist in aller Munde – die Community probiert ja schon fleißig damit herum. Um der UI-Technologie nun allerdings zum allgemeinen Durchbruch zu verhelfen, dürften überzeugende JavaFX-Projekte nötig sein. Ihr selbst habt ein solches Projekt am Start – worum geht es dabei?

Alexander Casall/Michael Thiele: Wir haben vor zwei Jahren angefangen, Software zur Unterstützung von Scrum im verteilten Umfeld zu entwickeln. Unsere Firma hat viel Know-how auf dem Gebiet, da wir sehr oft auf diese Art und Weise Projekte abwickeln. Wir begannen, ein digitales Scrum Board (www.eteoboard.de) zu entwickeln, das folgende Anforderungen erfüllen sollte:

– Interaktiv bedienbar via Multitouch

– Mehrere absolut synchronisierte Clients, da wir es verteilt nutzen wollten

– Es sollte „Fancy“  – responsive – sein, damit es Spaß macht, es zu benutzen.

Zuerst versuchten wir, einen Prototypen mit Swing zu implementieren, was einigermaßen funktioniert hat. Jedoch haben wir uns fast ein Bein gebrochen, als wir die Punkte „interaktiv bedienbar“ und „fancy“ umsetzen wollten. Ein Kollege hat zu dem Zeitpunkt einen Artikel im Java Magazin zu JavaFX gelesen, der die aktuelle Beta vorgestellt hat. Zufällig wurde auch erwähnt, dass Multitouch-Events in die API Einzug gehalten haben. Wir zögerten nicht lang, evaluierten die Technologie und waren auf einen Schlag begeistert.

Um nicht mit Worten erklären zu müssen, was wir eigentlich tun, haben wir die folgenden Videos gedreht:

Funktionsweise:

Synchronisation:

Mini-Tutorial:

JAXenter:  Ihr macht einen JavaFX Workshop auf der W-JAX, den Ihr „JavaFX lieben lernen“ getauft habt. Das klingt ja ganz so, als wäre JavaFX bei Euch nicht die „Liebe auf den ersten Blick“ gewesen? Nun ist JavaFX ja der designierte Nachfolger von Swing. Wenn man sich die Features in den aktuellen Versionen anschaut: Ist JavaFX schon auf der Höhe von Swing?

Alexander/Michael: Doch, es war Liebe auf den ersten Blick.

Unser Anwendungsfall mit einer grafisch anspruchsvollen, interaktiven Touch-Anwendung auf dem Desktop ist jedoch etwas speziell, so dass JavaFX wunderbar gepasst hat. Featuremäßig ist JavaFX Swing ebenbürtig und in vielen Punkten einfach fortschrittlicher, beispielsweise bei der Unterstützung für Multi-Touch und Animation. Was noch etwas fehlt, ist ein Ökosystem um die Technologie rundherum. Hierbei gibt es schon einige spannende Projekte, aber den Reifegrad der Swing-Pendants erreichen sie meist noch nicht; dafür ist JavaFX auch noch zu jung.

[ header = Seite 2: Wo JavaFX noch nachlegen muss ]

JAXenter: Wo muss JavaFX noch nachlegen?

Alexander/Michael: Unser erster Kritikpunkt ist die Leistungsfähigkeit von FXML. Wir vermissen zum Beispiel die Möglichkeit des deklarativen Databindings zu Controllerklassen. Wir sind uns sicher, dass sich in diesem Gebiet aber noch eine Menge tun wird. Was wir uns gelegentlich auch wünschen, sind mitgelieferte Standardkomponenten wie Dialoge. Hier gibt es aber mit (fx)controls auch schon rege Bewegung in der Community, Abhilfe zu schaffen – leider erst für JavaFX 8.

Zum Thema Bugs muss man sagen, dass in Bezug auf Stabilität nicht viel zu kritisieren ist. Der gröbste Fehler war ein VM Error, der bei einer speziellen Verwendung der Webview aufgetreten ist. Dieser wurde aber in einer Folgeversion von JavaFX gefixt. Generell muss man auch sagen, dass man auf Feature-Requests und Bug-Reports im vorgesehenen Jira sehr schnell Feedback bekommt.

JAXenter:  Und was genau an JavaFX seht ihr als größten Fortschritt gegenüber Swing?

Alexander/Michael: Generell gehen wir dieser Frage lieber aus dem Weg, da wir den Eindruck haben, dass dabei oft sehr subjektiv und emotional, ähnlich wie bei Diskussionen JavaFX vs HTML5, argumentiert wird. Dennoch wollen wir zumindest die gefühlten Verbesserungen nicht verschweigen. Vorher muss fairerweise betont werden, dass wir nicht die typische Formularfeld-verseuchte Businessanwendungen, sondern hochinteraktive Applikationen für Multi-Touch-Screens entwickeln. In unserem Kontext bietet JavaFX einen echten Mehrwert. Das Ganze mal als kurze knackige Anstriche, wobei die Liste viel länger ausfallen könnte:

– Properties

– FXML

– Animationen und Interpolation von Werten sind wie ein Geschenk

– Multi-Touch Events + Gestenerkennung

– Webview

Zusätzlich zu den aufgeführten Punkten wird gefühlt 200% weniger Code für Dinge benötigt, die oft getan werden. Das spart oft viel Implementierungsaufwand oder die Verwendung von externen Bibliotheken. Ein einfaches Beispiel: Während man zum nichtblockierenden Laden eines Bildes in Swing den SwingWorker nutzen soll – die Referenzimplementierung von Oracle zum Laden eines Bildes ist ca. 100 Zeilen lang – ist es in JavaFX möglich, bei der Instanziierung eines Bildes durch die Übergabe eines boolschen Argumentes das Bild asynchron zu laden. Eine Zeile Code und das Bild lädt im Hintergrund.

[ header = Seite 3: JavaFX für Android und iPhone? ]

JAXenter:  In einem Community-Projekt soll JavaFX auf Android-Geräte, vielleicht sogar auf iPhones gebracht werden. Was haltet ihr davon – oder anders gefragt: Hat JavaFX eine Chance, in großem Stil auf mobilen Devices Fuß zu fassen? 

Alexander: Ich bin von der Idee begeistert. Ich beschäftige mich neben JavaFX mit der Entwicklung von nativen iOS Apps und nutze dazu Objektive-C. Dies effizient mit Java tun zu können und dabei die Vorzüge von JavaFX zu verwenden, ist ein sehr verlockender Gedanke. In meinen Augen sind die bisherigen X-Plattform-Lösungen an mangelnder Performance, fehlender Effizienz in der Entwicklung und teilweise an den unterschiedlichen Bedienparadigmen der mobilen Betriebssysteme gescheitert. Zumindest bei den ersten beiden Punkten bin ich zuversichtlich, dass JavaFX enorme Schritte zu einer brauchbaren X-Plattform Technologie schafft. Das alleinige Austauschen von CSS-Dateien, um das Aussehen der jeweiligen Plattform zu adaptieren, reicht jedoch in meinen Augen nicht, um maximale User Experience, die von den spezifischen Betriebssystemen abhängt, zu erreichen. Das spielt aber sicher bei Businessapplikationen weniger eine Rolle. Wie Oracle schon auf der letzten JAX in einer Session klipp und klar bekannt gegeben hat, hängt der Fortschritt der Portierung stark von der Community ab. Projekte wie „RoboVM“ ermöglichen es bereits heute, JavaFX auf dem iPhone zum Laufen zu bekommen. Auf der JavaOne, von der wir gerade wieder kommen, haben wir auch keine neuen Infos dazu aufgeschnappt.

JAXenter:  Und was wollt Ihr den Workshop-Besuchern auf der W-JAX vermitteln?

Alexander/Michael: JavaFX ist cool! Die Technologie ist ausgereift, und man kann eine Menge interessanter Sachen damit anstellen. Wir wollen Dinge aufgreifen, die uns gerade während der Evaluation und Nutzung von JavaFX enorm beeindruckt haben. Dazu gehören definitiv die Verwendung von Properties, der Scene Graph und die elegante Möglichkeit, Elemente in ihm zu transformieren und zu animieren. Natürlich wird auch FXML ein Thema sein. Es lassen sich sicher noch mehr „fancy“ Features aufgreifen – wir wollen jedoch eher die Grundlagen für unsere nachfolgenden Speaker des JavaFX Day legen.

JAXenter: Vielen Dank für dieses Gespräch!

(Lesetipp: Von seinen Erfahrungen mit JavaFX berichtet Alexander Casall auch in seinem Artikel „JavaFX geht fremd“ im Java Magazin 11.13. Dort geht es um die Implementierung des MVVM-Patterns in JavaFX.)

Alexander Casall hat 2011 seinen Master in Informatik abgeschlossen und arbeitet seitdem bei der Saxonia Systems AG als Consultant und mittlerweile als Teamleiter in der Entwicklung. Sein Fokus liegt auf der Implementierung moderner Multi-Touch-Applikationen mit JavaFX, u.a. Kollaborationswerkzeuge zur verteilten, agilen Entwicklung. In seiner Freizeit entwickelt er seit mehreren Jahren leidenschaftlich native Apps für iOS. Zusätzlich spricht er auf Konferenzen wie der JAX und JavaOne und hält regelmäßig User-Group-Vorträge.

Michael Thiele arbeitet seit April 2012 für die Saxonia Systems AG und entwickelt mit JavaFX interaktive Applikationen für Touchscreens. Seine Interessen liegen eigentlich im Backend-Bereich und der Programmiersprache Scala; durch JavaFX hat er den Spaß an GUI-Entwicklung wiederentdeckt.

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Hartmut Schlosser ist Redakteur und Online-Koordinator bei Software & Support Media. Seine Spezialgebiete liegen bei Java-Enterprise-Technologien, JavaFX, Eclipse und DevOps. Vor seiner Tätigkeit bei S & S Media studierte er Musik, Informatik, französische Philologie und Ethnologie.
Kommentare
  1. Marc Teufel2013-10-07 19:47:07

    "Featuremäßig ist JavaFX Swing ebenbürtig und in vielen Punkten einfach fortschrittlicher"

    Das sehe ich anders. JavaFX ist sicher cool, doch Swing ist definitiv ausgereifter (weil jahrelang erfolgreich am Markt) und in vielen Bereichen auch vollständiger.

  2. dan_2014-01-09 08:05:12

    Where, and How JavaFX Makes Sense
    CaptainCasa moves from Swing to JavaFX for front-end infrastructure.
    http://www.oracle.com/technetwork/articles/java/casa-1919152.html

Schreibe einen Kommentar

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