FOSDEM: Java auf dem Raspberry Pi

Der Raspberry Pi mit Java statt Python: Auf der FOSDEM 21 zeigt ein Entwickler der Java-Bibliothek "Pi4J" zum Ansteuern der GPIO-Pins seine Fortschritte.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 13 Beiträge

(Bild: FOSDEM)

Von
  • David Wolski

Wer in Java zu Hause ist, will meist auch die bisher gelernten Techniken verwenden – auch auf dem Raspberry Pi. Seit der Aktualisierung von Raspberry Pi OS auf den Stand von Debian 10 "Buster" ist das OpenJDK 11 in den Standard-Paketquellen verfügbar und im größeren Image sogar vorinstalliert. Auch das JavaFX-Framework für grafische Anwendungen ist aus fremden Quellen nachrüstbar, obwohl es in der OpenJDK 11 nicht mehr enthalten ist. Das alles wäre ohne Bibliothek zur Ansteuerung der GPIO-Pins des Raspberry Pi aber nicht komplett.

Frank Delporte, einer der Köpfe hinter der I/O-Bibliothek "Pi4J", die Anfang 2021 in einer aktualisierten Version 1.3 erschien, zeigte nun in einem Talk zur FOSDEM 21 die Möglichkeiten von Java-Programmierung auf den neueren Raspberry-Pi-Modellen. Außerdem ist eine neu geschriebene Version von Pi4J in der Mache, die auf veraltete Abhängigkeiten verzichtet und alte Probleme bei der GPIO-Nummerierung löst.

Zwar ist Python die von der Raspberry Pi Foundation empfohlene Sprache für Projekte mit der Platine. Denn sie stellt laut der Foundation einen Mittelweg zwischen guter Erlernbarkeit und Möglichkeiten für Fortgeschrittene dar. Und so gibt es mittlerweile Python-Bibliotheken für etliche HATs (Hardware Attached on Top) sowie für unzählige gut realisierbare Beispielprojekte zum Einsteig. Python ist aber nicht die einzige Sprache, die für Projekte mit der Platine infrage kommt. Schon seit der ersten Generation des Raspberry Pi wies die Foundation darauf hin, dass jede Sprache für eigene Projekte geeignet ist, die sich für die ARM-Architektur kompilieren lässt. Unter anderem auch Java, das von der Raspberry Pi Foundation keineswegs ignoriert wird.

Java-Anwendungen mit GUI auf dem Raspberry Pi realisieren: Frank Delporte zeigte auf seinen FOSDEM-Talk am Sonntag die Vorzüge von JavaFX und die Fortschritte an einer neuen I/O-Bibliothek.

(Bild: FOSDEM)

Und nach Meinung von Frank Delporte, einem langjährigen Java-Entwickler, wäre das Erlernen von Python-Feinheiten schlicht zu viel Aufwand für Bastel-Projekte. Ausschlaggebend war für Delporte die Programmierung eines Pong-Spiels, dessen Grafikausgabe ihm mit Python einfach nicht gelingen wollte. Und wozu sich quälen, wenn speziell diese Aufgabe mit Java und dem Framework JavaFX von den nicht gerade wenigen Java-Entwickler viel schneller gelöst ist?

Nach Delportes Ansicht gewinnt Java dank dem Veröffentlichungszyklus der OpenJDK von sechs Monaten auf dem Raspberry Pi und anderen Platinen an Attraktivität. Auch die Grafikausgabe per Direct Rendering Manager (DRM) sei mit aktuellen Ausgaben des JavaFX-Frameworks auf dem Raspberry Pi schnell geworden. Für erste, kleine Projekte empfiehlt er JavaFX aus der freien LibericaJDK von Bellsoft. Für anspruchsvollere Projekte gibt es OpenJFX für ARM im gleichen Veröffentlichungsrhythmus wie die OpenJDK von Gluon. Auf dem Raspberry Pi verlangt die Einrichtung von OpenJFX die manuelle Integration in eine IDE und ein paar Startparameter mehr, liefert dann aber die neuesten Features des Frameworks, das die Entwicklung von GUI-Anwendungen einfacher macht.

Der Raspberry Pi ist mit seinen GPIO-Pins weit mehr als ein Single-Board-Computer mit Linux-System. Die üblichen Elektronikprojekte involvieren die 40 Pins der Platine, um Sensoren, Dioden, Displays oder Breakout-Boards anzusprechen. An dieser Stelle ist Java mit Python noch nicht gleich auf, obwohl es mit Pi4J bereits eine Bibliothek gibt, die Java-Programmen die GPIO-Pins verfügbar macht. Delporte ist es in seinem Talk aber nicht schwergefallen die Nachteile von Pi4J aufzuzählen, denn die Version 2 ist bereits in der Entwicklung und sogar schon verwendbar. Nötig wurde diese Neuentwicklung, weil die Versionsserie 1.x wiederum auf der nicht mehr weiter gepflegten Bibliothek WiringPi für C/C++ aufbaut. Ein Ärgernis von WiringPi für Entwickler und Anwender ist außerdem eine eigenwillige Nummerierung der einzelnen GPIO-Pins, die vom gebräuchlichen Schema abweicht und immer wieder Verwirrung stiftet.

Deshalb ist Pi4J jetzt in der Neuentwicklung, welche auf der C-Bibliothek PiGpio aufbaut, die GPIO-Nummerierung angleicht und insgesamt seine Code-Basis durch ein anderes Plug-in-System verkleinert. So werden Module für Zusatzmodule und Code-Beispiele, die derzeit noch nicht ganz komplett sind, in ihre eigenen Projekte auf Github ausgelagert. Laut Frank Delporte ist das neue Pi4J unter der OpenJDK ab Version 11 schon einsetzbar, auch wenn die Bibliothek noch als experimentell gilt. Auch sind die Änderungen so umfangreich, dass es keine Kompatibilität der API mit Version 1.x geben kann. Die Projektwebseite liefert eine kurze Anleitung zum Einstieg mit Java-Beispielen, die auch den kurzweiligen FOSDEM-Talk ergänzten.

(tiw)