
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
➜