Suche
Interview mit Manuel Mauky

Wo steht JavaFX im Vergleich zu anderen UI-Toolkits: Swing, HTML5, SWT?

Hartmut Schlosser
5644778560e6afa369bf6114version229sizefull

Manuel Mauky

Dass JavaFX mehr ist als eine grafische Laune der Natur, zeigte bereits unsere Artikelserie “20 JavaFX-Anwendungen aus der Praxis“. Die Frage bleibt dennoch, wie sich JavaFX im Vergleich zu konkurrierenden Ansätzen schlägt. Wir haben JAX-Speaker Manuel Mauky (Saxonia Systems) nach einer Einschätzung gefragt.

JAXenter: Mit JavaFX geht die UI-Entwicklung für Java in eine neue Runde. Wo steht JavaFX momentan? Würdest du es bereits für den produktiven Einsatz empfehlen?

Manuel Mauky: Aus meiner Sicht ist JavaFX mit Version 8 und den nachfolgenden Updates reif für den produktiven Einsatz und wird schon in vielen realen Projekten erfolgreich eingesetzt. In dem Projekt, in dem ich aktuell tätig bin, haben wir die Technologieentscheidung nicht bereut.

Natürlich gibt es aber auch bei JavaFX noch hier und da Verbesserungsbedarf und fehlende Features. Daher muss man vor einer Empfehlung immer auch die konkreten Anforderungen anschauen.

JAXenter: Wo siehst du JavaFX im Vergleich zu anderen Java-UI-Toolkits: Swing und SWT?

Mit JavaFX lassen sich viele Dinger leichter umsetzen.

Manuel Mauky: Ich habe mit Swing nur wenig und mit SWT noch gar nicht gearbeitet, daher kann ich einen echten Vergleich nicht aus eigener Erfahrung anstellen. Mein Eindruck ist aber, dass mit JavaFX viele Dinge leichter und mit weniger Code umsetzbar sind. Neben modernen Features wie deklarativer UI-Beschreibung mittels FXML, Styling per CSS und einfachen Animationen ist mein persönliches Highlight das Databinding, welches u.a. auch Reactive-Programming ermöglicht (siehe auch den Artikel: Einfach und effizient: Reactive Programming mit JavaFX). Das ist meines Wissens so einfach in den anderen Toolkits nicht möglich.

Bei der Wahl eines Toolkits spielt natürlich auch Zukunftssicherheit eine Rolle. Hier ist JavaFX durch den Support von Oracle gut aufgestellt.

Lesen Sie auch: Ruhe in Frieden, JavaFX?

JAXenter: Nun sagen einige Vertreter der Web-Fraktion, Java hätte im Frontend nichts verloren – vor allem in Zeiten von HTML5. Adam Bien konterte einmal treffend in einem Interview, indem er sagte, JavaFX ist stabiler als HTML5.  Wer gewinnt aus deiner Sicht im Vergleich JavaFX versus HTML5?

Manuel Mauky: Ich kann den Streit nicht ganz nachvollziehen. Ich persönlich bin zwar hauptsächlich mit JavaFX beschäftigt, interessiere mich aber auch sehr für die Entwicklungen im Webbereich und lasse mich gerne inspirieren – so ist ja auch mein JAX-Talk entstanden.

Für Business-Anwendungen ist ein schnelllebiges JavaScript-Framework vielleicht nicht die beste Wahl.

HTML5 ist für viele Anwendungsfälle sicherlich eine gute Wahl, aber es gibt nach wie vor und auch in nächster Zukunft Anwendungsfälle, in denen klassische Desktop-Anwendungen die sinnvollste Lösung darstellen. Und da ist JavaFX sicherlich eine gute Option.

Dem Argument von Adam Bien kann ich auch zustimmen: Wenn man eine Businessanwendung entwickeln möchte, die mehrere Jahre eingesetzt und gewartet werden soll, dann ist ein schnelllebiges JavaScript-Framework vielleicht nicht die beste Wahl.

JAXenter: Du stellst auf der JAX die Flux-Architektur vor. Was ist Flux?

Manuel Mauky: Die Flux-Architektur kann man zu den MVC-Varianten zählen. Es geht also darum, wie man GUI-Applikationen aufbauen und strukturieren kann.

Zentrale Idee ist die Beschränkung auf unidirektionalen Datenfluss: Daten “fließen” nur vom so genannten “Store” in Richtung UI, nicht jedoch umgekehrt. Nutzerinteraktionen werden stattdessen explizit mittels Command-Pattern abgebildet (im Original wird der Begriff “Actions” verwendet). Stores können dann selbst entscheiden, ob sie auf Commands reagieren und ihren Zustand anpassen, was wiederum ein UI-Update auslöst.

Lesen Sie auch: “Flux als Architekturidee und Web Components stehen nicht im Widerspruch”

JAXenter: Flux ist ja typischerweise mit JavaScript umgesetzt. Weshalb sollten sich also Java-Entwickler dafür interessieren?

Manuel Mauky: Java als Sprache und Umgebung hat natürlich andere Eigenschaften als JavaScript im Browser, daher lässt sich nicht alles 1 zu 1 übernehmen. Das Prinzip hinter Flux ist aber nicht auf JavaScript beschränkt und die Eigenschaften und Vorteile, wie z.B. klarer Datenfluss, sind natürlich auch für Java-Entwickler verlockend. Das Muster lässt sich darüber hinaus besser als andere mit Ideen der funktionalen Programmierung kombinieren, was sicherlich auch für einige Entwickler interessant sein kann. Und letztlich kann ein Blick über den Tellerrand auch sehr lehrreich sein, selbst wenn man nicht alles adaptiert.

JAXenter: Flux mit JavaFX – wie geht das?

Manuel Mauky: Bei React.JS (wofür Flux ursprünglich entwickelt wurde) wird konzeptionell bei jeder Änderung des Stores die gesamte Oberfläche neugezeichnet, was ein sehr einfaches Programmiermodell ermöglicht. In JavaFX ist das nicht so einfach realisierbar. Stattdessen können wir aber Databinding und reaktive Streams benutzen, um einen ähnlichen Effekt zu erzielen.

JAXenter: Wer es genauer wissen möchte, der sei hier einmal auf deinen Talk auf der JAX verwiesen! Vielen Dank für diese Einsichten!

5644778560e6afa369bf6114version229sizefullManuel Mauky arbeitet seit 2010 als Softwareentwickler bei der Saxonia Systems AG in Görlitz. Er ist vor allem im Frontend-Bereich aktiv, seit einiger Zeit vor allem mit JavaFX. Daneben interessieren ihn Themen wie Softwarearchitektur, funktionale Programmierung und Reactive Programming. Manuel ist Gründungsmitglied und Leiter der Görlitzer Java User Group.
Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Hartmut Schlosser ist Redakteur und Online-Koordinator bei Software & Support Media für die Portale JAXenter, Windows Developer und PHP Magazin. Seine Spezialgebiete liegen bei Java-Enterprise-Technologien, Eclipse & ALM, Android und Business Technology. Vor seiner Tätigkeit bei S & S Media studierte er Musik, Informatik, französische Philologie und Ethnologie.
Kommentare

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *