© S&SMedia/Bianca Röder, © Iconic Bestiary/Shutterstock.com
JavaFX in einer neuen Ära mit GraalVM

In dubio pro Dukeo


Gluon veröffentlichte im September 2020 JavaFX 15 [1]. Die perfekte Gelegenheit, darüber zu sprechen, warum JavaFX [2] auf Desktop und Mobilgeräten so relevant ist. Nachfolgend wird das Cross-Kompilieren von Java-Anwendungen mit JavaFX für die Benutzeroberfläche, vom Backend bis zum Frontend, betrachtet. Oberstes Ziel jeder neuen Version von JavaFX ist es, die Abwärtskompatibilität sicherzustellen und mehr Software- und Hardwaretreiber zu unterstützen. Dabei steht Plattformstabilität und deren Kompatibilität für Entwickler und Unternehmen im Vordergrund, die in ihren geschäftskritischen Anwendungen auf Java und JavaFX angewiesen sind. Die GraalVM in Verbindung mit JavaFX ermöglicht neue Wege der Codekompilierung vom Backend bis zum Frontend.

Beginnen wir mit einem realen Anwendungsfall: In einem GitHub-Beitrag zu OpenJFX [3] von John Neffenger findet sich ein interessanter Anwendungsfall. In den Release Notes zur Unterstützung für E-Paper-Displays auf i.MX-6-Geräten [4] beschriebt er die Installation von Ubuntu auf den E-Paper-Geräten Amazon Kindle und Rakuten Kobo. Eine Hürde bestand darin, die Entwicklung von Anwendungssoftware für E-Paper-Devices zu vereinfachen, die auch auf Desktopplattformen ausgeführt werden kann, ohne dass der Quellcode neu kompiliert oder geändert werden muss.

John suchte nach verschiedenen Lösungen, um das zu erreichen: Die Verwendung von Qt für Embedded Linux war keine Option, weil die Pläne zur Unterstützung von Qt-Embedded-Plattformen noch in einer frühen Phase sind. Flutter und Dart kamen ebenfalls nicht in Frage. Die Flutter-Community kommuniziert, dass Flutter auf dem Desktop oder bei Embedded-Geräten keine Priorität hat.

Schließlich gelang es John, mit Unterstützung der JavaFX-Community, Ubuntu, Java und JavaFX auf einem E-Reader zu installieren. Im Januar 2019 stellte er folgende JavaFX-Anfrage per GitHub OpenJFX Request: Geräteunterstützung mit elektrophoretischen Displays (E-Paper-Displays) mittels einer neuen Monocle-Plattform namens EPD. Nach einigen Projektänderungen wurde sein GitHub Pull Request angenommen. Somit ist JavaFX 13 die erste OpenJFX-Version mit Unterstützung für E-Paper. Daraus ergibt sich, dass jede JavaFX-Anwendung auf E-Paper-Displays funktioniert.

Eine weitere Schwierigkeit bestand darin, dass diese Displays inhärente Grenzen für Graustufen und Bildraten haben. Einige Anwendungen, die für LCD-Bildschirme geschrieben wurden, sind so möglicherweise nicht für sie geeignet.

John begann mit der Unterstützung solcher JavaFX-Klassen und Steuerelemente, die die Schwarz-Weiß-Animationsfunktionen des E-Papers mit Bildraten von bis zu acht Bildern pro Sekunde ermöglichen. In einem Folge-Request schlug John vor, die Unterstützung für E-Paper-Displays mit den Anwendungsprozessoren der i.MX-6-Serie hinzuzufügen. Diese Anforderung wurde in JavaFX 15 implementiert.

Der Anwendungsfall zeigt nicht nur, dass der Java-Communityprozess funktioniert, sondern auch, dass JavaFX ein Framework ist, mit dem eine Benutzeroberfläche für Anwendungen erstellt werden kann, die auf einem beliebigen Gerätetyp ausgeführt werden, sei es auf dem Desktop, mobilen Geräten oder Embedded-Systemen.

JavaFX auf beliebigen Gerätetypen

Die verschiedenen Implementierungen von JavaFX enthalten Komponenten, die für die gängigen Plattformen gemeinsam genutzt werden. Andere Komponenten sind plattformspezifisch. Im Embedded-Markt sind viele Kombinationen möglich, die unterschiedliche CPU-Architekturen, Betriebssysteme, GPUs und grafische Treiber umfassen. Das Erstellen von JavaFX Builds für jede mögliche Kombination kann schwierig sein. Zur Vereinfachung hat die Firma Gluon, verantwortlich für die Wartung und Freigabe von JavaFX, ein Werkzeug entwickelt, mit dem die Kunden benutzerdefinierte JavaFX 16 Early Access Builds erzeugen (Abb. 1). Das gilt für Linux-basierte Geräte mit einem ARM32- oder ARM64-Prozessor, wie sie zum Beispiel in einem Raspberry Pi verwendet werden. Mit den JavaFX 16 EA Builds können die Entwickler auf allen Embedded-Geräten experimentieren.

llamas_weigend_graalvmfx_1.tif_fmt1.jpgAbb. 1: Custom Builds für OpenJFX erstellen

John hat bei der Entwicklung von E-Reader-Anwendungen seine Klassendateien auf dem Desktop kompiliert und den Java-Bytecode auf der JVM seines Geräts ausgeführt. Das reicht jedoch fü...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang