Möchten Sie Java auf der Raspberry Pi laufen lassen? Frank Delporte aus Belgien kann Ihnen dabei helfen. Sein neues Buch „Getting Started with Java on the Raspberry Pi“ ist eine ausgezeichnete Ressource sowohl für professionelle Programmierer als auch für Maker, die experimentieren und lernen wollen. In diesem Interview spricht Delporte mit C. J. Abate über die Vorteile der Kombination von Java und Raspberry Pi sowie über seine Erfahrungen als Programmierer.

Programmieren, Entwickeln und Schreiben

Abate: Herzlichen Glückwunsch zur Veröffentlichung Ihres Buches Getting Started with Java on the Raspberry Pi (Elektor 2020). Ich werde Sie gleich mehr zum Buch fragen. Aber zuerst: Sind Sie zufrieden, wo Sie jetzt das ganze Schreiben und Redigieren hinter sich haben? Oder gefällt Ihnen diese Art von Arbeit?
 
Delporte: Ich schreibe wirklich gerne, wie Sie auch auf meinem Blog sehen können. Aber ich muss zugeben, dass so ein Buch eine Menge Arbeit ist. Man muss nicht nur schreiben, sondern auch alle erforderlichen Informationen sammeln, recherchieren, Experimente durchführen, Schaltungen zeichnen, Andere interviewen, redigieren usw. Aber das Gefühl, ein eigenes, fertig gedrucktes Buch aus Papier in der Hand zu halten, ist einmalig!. Es war die ganze harte Arbeit wirklich wert.
 
Abate: Apropos Schreib- und Redaktionsarbeit: Im Mai 2020 wurde Ihr Heimarbeitsplatz bzw. Ihr Elektronik-Labor auf unserer englischen Website vorgestellt. Arbeiten Sie aufgrund der COVID-19-Situation immer noch von zu Hause aus?
 
Delporte: Die Situation hat sich mehr oder weniger wieder normalisiert. Ich arbeite immer noch von zu Hause aus, aber nicht wirklich wegen Covid-19. Auf der Arbeit können wir genug Abstand halten, aber von Zeit zu Zeit ist es immer noch besser, zu Hause zu arbeiten, damit man sich auf eine bestimmte Aufgabe besser konzentrieren kann.

 
Getting Started with Java on Raspberry Pi
Das neue Buch von Delporte.
Abate: Sie haben einen interessanten Background, der die Arbeit als Software-Entwickler, technischer Leiter, Autor und Video-Produzent umfasst. Erzählen Sie uns bitte mehr darüber.
 
Delporte: Ich habe mich schon immer für Technik interessiert und dafür, wie Dinge funktionieren. Ich war die Art von Kind, das alles auseinander nahmen: jede Kaffeemaschine und jedes Radio oder welches Gerät auch immer kaputt war. Ich konnte nicht alle reparieren, aber ich habe jedes Mal etwas Neues gelernt! Als Teenager hatte ich eine eigene Radiosendung als DJ bei einem lokalen Sender, was mir die Möglichkeit gab, mehr mit Elektronik zu experimentieren.
 
Deshalb beschloss ich, an einer (technischen) Filmhochschule zu studieren. Dort lernte ich, wie Filme, Radio und Fernsehen produziert werden, wie man Kameras kalibriert und alle Geräte und Aufnahmen miteinander verbindet. Nach meinem Abschluss hat sich die Videoproduktion mit der Einführung des Computer-Schnitts stark verändert, und so bin ich wieder ins Programmieren eingestiegen, als Kunden ihr Firmenvideo auf CD-ROM und im Internet haben wollten.
 
Abate: In Ihrer Biographie erwähnen Sie den Commodore 64. Erinnern Sie sich an einige Ihrer frühen Erfahrungen mit ihm?
 
Delporte: Ich hatte nur ein Spiel auf meinem C64, weil ich mich immer mehr für das Programmieren interessiert habe. Dank Elektor fand ich ein Buch (muss um 1987 herum sein) mit einer Elektronikplatine mit acht Relais, die man mit dem C64 und Basic steuern konnte. Ich benutzte es, um meinen Lego-Zug zu steuern und benutzte Magnetschalter, um die Position dieses Zuges via Joystick-Ports zu erkennen. Das war das erste Mal, dass es mir gelang, Software und Hardware zu kombinieren. Heutzutage wäre ein solches Projekt mit Arduino oder einem Raspberry Pi und den vielen tollen Erweiterungsplatinen viel einfacher (und billiger).
 
Abate: Was waren Ihre beruflichen Ziele 1994, als Sie das NARAFI (Nationaal Radio en Filmtechnisch Instituut) in Belgien verließen?
 
Delporte: Mein erster Job war Videoschnitt bei einem lokalen Fernsehsender. Nach einigen Jahren begann ich, das als Freiberufler anzubieten. Ich hatte nie ein klares Karriereziel, sondern rollte von Job zu Job und lernte dabei neue Dinge. So wandelte ich mich vom Videoproduzent zum Multimedia-Entwickler und erstellte Firmenpräsentationen auf DVD und CD-ROM. Als das Internet zu wachsen begann, wechselte ich zur Web-Entwicklung, da meine Kunden die gleichen Informationen auf Webseiten mit einem Content-Management-System teilen wollten. Und mit diesem Wissen wuchs ich in die Java-Entwicklung hinein und übernahm die technische Leitung bei der Produktentwicklung mit dieser Technologie.
 

Unterricht im Programmieren

Abate: Wann haben Sie begonnen, CoderDojo-Sitzungen zu organisieren? Und welche Art von Kursen unterrichten Sie?
 
Delporte: In jedem Unternehmen, in dem ich gearbeitet habe, war es eine Herausforderung, Kollegen mit gutem technischen Know-How zu finden. Das Ingenieurwesen (und auf jeden Fall die IT) ist immer noch ein sehr männliches Gebiet. Für mich ist das Ingenieurwesen pure Magie. Mit ein paar Zeilen Code oder ein paar elektronischen Bauteilen kann man „Sachen“ bauen. Ich fragte mich, warum Kinder - die ja gerne bauen und experimentieren - plötzlich damit aufhören und kein Studium wählen, wo sie weiterhin „Dinge bauen“ können.
 
CoderDojo ist ein kostenloser Club, in dem Kinder von 7 bis 18 Jahren freiwillig lernen, mit „digitalem Zeug“ zu experimentieren. Wir verwenden das blockbasierte Scratch zur Programmierung, bauen Welten in Minecraft mit JavaScript, steuern Elektronik mit Arduino, bauen Roboter mit Lego und vieles mehr. Im Jahr 2013 habe ich einen solchen Club in den Orten Ieper und Roeselare gegründet und leite immer noch den in Ieper - außer jetzt zu Corona-Zeiten, da es schwierig ist, solche informellen Clubs zu organisieren, wenn man einen Sicherheitsabstand einhalten muss und sich nicht mit verschiedenen Leuten um einen PC versammeln kann. Dank des CoderDojo und anderer STEM-Initiativen (Science, Technology, Engineering and Mathematics) sehen wir einen langsamen Anstieg der Zahl der Ingenieurstudenten – übrigens Jungen und Mädchen!
 
Abate: An welchem Punkt haben Sie erkannt: „Hey, ich bin ein guter Ausbilder/Lehrer, und ich denke, ich kann anderen helfen, die sich für Java interessieren“? Oder hat Sie ein Freund oder Kollege in diese Richtung geführt?
 
