Suche
Kolumne

JavaFX Sixpack: Java 9 in e(fx)clipse, 1111 neue Icons und die Frage nach der Zukunft von JavaFX

Hartmut Schlosser

(c) Shutterstock / Steve Heap (modifiziert)

 

Willkommen zur zweiten Folge der Kolumne JavaFX Sixpack! Wieder geht es darum, sechs spannende Entwicklungen aus der JavaFX-Community vorzustellen. Neben Neuerungen bei den Projekten FontAwesomeFX, TilesFX und e(fx)clipse geht es dieses Mal auch um eine JavaFX-Standortbestimmung, bei der Ihr mitmachen könnt…

1.) Wo steht JavaFX?

Wird JavaFX der große Durchbruch als UI-Technologie gelingen? Diese Frage wird seit Jahren immer wieder gestellt – und findet je nach Erwartungshaltung der Fragenden unterschiedliche Antworten. Ich denke aber, dass die Frage zum jetzigen Zeitpunkt ziemlich klar beantwortet werden kann. Und zwar geht es um zwei Punkte:

Erstens: Oracles Entscheidung, JavaFX als Swing-Nachfolger zu positionieren, ist unumgänglich. Die Swing-Entwicklung läuft aus, JavaFX ist seit Java 7 offiziell im JDK enthalten und wird von Oracle bzw. einer starken Community sowohl im OpenJFX-Projekt als auch außerhalb in Form von Libraries und Frameworks weiterentwickelt.

Die Kolumne „JavaFX Sixpack“ erzählt genau diese Geschichte, und so ist z.B. auch Gluon Co-Founder Johan Vos zu verstehen, der jüngst twitterte:

Zweitens: Nun war Java aber bekanntlich nie wirklich eine ausgesprochene Frontend-Technologie und feierte seine Erfolge vor allem auf dem Server. Angesichts des aktuellen Trends hin zu JavaScript-UIs wird sich daran wohl auch nichts ändern. In unserer JAXenter-Jahresumfrage zeigte sich deutlich, dass das Interesse an reinen Java-UI-Technologien zugunsten von JavaScript zurückgeht:

So bewerteten die Umfrage-Teilnehmer die Relevanz verschiedener UI-Technologien in den Jahren 2016 und 2017:

Was im Vergleich auffällt, ist die Tatsache, dass alle drei Java-UI-Kits gegenüber JavaScript verloren haben: JavaFX, Swing und SWT.

Fazit: Die Nische von JavaFX als UI-Technologie für Java-basierte Desktop-, Mobile- und Webanwendungen ist gesichert. Den Siegeszug der JavaScript-UIs wird JavaFX indes nicht aufhalten.

Diese These wollen wir in den nächsten Folgen des JavaFX Sixpacks mit JavaFX-Entwicklern diskutieren. Vorab würde mich eure Meinung interessieren:  Seht Ihr das genauso oder habt Ihr andere Erfahrungen gemacht? Ich bin gespannt auf Eure Kommentare! Oder stimmt einfach hier im folgenden Quickvote mit ab:

Quickvote

Wird sich JavaFX durchsetzen?

  • JavaFX wird JavaScript kaum Konkurrenz machen können, sich aber im Java-Umfeld als Swing-Nachfolger eine breite Anwenderschaft sichern. (57%, 566 Votes)
  • JavaFX wird sich selbst im Java-Umfeld kaum gegen Swing durchsetzen können. (15%, 152 Votes)
  • JavaFX ist lediglich für eine kleine Zahl von Anwendungen interessant, die ausgefeilte Oberflächen benötigen. (15%, 145 Votes)
  • JavaFX wird sich als universal einsetzbare UI-Technologie als echte Alternative für JavaScript-Frontends etablieren. (10%, 104 Votes)
  • JavaFX wird eine Nische als UI-Technologie für Mobile-Anwendungen besetzen. (3%, 29 Votes)

View Results

Loading ... Loading ...

2.) JavaFX bei Eclipse: Java-9-Support

In Eclipse wird JavaFX durch das Projekt e(fx)clipse unterstützt, das sowohl JavaFX Tooling als auch eine Runtime für Eclipse und OSGi bereitstellt. Wie Projektleiter Tom Schindl nun auf seinem Blog mitteilt, arbeitet man im e(fx)clipse-Team derzeit fleißig an der Unterstützung für Java 9 – und eine erste Version mit Java-9-Support ist jetzt verfügbar!

Wie Tom beschreibt, ist der Java-9-Support für die Zukunft von e(fx)clipse zwar essentiell. Genauso wichtig sei es aber, die User nicht dazu zu zwingen, Java 9 zu verwenden. e(fx)clipse soll kompatibel sowohl zu Java 8 als auch zu Java 9 bleiben, sowohl für Eclipse 3.x als auch für Eclipse 4.x.

Noch ist einiges zu tun, damit der Java-9-Support in e(fx)clipse auch ohne Reflection Hacks läuft. Aber das kriegen die Entwickler sicherlich bald in den Griff. Der folgende Screenshot zeigt schon einmal eine Eclipse-4-Beispielanwendung, die vom neuen Java-9-Modul-System API Gebrauch macht:

 

3.) Neue Icons in FontAwesomeFX

Kennt Ihr Font Awesome? Das Open-Source-Projekt ist ursprünglich für Twitter Bootstrap entwickelt worden und stellt kostenlose Icons für Webdesigner bereit – von Buttons, Tabellen und Grids bis hin zu Steuerelementen für Formulare.

Im Projekt FontAwesomeFX geht es Jens Deters darum, dieses Icon-Set für JavaFX-Entwickler zugänglich zu machen. Und weil man nie genug Icons haben kann, werden in FontAwesomeFX noch viele zusätzliche Sets unterstützt, darunter:

 

