© Liashko/Shutterstock.com
JavaFX auf dem Raspberry Pi

In Berührung kommen


Seit Herbst 2015 bietet die Raspberry Pi Foundation auch ein Touchdisplay für den Pi an [1]. Damit ist der Pi offiziell nicht mehr nur auf die Rolle einer im Hintergrund arbeitenden Kontroll- und Steuereinheit beschränkt, sondern kann eigenständig ein User Interface anbieten. In diesem Artikel möchten wir einen Einstieg in die JavaFX-Entwicklung für den Raspberry Pi bieten und zeigen, wie damit Touchoberflächen entwickelt werden können.

Bevor wir mit der Entwicklung beginnen können, muss der Raspberry Pi noch eingerichtet werden. Als Startpunkt gehen wir hier von einem frisch installierten Rasp­bian aus, dem Standardbetriebssystem für den Pi. Bei Raspbian ist in der aktuellen Version bereits eine Installation von Java vorhanden. Sollte es sich bei dem eigenen Raspberry Pi um eine ältere Distribution handeln, lässt sich die Java-Version für ARM-Prozessoren aber auch nachträglich von der Oracle-Homepage herunterladen und auf dem Pi entpacken und installieren. Das JavaFX-Framework ist bei der Desktopvariante des JDKs und der JRE bereits automatisch enthalten. Daher können JavaFX-Anwendungen auf dem Desktop auch ohne Umwege mit einer installierten Oracle-JRE ausgeführt werden. Für die ARM-Plattform ist das allerdings nicht mehr der Fall. Oracle bietet zwar ein JDK speziell für die ARM-Plattform an, dieses enthält in der aktuellen Version aber nicht die JavaFX-Runtime. Daher müssen wir die JavaFX-Umgebung zunächst auf dem Raspberry Pi nachinstallieren.

Da der Quellcode von JavaFX als Teil des OpenJDK-Projekts frei verfügbar ist und auch der für ARM notwendige Code nach wie vor weiter gepflegt wird, könnte sich jeder die notwendige Laufzeitumgebung aus dem Quellcode heraus selbst bauen. Einfacher ist es allerdings, eine bereits vorbereitete Version zu benutzen. Die Firma Gluon, die auch die Entwicklung von JavaFX für mobile Plattformen wie Android und iOS vorantreibt, stellt auch ein JavaFX-Bundle für die ARM-Plattform zum Download bereit. Diese kann unter [3] heruntergeladen und unter /home/pi entpackt werden.

Vorausgesetzte Grundlagen

Um unsere Beispiele verstehen und starten zu können, sind grundsätzliche Maven-Kenntnisse und der vertraute Umgang mit dem Raspberry Pi empfehlenswert, und auch die Kenntnis des einen oder anderen Linux-Kommandos kann nicht schaden. Der komplette Quellcode zu allen Beispielprojekten ist auf GitHub [2] zu finden.

IP-Adresse setzen

Damit wir später Daten auf den Pi verschieben können, sollten sich sowohl der Pi als auch der Entwicklungsrechner im gleichen Netzwerk befinden. Dies lässt sich mit einem (W)LAN- oder einem USB-to-Ethernet-Adapter realisieren. Der Pi bekommt zudem eine statische IP-Adresse zugewiesen, damit der Rechner diesen immer findet, und die IP-Adresse nicht jedes Mal neu in der Maven-Konfiguration eingetragen werden muss. Des Weiteren sollte das Setzen der IP-Adresse in ein eigenes Skript ausgelagert werden, da mit jedem Pi-Systemstart diese Einstellung verlorengeht. Sobald dieses erstellt wurde, öffnen wir die .bashrc-Datei mit dem Texteditor nano und rufen unser Skript am Ende auf.

// Skript erstellen & öffnen sudo nano /etc/init.d/superscript // IP setzen & schließen sudo ifconfig eth0 169.254.0.92 // Skript ausführbar machen sudo chmod 755 /etc/init.d/superscript // bashrc öffnen und ans Dateiende springen sudo nano .bashrc // superscript eintragen & System neu starten /etc/init.d/superscript 

Display drehen

Damit der Touchscreen mit dem montierten Raspberry Pi auf der Rückfläche optisch etwas schöner aussieht und nicht im nackten Zustand herumsteht, empfiehlt sich ein Gehäuse. Praktisch dabei ist, dass die Pi-Gehäuse mit einem Ständer ausgestattet sind und somit wie ein Monitor verwendet werden können. Oft sind jedoch die Richtungen für das Gehäuse vorgegeben, und so kann es sein, dass das Display auf einmal auf dem Kopf steht. Um diesen Zustand zu ändern, müssen wir die config.txt mit dem Texteditor anpassen und um den Eintrag lcd_rotate=2 ergänzen. Die Anzeige wird dabei um 180° gedreht und stimmt mit der Gehäuserichtung überein.

JavaFX-Support für die ARM-Plattform

In letzter Zeit gab es einige Verwirrung bezüglich der Unterstützung von JavaFX auf der ARM-Plattform seitens Oracle. Ausgelöst wurde dies durch das Java-Update auf Version 8u33, bei dem der offizielle Support für JavaFX aus Oracles Java SE Embedded Bundle entfernt wurde. Zu den Hintergründen dieser Entscheidung hat sich Oracle mit etwas Verzögerung geäußert [4]: Da die ARM-Plattform nicht einheitlich standardisiert ist, sondern eine e...

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