Delporte: Ich mag es, Dinge zu erklären und glaube fest an „Lernen durch Lehren“. Das ist es, was ich im CoderDojo mit Kindern, aber auch in meinem Blog und bei der Arbeit tue. Um ein Thema vollständig zu verstehen, muss man in der Lage sein, es zu erklären - oder umgekehrt. Die Artikel, die ich für meinen Blog schreibe, sind immer das Ergebnis von etwas, das ich ausprobieren möchte, aber (noch) nicht wirklich weiß, wie ich es machen soll. Während des Ausprobierens schreibe ich auf, welche Schritte ich gemacht habe und was funktioniert hat und was nicht. So lerne ich neue Dinge und kann dieses Wissen mit anderen teilen.
 

Ein Schwerpunkt auf Java

Abate: Erzählen Sie uns bitte von Ihren Erfahrungen mit Java. Haben Sie es zuerst aus Neugierde gelernt? Oder war es für einen Kurs? Oder für die Arbeit?
 
Delporte: Als ich begann, Multimedia-Anwendungen zu entwickeln, musste ich ActionScript lernen (und davor sogar Lingo). Später wechselte ich zu C# und SQL für die Webanwendungen. Wie Sie jetzt vielleicht schon wissen, lerne ich durch Experimentieren. Aber auch durch das Lesen von Büchern und kurzen (Online-) Kursen. Als ich 2010 bei Televic Rail anfing, schloss ich mich einem Team an, das bereits Java benutzte. Der Wechsel von C# zu Java war sehr einfach. Nach all diesen Jahren der Programmierung muss ich sagen, dass ich am meisten von Kollegen lerne! Das Teilen der Arbeit in Präsentationen mit anderen, den Code mit Pull-Anfragen zu verbessern, Kommentare zu akzeptieren, wie man Dinge besser machen kann, sind die besten Möglichkeiten, von anderen zu lernen.
 
Seit ich angefangen habe, mit Java auf Raspberry Pi zu experimentieren, habe ich mich an einigen Open-Source-Projekten und -Diskussionen beteiligt, und das ist eine völlig neue Welt für mich, in der ich viele sehr kluge Leute treffe, die auch bereit sind, ihr Wissen und ihre Erfahrung zu teilen. Noch immer bin ich jeden Tag aufs Neue erstaunt, was man von diesen Projekten und Menschen lernen kann. Man muss keinen Code beisteuern, aber man kann sich auch an einem solchen Projekt beteiligen, indem man Pull-Anfragen prüft, beim Testen hilft oder den Code dokumentiert.

Abate: Haben Sie etwas gegen Python oder gegen C? Ich vermute: eher nicht, aber ich muss Sie das fragen.
 
Delporte: Definitiv nicht! Ich hasse Hasser. Es gibt keine schlechten Programmiersprachen! Ich habe einmal ein Zitat gelesen, in dem es heißt: „Das beste Werkzeug für die Arbeit ist das, das man am besten kennt“. In meinem Fall ist das Java und JavaFX, wenn ich eine Anwendung mit einer schönen Benutzeroberfläche erstellen will. In meinem Buch habe ich aber auch Python verwendet, um eine LED-Zahlenanzeige und einen Arduino mit LED-Streifen zu steuern.
 
Für jedes Projekt muss man eine Entscheidung treffen, was das beste Werkzeug, die beste Programmiersprache oder das beste Framework ist. Und wenn man sich entschieden hat, legt man los! Vielleicht merkt man erst später, dass man nicht die beste Wahl getroffen hat, aber zumindest hat man dabei dann neue Dinge gelernt.

 
LED strip
Die gesteuerte LED-Leiste.

Arbeiten mit Java auf dem Raspberry Pi

Abate: Sie bloggen seit 2007 über Technologie. Ihr erster Beitrag zum Raspberry Pi war wohl „Pong on a Raspberry Pi“ (Dezember 2017). Können Sie uns etwas über Ihre ersten Erfahrungen und Projekte mit RPi berichten? Wann haben Sie damit angefangen?
 
Delporte: Als ich mit CoderDojo begann, gab es einige Trainer, die bereits Erfahrung mit Arduino und Raspberry Pi hatten. Sie brachten ihre Bausätze mit in den Club, und ich war wirklich erstaunt über die Leistungsfähigkeit dieser preiswerten Boards und was man damit in Kombination mit kleinen elektronischen Bauteilen erreichen kann.
 
