Suche
Alexander Casall erzählt von seinen Erfahrungen

"Wir finden es verdammt cool": Rückblick auf den JavaFX Day

Alexander Casall

Ich bin Alexander Casall und beschäftige mich seit knapp 2 Jahren mit JavaFX und werde dafür sogar bezahlt. Ich habe den gesamten JavaFX 101 Day mitverfolgen dürfen, für den wir auch als Firma die Partnerschaft übernommen haben. Warum? – wir finden JavaFX verdammt cool und beschäftigen uns intensiv damit. Lasst mich nun aber kurz meine Eindrücke des Tages zusammenfassen.

Der Tag war in vier Sessions unterteilt, die JavaFX jeweils aus verschiedenen Blickwinkeln betrachteten. Gestartet sind wir selbst (Alexander Casall, Michael Thiele) mit der Session „JavaFX lieben lernen“. Wir hätten sie auch „JavaFX – 10 Dinge die ich an dir liebe“ nennen können, denn wir haben die Session in 10 Kapitel unterteilt, die jeweils ein ausgewähltes Highlight von JavaFX vorgestellt haben. Der erste Punkt der uns besonders bei der Arbeit mit JavaFX aufgefallen ist, ist die große Effizienz. Die API ist durchdacht und spart viel Boilerplate Code. Dabei helfen auch die neuen JavaFX Properties. Sie wrappen bestehende Daten (z.B. String, Integer, Object) und erweitern diese um einen mächtigen Databinding und Event Listener Mechanismus. Ein anderes wichtiges Thema war FXML zur deklarativen Oberflächenbeschreibung und CSS, das zur Gestaltung genutzt wird. Wir haben demonstriert, wie mit dem Scene Builder auch verschachtelte FXML Dateien konstruiert werden können. Warum sollte man FXML und CSS nutzen? Ganz einfach – man bekommt die Trennung von Oberflächenbeschreibung und implementierter Logik geschenkt. Natürlich spielten auch Fancy Features wie Animationen, Effekte und Multi-Touch-Unterstützung eine Rolle. Auch Komponenten wie die WebView (WebKit basierte Komponente die HTML + JS rändert) und die in JavaFX enthaltenen Charts haben wir aufgegriffen und demonstriert. Der Vorschlag, das Pattern MVVM (Model View ViewModel) aus der .NET (WPF) Welt in Java zu adaptieren hat letztendlich unsere Session abgeschlossen. WPF hat große technologische Ähnlichkeiten zu JavaFX (Databinding, XAML = FXML) und ist damit prädestiniert dafür, sich Best Practices zu klauen, ähm anzunehmen.

Für die zweite Session ist Jose Pereda aus Spanien angereist. Er hat dem Publikum zwei Kundenprojekte vorgestellt, in denen er JavaFX verwendet und  damit die Praxisrelevanz des Themas beweist. Die erste Applikation hat Jose für die Port Authority des Hafens in Santander (Spanien) entwickelt. Diese überwacht und steuert zum Beispiel Fahrzeugschleusen am Hafeneingang und visualisiert Hafeninformationen und Alarme. Dazu hat Jose ein Custom Control (MatrixPanel) entwickelt, das mittlerweile im OpenSource Projekt JFXtras enthalten ist. Das zweite Projekt visualisiert ebenfalls Sensordaten. Die Sensoren sind in alten Gebäuden installiert und sammle Daten über den Verfall. Er nutzt die Möglichkeit, von JavaFX SVG Pfade in FXML und CSS zu verwenden und zeichnet damit Raumpläne von den mit Sensoren bestückten Häusern. Diese lassen sich in der Applikation beliebig skalieren und bleiben dabei gestochen scharf. Auch integriert er die Charts aus der JavaFX Charting API, um Verläufe in den Sensordaten darzustellen. Erneut finden auch wieder diverse Gauges und andere Komponenten aus JFXtras zur Alarmierung Verwendung. Sehr interessant war, dass er seine Präsentation mit JavaFX programmiert hat. Ein spannendes Projekt, dass mich sehr interessiert. Der Fakt, dass so auch Präsentations-Folien Bugs haben können, bringt mich zum schmunzeln. 

Anton Epple hielt die dritte Session an diesem gelungenen JavaFX-Tag. Nachdem alle Teilnehmer zufrieden vom wirklich guten Mittagessen wiedereingetroffen sind, stellte er verschiedene Strategien für die Migration von Swing zu JavaFX vor. Anton hat überraschend Besuch aus San Francisco mitgebracht. Stephen Chin, Technology Ambassador bei Oracle, ist gerade in Europa unterwegs und hat sich spontan dazu bereit erklärt, Anton bei seiner Session zu unterstützen. Einzige Bedingung war, dass die Session einen Subtitel bekommt „Von Swing nach JavaFX … and Robots“. Warum, seht ihr gleich. Anton stellte drei mögliche Strategien vor, um bestehende Swing-Anwendungen nach JavaFX zu portieren. Option 1 ist die Neuentwicklung der Applikation, was relativ radikal und auch nicht unbedingt immer durchführbar ist. Option 2 und 3 sind sanfte Wege und empfehlen die Verwendung des JFXPanels in Swing (JavaFX in Swing) oder die Verwendung des neuen SwingNodes in JavaFX (Swing in JavaFX). So können nach und nach Komponenten ersetzt oder auch weiter verwendet werden. Die Krönung der Session war Stephens Lego-Duke. Dieser ist wie ein Segway durch den Raum gedüst und wurde sogar vom Publikum gesteuert. Super spannend.

Den Abschluss des Tages machte Adam Bien – wie ihr euch sicher denken könnt, gab es dabei viel Code und wenig Folien. Er begann seine Session mit einem schönen Zitat „It’s not work if you love it… Answer: Ok so I’m not working #java“. Das spiegelt vermutlich seine Einstellung zu JavaFX wieder und ich kann mich sehr gut damit identifizieren. Adam hat ein für mich sehr wichtiges Thema aufgegriffen: Wie kann ich eine JavaFX-Anwendung strukturieren? Sein Interesse liegt eben nicht beim Fancy GUI Stuff – er denkt lieber darüber nach, wie die technologischen Neuerungen wie Properties und FXML dazu genutzt werden können, Architekturen in JavaFX-Anwendungen möglichst schlank und sauber zu implementieren. Der Talk war überraschend für mich, da ich in den letzten vier Monaten viel über das Thema Architektur bei JavaFX-Anwendungen nachgedacht habe und wir anscheinend ähnliche Ideen entwickelt haben. Quintessenz zum Thema Architektur mit JavaFX ist, dass durch die Boardmittel von JavaFX eine Applikation viel effizienter strukturiert werden kann, als mit Swing. Adam stellt sogar die Notwendigkeit von Interfaces bei der Kommunikation zwischen View und Applikationsschicht in Frage, da die Kommunikation hauptsächlich über Databinding abgebildet werden kann. Auch griff Adam das Thema Reactive Programming auf und demonstrierte, wie man mit Databinding den Zustand der Oberfläche beeinflussen kann. Ein einfaches Beispiel: Wenn ein Textfeld mehr als fünf Zeichen hat, soll eine Warnung sichtbar gemacht werden, ansonsten soll die Warnung unsichtbar sein. Dies lässt sich in JavaFX durch die Bindings API mit einer Zeile Code realisieren. Ich habe mich sehr gefreut, dass die Session mit einer exemplarischen Implementierung einer Tabelle abgeschlossen hat. Während des Tages gab es zu dem Thema einige Fragen und ich denke, dass diese damit beantwortet werden konnten. Eine sehr gelungene und kurzweilige Session.

Zusammengefasst war es ein toller Tag. Ich habe das Gefühl, dass die Skepsis der Community, die vor einem Jahr noch existierte, langsam in Neugierde und ernsthaftes Interesse umschlägt. Ungefähr 40% der Zuhörer haben sich schon mit JavaFX auseinander gesetzt, 40% haben es schon probiert und die restlichen 20% benutzen JavaFX häufiger bis täglich. Eine sehr schöne Tendenz. Ich möchte jedoch hinzufügen, dass ich die statistische Erhebung formlos durch Handzeichen vorgenommen habe und nicht darauf festgenagelt werden möchte. Ich werde dennoch auf der JAX 2014 versuchen, die gleiche Umfrage zu veranstalten. Ich bin gespannt, wie das Verhältnis dann aussieht.

Geschrieben von
Alexander Casall
Kommentare

Schreibe einen Kommentar

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