In der aktuellen Version FontAwesomeFX 8.15 hinzugekommen sind zudem die Icons aus dem EmojiOne-Projekt: „The web’s first and only complete open source emoji set. It is 100% free and super easy to integrate.“

Das sieht dann zum Beispiel so aus:

Bildschirmfoto 2017-03-03 um 12.30.18

Oder so:

Bildschirmfoto 2017-03-03 um 12.30.29

 

Oder so:

Bildschirmfoto 2017-03-03 um 12.30.56

Oder….. naja, Ihr wisst schon!

Insgesamt sind 1111 neue EmojiOne Font Icons hinzugekommen, die auch vom aktualisierten FontAwesomeFX Glyphsbrowser unterstützt werden. Außerdem wartet das Projekt mit einem zusätzlichen IconView Constructor auf.

FontAwesomeFX 8.15 kann auf Bintray bezogen werden. Jede Menge Beispiele gibt’s auf GitHub: https://github.com/Jerady/fontawesomefx-examples

4.) JavaFX for Beginners

Wem Begriffe wie Scene Builder und fxml noch nicht in Fleisch und Blut übergegangen sind, sollte sich einmal das Einsteiger-Tutorial von Dan Newton anschauen. Dan führt hier Schritt für Schritt in die Entwicklung einer JavaFX-Anwendung ein, und zwar so, dass die grundlegenden Konzepte in einfach nachvollziebaren Code-Beispielen sichtbar werden.

Dan ist übrigens ein fleißiger Blogger und hat 2017 schon drei weitere lesenswerte Posts veröffentlicht:

5.) JavaFX wird reaktiv

Das zweite Major-Release hat das Projekt RxJavaFX verabschiedet. Worum handelt es sich dabei?

Beginnen wir zunächst bei RxJava. RxJava ist die Java-Implementierung der Reactive Extensions aus dem Netflix-Projekt ReactiveX – also eine Library für die Entwicklung asynchroner und Event-basierter Anwendungen nach dem Observer-Pattern.

Mehr zum Thema: Reaktiv in die Praxis: Reaktive Programmierung mit RxJava

Bei RxJavaFX handelt es sich nun um eine leichtgewichtige Bibliothek, die dabei hilft, JavaFX Events in RxJava Observables zu verwandeln. Auch die andere Konvertierungsrichtung von RxJava nach JavaFX wird beherrscht.

Die wichtigste Neuerung in RxJavaFX 2.0 besteht in der Unterstützung für die RxJava Version 2.0, in der die gesamte Codebasis auf die Reactive-Streams-Spezifikation angepasst wurde. Die Änderungen, die sich dadurch für RxJavaFX 2.0 ergeben, beschreibt Thomas Nield auf GitHub. Eine detaillierte Anleitung, wie man RxJava mit JavaFX verheiratet, liefert das kostenlose eBook Learning RxJava with JavaFX.

Für Kotlin-Entwickler stehen mit RxKotlinFX übrigens auch Kotlin-Erweiterungen von RxJavaFX bereit. Besonders gut sollen diese im Zusammenspiel mit dem TornadoFX-Projekt funktionieren, das wir im letzten JavaFX-Sixpack vorgestellt haben. Zur Erinnerung: Bei TornadoFX geht es ebenfalls um eine bessere Integration von JavaFX in Kotlin-Programme, wobei hier Dependency Injection, typsichere Builder, die asynchrone Task-Ausführung, ein REST-Client, ein MVC-ähnliches Programmiermodell sowie zahlreiche kleinere Verbesserungen der JavaFX-Plattform umgesetzt sind, die  anhand von Kotlins Erweiterungsfunktionen implementiert wurden.

6. Über Kacheln und Donuts

Ein weiteres spannendes Projekt ist TilesFX. Dabei handelt es sich um eine JavaFX Library, die Kontrollelemente in Kachelform bereit stellt. Die Kacheln können beliebig kombiniert werden und beispielsweise ein Dashboard zieren.

Entwickelt wird TilesFX von Gerrit Grunwald, der bereits das Projekt Medusa („JavaFX library for Gauges“) am Start hat und sich als Spezialist für optisch herausragende Messinstrument-Widgets bewiesen hat. Entsprechend professionell sehen die Kacheln des TilesFX-Projektes aus.

Ein Wermutstropfen hatte das Projekt bisher allerdings. Die Kacheln konnten nicht beliebig horizontal und vertikal skaliert werden, sodass in Dashboards unschöne Lücken aufklafften. Dem hat Gerrit nun in der Version 1.3.2 Abhilfe geschaffen. Eine komplett neue Skalierungsstrategie wurde implementiert, die es nun ermöglicht, die Elemente auf der x- und y-Achse auf die gewünschte Größe anzupassen.

Ein weiteres Goody hat uns Gerrit am vergangenen Wochenende geschenkt: Waren bisher die sogenannten Donut-Charts nicht in der Standard JavaFX Library vertreten, so stehen diese nun in TilesFX zur Verfügung.

Warum Donut-Chart? Ein Bild sagt mehr als 1000 Worte:

Title 2017-02-28 08-46-12

Mehr JavaFX

Die JavaFX-Community ist sehr aktiv und präsentiert regelmäßig neue Projekte, Libraries und Werkzeuge für die JavaFX-Entwicklung. Wer weitere Inspirationsquellen sucht, wird im Artikel 20 JavaFX-Anwendungen aus der Praxis: So schön kann ein Java UI sein! fündig. Über aktuelle Projekt-Updates und interessante Blogposts zu JavaFX informiert regelmäßig die Seite fxexperience.com.

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

Schreibe einen Kommentar

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