Ich habe schon seit einiger Zeit gebloggt, aber mein erstes „öffentliches“ Raspberry Pi-Projekt war tatsächlich dieses Pong-Spiel, das wir bei einigen Aktivitäten der Schule meines Sohnes verwendeten. Für die Benutzeroberfläche verwendete ich Python; aber ich muss ehrlich sein, ich habe es nicht sehr gerne programmiert. Für diese Art von Anwendung bevorzuge ich wirklich JavaFX, für das es sogar ein sehr schönes Gaming-Framework gibt: FXGL.
 
Abate: Haben Sie irgendwelche RPi-basierten Designs oder Anwendungen, die zu Hause oder in Ihrem Arbeitsbereich laufen?
 
Delporte: Ich habe mit Java auf der Raspberry Pi begonnen, um für meinen Sohn einen Schlagzeug-Controller zu bauen. Es handelt sich dabei um eine Touchscreen-Benutzeroberfläche zur Steuerung mehrerer Lichter mit einer Relaiskarte und LED-Streifen, die von Arduino gesteuert werden.

 
Drum booth controller
Installiertes System.
Auf diese Weise habe ich gelernt, serielle Kommunikation zwischen den beiden Platinen und I²C zur Steuerung der Relais zu nutzen. In meinem Buch habe ich dies weiter ausgebaut und eine Mosquitto-Warteschlange verwendet, um Nachrichten zwischen weiteren Platinen und PCs auszutauschen. 
 
Abate: Woran arbeiten Sie zurzeit? An neuen Projekten, Programmen oder Büchern?
 
Delporte: Ich experimentiere natürlich weiter mit Java auf dem Raspberry Pi. Ich habe weitere Blog-Beiträge zu diesem Thema geschrieben und auch mit anderen Java-Technologien (Quarkus, Spring, GraalVM) und 64-Bit-Betriebssystemen auf dem Board experimentiert.
 
Ich habe mich auch dem Pi4J-Team angeschlossen. Pi4J ist ein Framework und eine Bibliothek, um Java-Anwendungen mit den vollen Möglichkeiten der RPi-GPIOs zu kombinieren. Dieses Projekt wurde von Robert Savage ins Leben gerufen. Er war auf der Suche nach zusätzlichen Teammitgliedern, um dieses Projekt auf eine neue Version zu bringen, die Java 11+ und RPi 4 mit Java-Modulen und einer leicht erweiterbaren Architektur voll unterstützt. Ich bin sehr gespannt auf die zweite Version dieses Frameworks, die wir hoffentlich bald veröffentlichen werden.
 
Abate: Zurück zum Buch „Getting Started with Java on the Raspberry Pi“. Warum haben Sie es geschrieben?
 
Delporte: Als ich mit dem Schlagzeug-Projekt begann, musste ich herausfinden, wie man Java auf dem Raspberry Pi benutzt, wie man die richtige Version von JavaFX installiert, wie man GPIOs und einen Arduino steuert, usw. Zu diesem Zeitpunkt schrieb ich meinen ersten Artikel, der in MagPi veröffentlicht wurde (Juli 2019, niederländische und französische Ausgabe).
 
Elektor kontaktierte mich und fragte, ob dies ein Thema für ein Buches sein könnte. Da ich kein aktuelles Buch zu diesem Thema finden konnte und Java in den letzten Jahren einige große Veränderungen erfahren hat, packte mich diese Frage richtig, und am nächsten Tag begann ich mit dem Schreiben. Ich brauchte mehr als sechs Monate und viele Abende und Nächte, aber ich hatte wirklich Spaß beim Schreiben und Experimentieren. Und natürlich hoffe ich, dass es genauso viel Spaß macht, das Buch zu lesen und die Projekte auszuprobieren, die ich darin aufgenommen habe.
 
