Oder wie JavaFX neue Sprachen entdeckt

Abschied von JavaFX Script

Andreas Schosser
Die Java API verstehen

Da es sowohl Argumente für die neue JavaFX 2.0 Java API, als auch für deklarative GUI-DSL APIs gibt, scheint eine flexible Verwendung der verschiedenen Ansätze sinnvoll. JavaFX 2.0 ermöglicht die Anbindung beliebiger JVM-basierter GUI-Sprachen an die neue Java API. Die Idee hierbei ist einfach und doch genial: Mit Hilfe DSL-fähiger Sprachen wird eine Möglichkeit geschaffen, eine eigene Grammatik zur deklarativen Beschreibung grafischer Oberflächen zu definieren. Eine so formulierte GUI-DSL kann dann wiederum zur Steuerung der JavaFX 2.0 API bzw. darin enthaltener Methoden genutzt werden.

Durch die gemeinsame Verwendung des JavaFX Bytecodes wird es bereits in naher Zukunft möglich sein, mit JVM-Sprachen wie Groovy oder Scala eine neue, deklarative GUI-Sprache zu erstellen, die im Aufbau und der Struktur an JavaFX Script erinnern könnte (siehe auch [5]). Zu beachten ist aber, dass die Java API selbst keinen deklarativen Charakter hat. Erst durch eine geschickte Kombination mit anderen, JVM-basierten Sprachen wird eine deklarative GUI-Beschreibungssprache möglich.

Der Abschied von JavaFX Script

Die tiefgreifenden Veränderungen in der JavaFX API haben zwangsläufig Auswirkungen auf die bisherige Bedeutung von JavaFX Script. Da Oracle offensichtlich nicht beabsichtigt, die Entwicklung von JavaFX Script weiter voranzutreiben und die Umsetzung möglicher deklarativer GUI-DSLs eher der Open Source Community überlässt, scheint die Zeit von JavaFX Script allmählich abzulaufen.

Obwohl JavaFX Script als proprietäre Sprache hin und wieder umstritten war, kommt der schleichende Abschied doch etwas überraschend. Auch wenn einige Vorteile, wie die vereinfachte Platzierung von Schaltflächen, in Zukunft auch über andere DSLs möglich sein werden, gehen mit JavaFX Script einige interessante Chancen verloren. So wird zum Beispiel die Entwicklung der JavaFX Production Suite, mit der die Zusammenarbeit zwischen Software-Entwicklung und Grafik-Design gefördert wurde (vgl. [4]), durch den Wechsel der API-Sprache sicher deutlich zurückgeworfen.

Visage als Thronfolger

Im Herbst 2010 wurde unter der Schirmherrschaft von JavaFX Experte Stephen Chin ein neues Open-Source-Projekt mit Namen „Visage“ ins Leben gerufen. Visage ist eine DSL zur deklarativen Beschreibung grafischer Oberflächen und wird inoffiziell als Nachfolger von JavaFX Script gehandelt. Die letzten auf der Visage-Website [6] verfügbaren Download-Versionen basieren zwar noch auf JavaFX 1.3.1, für die nahe Zukunft wird jedoch eine vollständige Integration mit der JavaFX 2.0 Java API angestrebt [5].

Ob sich Visage allerdings auch mittelfristig als favorisierte GUI-Sprache für JavaFX-Anwendungen behaupten kann, bleibt abzuwarten. Durch die Bereitstellung einer aus verschiedenen JVM-Sprachen heraus nutzbaren JavaFX-Schnittstelle könnten hier recht schnell auch interessante Alternativen entstehen. Gleicht man außerdem den Sprachumfang von Visage mit den Möglichkeiten entsprechender DSL-Technologien wie Scala oder Myra ab, so werden Überschneidungen und Verwandtschaften unter den Sprachen deutlich (vgl. [5]).

Fazit

Mit dem Umstieg auf eine native Java API könnte JavaFX in Kürze zu einem würdigen Nachfolger der nach wie vor weit verbreiteten Swing-Bibliotheken werden. Anders als Swing unterstützt JavaFX 2.0 alle wichtigen Bestandteile moderner GUI-Entwicklung wie DataBindings, Pseudo-Properties, Bitmap-Effekte und Animationen über Timelines.

Durch den Wechsel zu Java wird aber die Zukunft von JavaFX Script zunehmend ungewiss. Anstelle einer von Oracle geförderten und allgemein gültigen, deklarativen GUI-Sprache, tritt die Möglichkeit neue, JVM-basierte DSLs zur Nutzung der JavaFX API anzubinden. Ein vielversprechender Kandidat, der möglicherweise die Nachfolge von JavaFX Script antreten könnte, scheint Visage zu sein. Letztlich ist aber noch nicht geklärt, ob und wenn ja, welche DSL-Sprache in Zukunft die Entwicklung von JavaFX-Oberflächen maßgeblich prägen wird.

Trotz der Ungewissheit bezüglich des Erbes von JavaFX Script verspricht JavaFX 2.0 einige weitreichende Änderungen: Mit der neuen Java API scheint die Zeit für alle Swing-Entwickler gekommen zu sein, die schon lange auf eine neue GUI-Technologie gewartet haben aber bisher vor deklarativen DSLs wie JavaFX Script zurückgeschreckt sind. Die JavaFX 2.0 API wird erfahrenen Swing-Entwicklern einen leichten Einstieg in eine vollkommen neue GUI-Technologie ermöglichen.

Für all diejenigen allerdings, die sich inzwischen mit JavaFX Script angefreundet und sich an eine neue Art der Oberflächen-Entwicklung gewöhnt haben, gilt es vorerst noch, Geduld zu bewahren. Neue deklarative APIs werden kommen, möglicherweise aber erst mit deutlicher Verzögerung.

Andreas Schosser arbeitet als Expert Consultant mit Schwerpunkt auf agilen Methoden und grafischen Oberflächen bei der COINOR AG. In verschiedenen Projekten sammelte er breites Wissen über unterschiedliche GUI-Technologien wie wxWidgets, WPF, SWT, Swing und JavaFX.

Geschrieben von
Andreas Schosser
Kommentare

Schreibe einen Kommentar

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