MESURES 802 - FÉVRIER 2008 - www.mesures.com
38
S
olutions
Rappelons que grâce à la machine vir-
tuelle, une application peut être déployée
facilement sur des plates-formes totalement
différentes. Du coup, cela en fait l’outil de
programmation idéal pour la construction
d’Interfaces Homme Machine (IHM) : l’af-
fichage sera toujours le même, sur un petit
afficheur au bord de la ligne de fabrication
ou sur le PC du responsable de production.
Avec une application en C, des surprises sont
toujours possibles lors du déploiement car
les librairies graphiques d’un PC de bureau,
d’un afficheur ou d’un Panel PC ne sont pas
les mêmes. Cela n’arrive pas avec Java. Enfin,
outre sa robustesse (une application Java ne
peut pas faire planter le matériel), Java offre
aux industriels un niveau de sécurité très
élevé : il est possible de valider formellement
que le Bytecode Java d’une application ne fait
pas d’opération interdite. Une application
industrielle qui s’exécute sur une machine
virtuelle pourra communiquer avec un ser-
veur distant, mais jamais une personne ou
une application extérieure ne pourra accéder
aux informations contenues sur un ordina-
teur ni lancer une autre application. La ma-
chine virtuelle est donc le meilleur des pare-
feu.
Qu’en est-il du temps réel ?
Les applications nécessitant du “temps réel
dur” pourraient sembler quelque peu en
reste. Par temps réel dur, on désigne des ap-
plications temps réel (aux temps de cycles
très courts) à la fois déterministes (on ga-
rantit qu’une application ne mettra pas plus
d’un certain temps pour être exécutée) et
préemptives (on garantit qu’une tâche prio-
ritaire sera traitée avant toutes les autres).
Mais il n’en est rien. La décision de Sun de
rendre Open Source la spécification Java a
donné le signal de départ pour les éditeurs
de logiciels spécialistes du temps réel. Les
sociétés françaises Aonix et IST développent
des machines virtuelles Java capables de ré-
pondre aux contraintes les plus fortes. On les
appelle machines virtuelles “clean room” : la
conception est maîtrisée d’un bout à l’autre
de la chaîne, et l’utilisateur n’a aucunes
royalties à verser à Sun. Les technologies
PERC® (chez Aonix) et MicroJvm® (chez IST)
ont plusieurs points communs. Tout d’abord,
la résolution temporelle a été améliorée pour
que la machine virtuelle effectue des cycles
de scrutation très rapides. « Mais la principale
évolution par rapport à Java standard porte sur le
ramasse-miettes, explique Tom Grosman. En
effet, il faut éviter que les ressources du processeur ne
soient utilisées pour le vidage de la mémoire alors que
des tâches prioritaires sont en attente. Le ramasse-
miettes est donc totalement modifié. Il ne se lance que
lorsque le système est disponible et s’interrompt dès
qu’une tâche arrive dans le planificateur. Il devient
donc préemptif (il laisse l’application prendre la main
quand c’est nécessaire) et incrémental (il peut séparer
ses tâches en plusieurs morceaux pour les exécuter
pendant les courtes périodes d’inactivité du système). »
D’autre part, ces machines virtuelles clean
room sont modifiées pour tourner sur des
OS temps réel. Toutes sont compatibles avec
la plupart des OS temps réel du marché
(VxWorks, LynxOS, QNX, etc.). Et pour cer-
taines applications particulières, il est possi-
ble d’installer une machine virtuelle qui
remplit également le rôle d’OS temps réel :
on parle de machine virtuelle “baremetal”.
Enfin, des interfaces ont été développées
pour que des modules C puissent continuer
à s’interfacer sur des machines virtuelles
clean room.
Grâce à ces machines virtuelles, les indus-
triels sont capables de profiter des avantages
de Java sans remettre en cause les performan-
ces finales de l’application. Cependant, on
atteint une limite à mesure que l’on descend
vers des systèmes pour lesquels la dimension
économique est une donnée majeure, des
systèmes peu performants et dotés de peu
de mémoire. Un cas standard est 256 ko de
mémoire Flash et 64 ko de RAM. La grande
majorité des microcontrôleurs et autres cal-
culateurs automobiles sont équipés de pro-
cesseurs 8 ou 16 bits, et embarquent très
peu de mémoire. C’est pourquoi IST a choisi
d’orienter une partie de ses recherches dans
ce domaine. La société nantaise a développé
un système d’industrialisation de machines
virtuelles spécifiques. « C’est-à-dire que nous
sommes capables de fournir des machines virtuelles à
très faible empreinte mémoire, explique Fred
Rivard. Quel que soit le type de microcontrôleur
utilisé (8051, ARM 7, AVR, etc.), nous offrons une
solution sur mesure qui évite au client de monter en
gamme de contrôleur, et donc d’augmenter le prix de
son système. La plupart de ces MicroJvm® descendent
en dessous de 50 kilo-octets. »
Enfin, par l’intermédiaire de ces versions
clean room, Java sera bientôt certifiable
pour les applications très critiques (“sa-
fety critical”, lorsque la vie d’êtres hu-
mains est en jeu). « Des groupes de travail ont
été créés au sein de la communauté de développeurs
Java, commente Marc Richard-Foy, respon-
sable des logiciels embarqués chez Aonix.
Ils ont pour objectif de définir les spécifications de
Java Temps Réel (groupe JSR 282, pour Java
Specification Request 282), et de Java pour les systè-
mes critiques (groupe JSR 302). » Les premières
versions de ces spécifications devraient
être disponibles courant 2008.
Lorsque l’on évoque Java pour
l’industrie, certaines opinions
perdurent alors qu’elles peuvent
aujourd’hui n’être que des
préjugés…
“Java, c’est gros”
Il est vrai qu’une machine virtuelle
Java standard occupe le plus
souvent entre 8 et 10 Mo de
mémoire. Cependant, grâce à des
technologies telles que la
MicroJvm® d’IST, la taille d’une
machine virtuelle peut descendre
sous la barre des 50 kilo-octets. Il est
donc possible de l’adapter à des
systèmes économiques, d’autant
plus que les outils de développe-
ment de Java sont gratuits (Eclipse,
Netbean).
“Java, c’est lent”
Il existe de nombreuses techniques
d’accélération éprouvées pour
que les applications Java puissent
s’exécuter quasiment aussi vite
que du C (JIT, AOT, Ice Tea®, Jazelle).
Certaines machines virtuelles
baremetal “bootent” même en
quelques millisecondes. D’autres
offrent des temps de cycles
inférieurs à la milliseconde.
“Java, c’est pas sécurisé”
La présence de la machine virtuelle
offre une protection infaillible
contre les agressions venues de
l’extérieur. Une application Java ne
pourra ni transmettre un virus ni
donner accès aux informations d’un
ordinateur relié à un réseau. Le
“Bytecode verifier” veille.
“Java, c’est fait pour les jeux
vidéo”
Le fait que Java soit très utilisé par
l’industrie du jeu vidéo présente
des avantages : une communauté
de développeurs très active qui
contribue à améliorer sans cesse le
standard, et l’existence d’un très
grand nombre d’ingénieurs ayant
appris à développer en Java. Eclipse,
l’IDE le plus utilisé (Integrated
Development Environment), a été
téléchargé plus de 2 500 000 fois
en quelques semaines après la
sortie de sa dernière version.
Se débarrasser
des idées reçues
➜