14 décembre 2013

Mon second post est une réponse détaillée à une question posée par @CodeStory sur twitter. 140 caractères étaient largement insuffisants ! Ma réponse va également un peu plus loin puisque je compare les performances du JDK7 et du JDK8.

Quel JDK pour BeagleBone Black ?

La première question qu’on peut se poser est : Quelle version de JDK utiliser ?

Sur le site d’Oracle, on trouve 2 versions différentes pour le JDK 7:

  • "Linux ARM v6/v7 Hard Float ABI"

  • "Linux ARM v6/v7 Soft Float ABI"

Aucun JDK8 n’est proposé sur le site d’Oracle (pas encore de version finale). On trouve une "Early Access Release" sur jdk8.java.net sous le nom :

  • "Linux ARMv6/7 VFP, HardFP ABI"

Ces JDK peuvent être utilisés sur BBB (ARM v7) et sur Raspberry Pi (ARM v6) … mais pas sous n’importe quelle version d’OS.

Hard Float vs Soft Float

"Hard Float" et "Soft Float" sont des termes utilisés pour des jeux d’instruction spécifiques des processeurs ARM. Historiquement, le JDK d’Oracle n'était disponible qu’en version "Soft Float". Quelques éléments de réponses se trouvent également dans les slides de mon quickie de Devoxx France 2013 sur parleys.
Pour faire court, les JDK en version HFP (Hard Float) ne peuvent être utilisés que sur des OS compatible HFP.

Quel OS utiliser ?

La carte BBB est livrée avec une distribution Angström … qui est compilée en "Soft Float". Seul le JDK 7 "Soft Float" peut donc être utilisé avec cet OS. Aucune version "Soft Float" du JDK 8 n’est disponible à ma connaissance.

Pour utiliser les JDK 7 et 8 en version HFP, il faut un Linux compatible. C’est le cas d’Ubuntu. Vous pouvez vous inspirez du tutoriel d’Adafruit pour installer une nouvelle version d’OS sur la BBB ou, comme je l’ai fait, booter sur une microSD externe contenant Ubuntu.

Tests de performances

J’ai repris les mêmes types de tests que pour mon quickie de Devoxx France 2013, à savoir, des tests dacapo (avrora, fop et xalan). Les scores sont ramenés sur une base 100 ayant pour référence les résultats sur JDK7 sur Rapsberry Pi de mon Quickie. J’ai consigné les valeurs brutes dans un fichier LibreOffice.

Ces tests ont seulement pour objectif de comparer grossièrement les JDK … et n’ont fait l’objet d’aucune méthodologie, analyse statistique, … Pour avoir des résultats indiscutables, il faudrait des tests réalisés par des spécialistes de JVM, ce que je ne suis pas !

Voici donc 2 graphes avec/sans référence à la Raspberry Pi.

En conclusion, les performances ne sont pas fondamentalement différentes. Si vous êtes sur l’OS de base sur la Beaglebone, vous n’avez donc pas besoin d’en changer … sauf si vous voulez tester les nouveautés du JDK8.

Autre enseingement : Si vous faites tourner du code Java sur une Raspberry Pi, vous auriez avantage à passer sur Beaglebone Black !