Abate: Haben Sie irgendwelche Ratschläge für Ingenieure oder Maker, die darüber nachdenken, Java für ihre auf RPi basierenden Designs zu verwenden?
 
Delporte: Probieren Sie es aus, wirklich! Java ist immer noch eine der Top-Programmiersprachen. Ob Sie ein erfahrener Java-Entwickler sind oder neu anfangen – es gibt eine Menge zu lernen und zu experimentieren, wenn Sie Java mit einer RPi und elektronischen Bauteilen kombinieren.
 
Die Beispiele in meinem Buch verwenden sehr billige Teile wie LEDs, Taster, LCDs, LED-Displays usw., so dass Sie diese vielleicht sowieso schon haben (oder in jedem Starter-Kit finden). Die Beispiele aus dem Buch können Sie zu Ihrem Traumprojekt kombinieren. Der Schlagzeug-Controller, den ich für meinen Sohn gebaut habe, ist eine Kombination aus mehreren dieser Beispiele.

 
Drum booth LED strips
Regenbogeneffekt mit LED-Streifen.
Abate: Wie ist das Feedback bisher ausgefallen?
 
Delporte: Obwohl Python eine Standardsprache für RPi ist (daher kommt schließlich das „Pi“) und einige immer noch glauben, dass Python die einzig richtige Wahl ist, habe ich eine Menge positives Feedback und Fragen zu diesem Thema erhalten. Ich konnte darüber sogar einen Beitrag für Oracles Java Magazine schreiben, das viele Leser angesprochen hat! Es besteht ein klares Interesse an diesem Thema, und die zukünftige neue Generation von Pi4J wird es noch einfacher machen, leistungsfähige Anwendungen zu erstellen.
 
Abate: Gibt es eine Programmiersprache, die Sie nicht kennen, die Sie aber lernen möchten? Gibt es eine Hardware, die Sie auszuprobieren gedenken?
 
Delporte: Java ist nicht nur eine Programmiersprache, sondern auch eine virtuelle Maschine, die den Java-Code ausführt. Auf derselben VM können Sie auch Scala, Kotlin und viele andere Sprachen ausführen. Es gibt also noch viel zu erforschen in dieser Welt. Für das Pi4J-Projekt möchte ich den Beispielcode und die Dokumentations-Webseite erweitern, so dass ich mehrere kleine Hardware-Beispiele einrichten und selbst eine Menge neues Material lernen muss.
 
Erfolgreiches Programmieren
Abate: Lassen Sie uns mit Ihrem größten Erfolg als Ingenieur oder Programmierer abschließen. Gibt es ein bestimmtes Projekt (Software oder Hardware), das herausragt? Was war an diesem Projekt schwierig? Was haben Sie gelernt?
 
Delporte: In meinem Job bei Televic verwenden wir eine Kombination aus Java und Embedded Programming, um mehrere Server und Datenquellen miteinander zu verbinden und Fahrgastinformationen in Echtzeit auf die Bildschirme ganzer Zugverbände zu bringen. Es ist sehr befriedigend, diese technische Herausforderung zu lösen und schließlich durch einen fahrenden Zug mit 100 Bildschirmen zu gehen, auf denen die abfahrenden Züge an der nächsten Station mit Echtzeit-Verspätungen und Bahnsteigwechseln angezeigt werden.
 
Der Datenfluss, der für die Übertragung all dieser Daten über unzuverlässige drahtlose Verbindungen erforderlich (Mobilfunk-Signale sind nicht wirklich für schnelle Fahrzeuge ausgelegt), ist ein wahres Meisterwerk, auf das ich sehr stolz bin, dass wir es mit einem kleinen Team realisieren konnten. Aber ich bin ebenso beeindruckt von den Kindern im CoderDojo, die es schaffen, ihr erstes Flappy-Bird-Spiel in Scratch zu konstruieren oder mit Arduino eine LED blinken zu lassen!