Skip to content

Date archive for: avril 2013

Java 8 sur Raspberry Pi : No soucy !

Je continue mes expériences avec la JVM sur Raspberry Pi : attaquons-nous au JDK 8.

Vous pouvez télécharger le « JDK 8 (with JavaFX) for ARM Early Access » à l’adresse suivante : http://jdk8.java.net/fxarmpreview/
Update : Un nouveau build est disponible ici : http://jdk8.java.net/download.html

Dézippez le tar.gz obtenu dans le répertoire de votre choix. Exemple :

cd lerepertoiredemonchoix
tar zxvf jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz

Ensuite, une solution simple pour utiliser la VM est de faire pointer la variable d’environnement JAVA_HOME sur ce répertoire et d’ajouter le chemin $JAVA_HOME/bin à la variable PATH.

Mais on peut mieux faire : utiliser jenv

Jenv
Jenv va nous permettre de gérer plusieurs environnements d’exécution Java en fonction du répertoire d’où la JVM est lancée.
Pour l’installer, il suffit de suivre les instructions du site :

$ git clone https://github.com/hikage/jenv.git ~/.jenv
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l

Il faut maintenant paramétrer les JVMs disponibles, ex :

$ jenv add /usr/lib/jvm/java-7-openjdk
openjdk32-1.7.0.17 added
$ jenv add /path/to/jdk1.8.0
oracle32-1.8.0-ea added

Reste maintenant à définir les JDKs à utiliser en fonction du répertoire.
Tout d’abord, définissons le JDK global :

$ jenv global oracle32-1.8.0-ea

Autant utiliser le JDK 1.8 partout (si on peut ainsi envoyer des rapports de bugs et s’assurer de la compatibilité de nos applications, c’est toujours ça de pris !).

Pour les applications nécessitant java 7, pas de problèmes :

$ cd uneapplicationjava7
$ jenv local openjdk32-1.7.0.17

Bon, on teste ?
En global :

$ cd
$ java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b36e)
Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode)

et en local :

$ cd uneapplicationjava7
$ java -version
java version "1.7.0_17"
OpenJDK Runtime Environment (IcedTea7 2.3.8) (ArchLinux build 7.u17_2.3.8-1-arm)
OpenJDK Zero VM (build 22.0-b10, mixed mode)

Et voilà, vous avez un java 8 utilisable à côté de votre java 7.

Note: Si vous obtenez une erreur « java: No such file or directory » à l’exécution de « java -version », exécutez la commande suivante en root :

ln /lib/ld-linux.so.3 /lib/ld-linux-armhf.so.3

Installation de ceylon sur un raspberry pi

A l’occasion de Devoxx France 2013, j’ai pu participer à un Hands-on Ceylon en présence de Stéphane Epardaud et Emmanuel Bernard.

De retour chez moi, je constate que OpenJDK7 est disponible pour sur Arch Linux pour Raspberry Pi. Pile ce qu’il faut pour mon serveur perso :

Photo de mon serveur Pi

Il est beau mon serveur. Pas une bête de course, mais bien pratique pour des petites expérimentations à distance.

Donc: OpenJDK7 est disponible. Ca tombe bien Ceylon nécessite Java 7, alors allons-y !!

Note : les instructions suivantes sont pour la distribution Arch Linux du Raspberry Pi.

Préparation

Nous allons avoir besoin d’unzip, wget et du jdk 7 :

pacman -S unzip
pacman -S wget
pacman -S jdk7-openjdk

Installation
Commencez par télécharger et dézipper Ceylon :

wget http://ceylon-lang.org/download/dist/1_0_Milestone5
unzip 1_0_Milestone5

Puis définissez les variables d’environnement (à reclaquer dans votre .bash_profile pour les conserver au redémarrage) :

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk
export PATH=$PATH:$HOME/ceylon-0.5/bin

Premier test

C’est parti pour un « Hello, world ! »

mkdir -p helloCeylon/source
cd helloCeylon

Et voici le code du programme (nommez le source/hello.ceylon) :

void hello() {
    print("Hello, World!");
}

Simple, n’est-ce pas ?

Pour lancer la compilation :

ceylon compile source/hello.ceylon

Attendez un peu … et le compilateur devrait répondre :

Note: Created module default

Super, notre premier module est prêt !

Lançons-le pour vérifier (le hello passé au paramètre run est le nom de la méthode à appeler) :

ceylon run --run hello default

Attendez un peu … et …

Hello, World!

Yes, ça marche !!! Voilà, vous pouvez faire du Ceylon sur Raspberry Pi 😉