L’environnement de développement d’applet Java appelé Processing (également P5 pour aller plus vite) nous a été souvent de grand secours pour des tests rapides avec Arduino ou pour des applications complètes comme l’interface de contrôle du robot Pobbypède ou le lecteur/enregistreur de chorégraphies de marionnettes.
Maintenant que nos robots sont équipés de cartes sous Linux, comme la Raspberry Pi, ce serait bien de pouvoir bénéficier de la simplicité des codes pour P5 sur cette cible, pour éviter de passer par des codes complexes en Shell ou en Python.
Il y a deux pistes :
– développer sur PC et exporter une applet Java dans un jar
– faire tourner l’environnement de développement intégré (IDE) sur la carte
La première est très simple : on a déjà réussi à installer Java (OpenJDK) sur la RPi et on compile et on exécute des programmes. Il y a une énorme astuce pour ne pas lancer l’environnement graphique demandé par les applets Processing, elle est décrite dans cet article.
La seconde est l’objet de cet article. Certains disent que ce n’est pas possible parce que Processing est téléchargeable pour Linux x86 alors que la Raspberry Pi est sur ARM. Comme d’habitude, il ne faut pas croire tout ce qu’on lit sur Internet.
Installation
Télécharger Processing depuis la Raspberry Pi n’est pas compliqué :
pi@raspberrypi:~$ wget http://processing.googlecode.com/files/processing-1.5.1-linux.tgz
--2012-07-06 21:38:56-- http://processing.googlecode.com/files/processing-1.5.1-linux.tgz
Resolving processing.googlecode.com... 173.194.67.82, 2a00:1450:400b:c00::52
Connecting to processing.googlecode.com|173.194.67.82|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 91230153 (87M) [application/x-gzip]
Saving to: `processing-1.5.1-linux.tgz'
Effectivement, on peut voir lors de la décompression que tout java vient en mode 386 :
pi@raspberrypi:~$ tar -xvzf processing*.tgz
...
processing-1.5.1/java/lib/i386/libdt_socket.so
processing-1.5.1/java/lib/i386/libmlib_image.so
processing-1.5.1/java/lib/i386/libunpack.so
processing-1.5.1/java/lib/i386/server/
processing-1.5.1/java/lib/i386/server/libjvm.so
processing-1.5.1/java/lib/i386/server/Xusage.txt
processing-1.5.1/java/lib/i386/server/libjsig.so
processing-1.5.1/java/lib/i386/libzip.so
processing-1.5.1/java/lib/i386/headless/
processing-1.5.1/java/lib/i386/headless/libmawt.so
processing-1.5.1/java/lib/i386/libjsoundalsa.so
processing-1.5.1/java/lib/i386/libj2pcsc.so
processing-1.5.1/java/lib/i386/libnpjp2.so
processing-1.5.1/java/lib/i386/libverify.so
processing-1.5.1/java/lib/i386/libjaas_unix.so
processing-1.5.1/java/lib/i386/libjavaplugin_nscp_gcc29.so
processing-1.5.1/java/lib/i386/libjdwp.so
processing-1.5.1/java/lib/i386/libinstrument.so
processing-1.5.1/java/lib/i386/libioser12.so
processing-1.5.1/java/lib/i386/libcmm.so
processing-1.5.1/java/lib/i386/client/
processing-1.5.1/java/lib/i386/client/libjvm.so
processing-1.5.1/java/lib/i386/client/classes.jsa
Mais comme on a déjà installé java, ce répertoire ne pas servir à grand chose, non ?
On le remplace donc par un lien symbolique vers le répertoire d’OpenJDK :
pi@raspberrypi:~$ cd processing-1.5.1
pi@raspberrypi:~/processing-1.5.1 $ rm -rf java
pi@raspberrypi:~/processing-1.5.1 $ ln -s /chemin/vers/openjdk java
Exécuter Processing comme IDE
Il faut lancer l’environnement graphique (startx) pour tester l’IDE Processing. Ce sera testé en atelier, car il ne s’agit pas de notre usage principal.
Exécuter un programme Java exporté depuis P5
Si vous développez sur un PC plus conventionnel que la RPi, vous pouvez exporter pour Linux votre application. Il y a quelques adaptations à faire selon ce que vous souhaitez utiliser comme ressources :
– pour utiliser la liaison série, il faut remplacer la bilbiothèque rxtx avec une version pour ARM
– pour lancer le programme sans écran, il faut utiliser un framebuffer virtuel
Bonne continuation sur Raspberry Pi et faites nous part de vos succès ou de vos échecs.