Même si nous n’utilisons pas d’environnement graphique sur Raspberry Pi pour l’instant, nous pouvons avoir besoin de Java pour lancer des programmes tels ceux développés avec Processing ou nos propres applets de contrôle d’une Arduino via Firmata.
Il faut donc installer Java car la distribution GNU/Linux actuellement disponible (en Archlinux ou Debian, les deux distros utilisées au club) ne l’embarque pas par défaut.
Un petit rappel : alors que 90% des PC Windows utilisent une version d’exécution (runtime JRE) ou de compilation (development JDK) de chez Sun ou maintenant Oracle, il existe d’autres implémentations pour Linux.
Après avoir lu plusieurs articles faisant état de problèmes avec le JDK Oracle sur ARM (et bien qu’il y ait beaucoup d’erreurs dites sur les forums et les blogs), le choix s’est porté sur OpenJDK.
Installation
L’installation est très simple sur Debian (version squeeze sur la RPi) :
Tout d’abord on vérifie que java n’est pas déjà présent :
pi@raspberrypi:~$ java
-bash: java: command not found
Puis on installe le paquet :
pi@raspberrypi:~$ sudo apt-get install openjdk-6-jdk
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
ca-certificates ca-certificates-java icedtea-6-jre-cacao java-common
libaccess-bridge-java libaccess-bridge-java-jni libgif4 libice-dev
libpthread-stubs0 libpthread-stubs0-dev libsm-dev libx11-dev libxau-dev
libxcb1-dev libxdmcp-dev libxt-dev openjdk-6-jre openjdk-6-jre-headless
openjdk-6-jre-lib openssl ttf-dejavu-extra tzdata tzdata-java
x11proto-core-dev x11proto-input-dev x11proto-kb-dev xtrans-dev
Suggested packages:
default-jre equivs openjdk-6-demo openjdk-6-source visualvm icedtea6-plugin
libnss-mdns sun-java6-fonts ttf-baekmuk ttf-unfonts ttf-unfonts-core
ttf-sazanami-gothic ttf-kochi-gothic ttf-sazanami-mincho ttf-kochi-mincho
ttf-wqy-microhei ttf-wqy-zenhei ttf-indic-fonts
The following NEW packages will be installed:
ca-certificates ca-certificates-java icedtea-6-jre-cacao java-common
libaccess-bridge-java libaccess-bridge-java-jni libgif4 libice-dev
libpthread-stubs0 libpthread-stubs0-dev libsm-dev libx11-dev libxau-dev
libxcb1-dev libxdmcp-dev libxt-dev openjdk-6-jdk openjdk-6-jre
openjdk-6-jre-headless openjdk-6-jre-lib openssl ttf-dejavu-extra
tzdata-java x11proto-core-dev x11proto-input-dev x11proto-kb-dev xtrans-dev
The following packages will be upgraded:
tzdata
1 upgraded, 27 newly installed, 0 to remove and 39 not upgraded.
Need to get 49.9 MB of archives.
After this operation, 136 MB of additional disk space will be used.
Do you want to continue [Y/n]? Y
Comme vous le constatez, il y a beaucoup de paquets dépendants. Notez bien ces noms : openssl, cacao, x11 afin de les détecter si jamais vous avez d’autres installations à faire qui pourraient les concerner aussi.
Il faut accepter le téléchargement et l’installation de tous les paquets associés, attendre (le temps de venir rédiger l’article par exemple... pour ceux qui se demandent comment on peut trouver le temps de tout faire) puis c’est terminé !
On vérifie :
pi@raspberrypi:~$ java -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.13) (6b18-1.8.13-0+squeeze1)
OpenJDK Zero VM (build 14.0-b16, mixed mode)
Et on peut commencer à écrire un premier programme :
public class Test
public static void main(String[] args)
System.out.println("Hello World !") ;
On fait appel à nos souvenirs d’école pour compiler et on exécute :
pi@raspberrypi:~$ nano Test.java
pi@raspberrypi:~$ javac Test.java
pi@raspberrypi:~$ java Test
Hello World !
pi@raspberrypi:~$
Pour aller plus loin, voir notre article permettant d’utiliser les bibliothèques Java de communication série sur ARM.