Informatique : La technologie Java est prête à embarquer

MESURES 802 - FÉVRIER 2008 - www.mesures.com 35
S
olutions
INFORMATIQUE
La technologie Java
est prête à embarquer
Java est une technologie de programmation puissante et fiable. Elle est omnipré-
sente sur Internet, dans la téléphonie mobile et sur la plupart des plates-formes
électroniques grand public. Ses nombreux atouts séduisent le monde industriel.
Parmi ceux-ci, on notera un principe de fonctionnement à base de machine vir-
tuelle, qui garantit la portabilité sur n’importe quel matériel, un degré de sécurité
digne des langages spécialisés, et une programmation orientée objet qui favorise
la réutilisation des composants et réduit les temps de développement. Certains
éditeurs commercialisent des versions de Java pour tous les types d’applications,
depuis le contrôle de process industriel jusqu’aux systèmes embarqués critiques.
Une tasse de café fumante est
forcément apparue un jour
ou l’autre à l’écran de tout
utilisateur d’Internet. C’est le
symbole du langage de programmation Java,
créé par Sun en 1994. Sa présence se renforce
chaque jour un peu plus sur les pages de nos
navigateurs, et il a envahi le marché des ap-
plications multimédia pour téléphones por-
tables. Cette “explosion” de Java est surtout
due à deux caractéristiques totalement inno-
vantes à l’époque de sa création. C’est un
langage accessible à tous, avec un très grand
nombre de développeurs regroupés en une
communauté active, et grâce à un concept à
base de Machine Virtuelle (ou VM, pour
Virtual Machine), les applications s’exécu-
tent en toute sécurité quelle que soit la plate-
forme matérielle.
Ce sont des caractéristiques qui ne sont pas
pour déplaire aux industriels. Ces derniers,
on le sait, sont demandeurs de solutions li-
bres de droits, qui ne dépendent pas de la
bonne santé d’une société éditrice, et pour
lesquelles des développements sont fré-
quemment effectués. Et quel que soit le sec-
teur, la sécurité et la portabilité des applica-
tions sont des préoccupations importantes.
C’est pourquoi, après avoir fait ses preuves
dans le secteur grand public, le langage Java
intéresse de plus en plus les industriels. Des
éditeurs de logiciels se sont donc spécialisés
sur ce créneau en adaptant Java aux multiples
contraintes de l’industrie (applications temps
réel ou critiques, coût du matériel, etc.).
Remplaçant du C et de l’Ada ?
Aujourd’hui, les applications industrielles
embarquées sont majoritairement dévelop-
pées en langage C. Il s’agit d’un langage “as-
sembleur” (ou “natif”) qui communique
directement avec le matériel sur lequel il est
implémenté. Pour rappel, le langage C a été
inventé pour bâtir des systèmes d’exploita-
tion (ou OS, pour Operating System). Les
applications en C sont donc extrêmement
rapides et performantes. Cependant, la pro-
grammation s’effectue “au plus près” de la
machine, si bien que les risques d’erreurs ne
sont pas à écarter. La gestion de la mémoire,
notamment, pose de nombreux problèmes
de débogage pour qui n’est pas un expert de
l’assembleur. D’où la naissance des langages
“orientés objet”, tels que Java, Smalltalk-80,
Ada, C++ ou encore Visual Basic, qui sépa-
rent le comportement (les fonctions des
données manipulées). Grâce à ces derniers,
le développeur n’a plus besoin de modéliser
les process et d’écrire tous les algorithmes.
Il se contente de décrire des objets et la ma-
nière dont ils communiquent ou interagis-
sent entre eux. Ces langages, à l’inverse de
leurs homologues assembleurs, sont prévus
pour la conception d’applications, et non pas
de systèmes d’exploitation. On se trouve
donc à un niveau d’exécution supérieur.
Ainsi, si l’application effectue une opération
non autorisée, elle ne “plantera” pas la ma-
chine sur laquelle elle s’exécute.
Ada, dans ses versions 83, 95 ou 05, reste
aujourd’hui un langage de programmation
fortement utilisé pour le développement
d’applications critiques ou très fortement
contraintes. Très largement répandu dans
toutes les industries aéronautiques, militaires
ou spatiales, que ce soit pour les équipe-
ments embarqués (systèmes de navigation)
ou non-embarqués (logiciels de contrôle
aérien). Il s’agit d’un langage très avancé en
termes de pouvoir d’expression et de fonc-
tionnalités. Toutefois, la communauté res-
treinte d’utilisateurs fait que, malgré sa ri-
chesse, ce langage manque d’outils et de
bibliothèques prêts à l’emploi. Il demande
des investissements importants en dévelop-
pement. Autre frein au déploiement de l’Ada
pour les projets aéronautiques : le manque
de main-d’œuvre qualifiée. En effet, les éco-
les d’ingénieurs qui intègrent des formations
au langage Ada dans leurs cursus se font de
plus en plus rares. Mais
à l’inverse, des milliers
d’ingénieurs sachant
développer en Java
sortent chaque année
des écoles. « On peut dire
que l’industrie a atteint
aujourd’hui une certaine
limite technologique,
commente Fred Rivard,
président du directoire
d’Industrial Software
Technology (IST), société
éditrice de solutions
Java pour l’électroni-
que embarqué. Les dé-
veloppeurs qui travaillent
dans les systèmes temps réel
et critiques se rendent
compte du problème : il
n’est plus possible de
Java est de plus en plus
utilisé dans l’industrie
Une application développée
en ce langage peut être
portée sur n’importe quelle
plate-forme matérielle
sans recompilation
Des solutions existent pour
adapter Java aux contraintes
temps réel
L’empreinte mémoire peut
être réduite pour les petits
microcontrôleurs
Java remplace déjà les
langages C et Ada
pour certaines applications
critiques
L’essentiel
➜
MESURES 802 - FÉVRIER 2008 - www.mesures.com
36
S
olutions
continuer à programmer de la même manière
qu’il y a 25 ans sur des systèmes modernes, alors que
nous sommes passés à l’ère des architectures 32 bits
et des processeurs multicœur et que la pression éco-
nomique sur les entreprises est de plus en plus
forte. »
Java, comment ça marche ?
Le principe de Java repose sur trois grandes
idées novatrices : un langage de programma-
tion standard, une machine virtuelle pour
l’exécution des programmes et un outil
autonome de gestion de la mémoire.
Premièrement, le langage de programma-
tion défini par Sun fait appel à une syntaxe
relativement proche du C. Cependant, il
s’agit d’un langage plus rigoureux, qui
oblige à “bien écrire”. Mais qui entraîne une
réduction des temps de débogage. De plus,
étant donné qu’il s’agit d’un langage orienté
objet, il favorise la réutilisation de ces objets
ou composants d’une application à l’autre.
Ce qui réduit cette fois les temps de concep-
tion. Et la réutilisation ne se fait pas unique-
ment à l’intérieur d’une société. Elle est
mondiale. En effet, la communauté des dé-
veloppeurs Java est très active et travaille
constamment à l’élaboration de composants
logiciels, de nouvelles bibliothèques de
fonctions et d’objets. Tom Grosman, chef de
projet chez Aonix, éditeur de solutions Java
et ADA pour l’embarqué, souligne notam-
ment que « la version 6 de Java contient
20 000 composants environ, contre 15 000 dans la
version précédente sortie deux ans plus tôt. » Ceci
illustre le dynamisme de cette communauté.
Il apparaît même que ce mode de fonction-
nement est le meilleur moyen pour faire
accepter un langage de programmation en
tant que standard. Comme le remarque Régis
Latawiec, directeur des ventes chez IST : « un
langage n’a de succès que s’il est utilisé par beaucoup
de monde. » Et ceci, Sun l’a bien compris. Car
après avoir décidé d’ouvrir les droits d’utili-
sation de Java, il en a fait en 2006 une tech-
nologie Open Source. Java a été dès lors
encore plus accessible et modifiable.
Poussée par
le dynamisme de sa communauté
d’utilisateurs, la technologie Java évolue. Et grâce aux développements
effectués pour adapter les machines virtuelles à l’électronique embarquée,
une multitude de nouveaux marchés peuvent en bénéficier : contrôle
industriel, applications radar et satellites, contrôle aérien, automobile, aéronautique
et spatial en sont quelques exemples.
➜
MESURES 802 - FÉVRIER 2008 - www.mesures.com 37
S
olutions
Multimédia et télécoms :
Le langage a commencé à se développer dans ces secteurs car
l’adaptation aux nouvelles technologies y est beaucoup plus
rapide que dans l’industrie (où le matériel a besoin d’être éprouvé,
certifié). On trouve Java dans la plupart des jeux sur Internet
et sur les téléphones portables. On le trouve également dans les
lecteurs multimédias, les platines DVD, imprimantes laser, etc.
Cela permet aux fabricants d’ouvrir leurs systèmes à des tiers qui
développent pour eux de nouvelles fonctions.
Automobile :
Java est de plus en plus utilisé pour les systèmes d’ “infotainment”
(qui regroupent le logiciel de navigation, la gestion du système
audio, l’affichage des informations, le réglage des options, etc.).
Le cloisonnement de l’application Java évite que le système ait
une quelconque influence sur les organes critiques de la voiture
(ABS, airbags ou autres).
Bâtiment et télématique :
Dans ces domaines, Java est principalement utilisé pour sa
robustesse. Il s’agit d’applications où un plantage matériel peut
avoir des conséquences désastreuses.
Industrie :
De par sa spécification standardisée, Java s’adapte parfaitement
aux applications à longue durée de vie. Une application peut
être maintenue en fonction très longtemps et suivre les évolu-
tions du matériel. De plus, il est tout à fait indiqué pour le
développement d’Interfaces Homme Machine car il s’adapte
automatiquement à l’écran et au clavier disponibles.
En outre, les bibliothèques graphiques livrées avec Java
permettent de réaliser des interfaces très flatteuses, incluant
des animations 3D.
Automation :
On retrouve des technologies Java dans certains automates, et
dans les “convertisseurs” autorisant le passage du langage Grafcet
au langage automate, par exemple.
Transport, défense, avionique :
Ces secteurs qui ont travaillé très longtemps avec des langages
très poussés et spécialisés tels que l’Ada commencent à
connaître une pénurie d’ingénieurs qualifiés. Ils étudient de près
les capacités “safety critical” de Java et les certifications
(DO-178B en tête) qui seront bientôt disponibles.
Secteur par secteur : les principaux avantages de Java
Autre caractéristique d’une application Java :
elle ne s’exécute pas directement sur le ma-
tériel sur lequel elle est installée. Elle est exé-
cutée par une machine virtuelle. Il s’agit
d’un processeur logiciel, doté d’environ
200 instructions différentes et faisant office
d’intermédiaire entre hardware et software.
Pour développer une application, il suffit de
faire appel aux bibliothèques fournies avec
Java (graphiques pour l’affichage, périphé-
riques d’entrée ou de sortie, etc.). Puis, une
fois l’application écrite et testée, un compi-
lateur se charge de la traduire dans le langage
de la machine virtuelle appelé “Bytecode”.
C’est un langage compréhensible par toutes
les machines virtuelles. Ce qui en facilite le
déploiement : l’application est compilée une
seule fois, puis elle peut être déployée sur
diverses architectures. Toutefois, une ma-
chine virtuelle Java pour PC sera différente
d’une machine virtuelle pour un Mac ou
une architecture ARM. Mais le fonctionne-
ment de l’application reste absolument iden-
tique, et ce sans recompilation. D’où le slo-
gan de Java : “Write once and run anywhere”
(“écrivez une fois et exécutez n’importe
où”). En outre, comme les cibles matérielles
peuvent être très variées (en termes de capa-
cités de mémoire et de puissance de calcul),
les développeurs de Sun ont conçu plusieurs
versions de machines virtuelles. Il existe
donc trois machines virtuelles standards,
différenciées par la taille de leur empreinte
mémoire, par les bibliothèques et le nombre
de fonctions intégrées. J2SE (Java version 2
Standard Edition) est la version que l’on re-
trouve sur les ordinateurs personnels. J2EE
(Java version 2 Enterprise Edition) est réser-
vée aux gros serveurs (applications bancai-
res, par exemple). Enfin, J2ME (Java ver-
sion 2 Micro Edition) est destinée aux
équipements disposant de peu de mémoire
tels que les téléphones mobiles.
La machine virtuelle comporte un certain
nombre de fonctions pour maintenir la sta-
bilité du système et garantir les performan-
ces. Ainsi, elle intègre un “scheduler”, ou
planificateur de tâches, pour le développe-
ment d’applications multitâche. Mais la prin-
cipale innovation est sans conteste la géné-
ralisation de l’utilisation d’un “garbage
collector”, ou ramasse-miettes. Il s’agit
d’un agent autonome de gestion de la mé-
moire qui scrute à intervalles de temps ré-
guliers la structure de la mémoire. Il recher-
che les objets non utilisés, élimine ceux qui
ne servent plus (on dit qu’il les “tue”) et
réorganise la mémoire en rassemblant les
objets éparpillés (opération de “défragmen-
tation”). Auparavant, avec le langage C, le
programmeur était obligé de créer et de ré-
server des adresses mémoire pour les diffé-
rentes valeurs à stocker. Celles-ci n’étaient
pas forcément vidées par le programme au
cours de son exécution, et une fois la mé-
moire saturée, c’est tout le système qui se
retrouve bloqué. Selon certaines estimations,
30 à 40 % des bugs rencontrés dans les ap-
plications en C sont liés à des problèmes de
gestion de la mémoire. Cela ne prête pas
forcément à conséquence sur un PC dispo-
sant de plusieurs centaines de mégaoctets de
mémoire, mais dans le domaine de l’élec-
tronique embarquée les choses se compli-
quent. Lorsqu’il s’agit d’écrire un pro-
gramme pour un airbag (sur un calculateur
automobile) ou pour un oscilloscope (sur
un processeur programmable), la gestion
optimale de la mémoire revêt une tout autre
importance. Ce sont en effet des applications
embarquées pour lesquelles aucun plantage
n’est tolérable. Et le plus souvent, ces équi-
pements ne disposent pas plus de quelques
dizaines de kilo-octets de mémoire (voire
quelques centaines de kilo-octets).
Pourquoi Java dans l’embarqué ?
Toutes les conditions sont réunies pour que
Java connaisse un essor important dans l’in-
dustrie au cours des années à venir. Nous
l’avons vu, le langage Java accélère les temps
de programmation (grâce à la réutilisation
de briques logicielles) et de débogage (le
langage est rigoureux et la machine virtuelle
effectue des vérifications au cours de l’exé-
cution). La productivité s’en trouve amélio-
rée. Fred Rivard avance que « Java permet d’être
6 à 10 fois plus productif que les langages de type C,
suivant le degré de complexité des applications. »
➜
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
➜
MESURES 802 - FÉVRIER 2008 - www.mesures.com 39
S
olutions
Les enjeux pour l’industrie
de demain
L’arrivée des langages de programmation
orientés objet dans l’industrie a commencé
avec C# (prononcez “Ci-Sharp”), le langage
développé par Microsoft pour ses applications
.Net (prononcez “Dot-Net”). Mais Laurent
Mares, directeur commercial Europe chez
Aonix, est convaincu que « Java, non content de pro-
poser une puissance proche de celle du C et une sécurité
accrue, apportera de profondes améliorations dans les habi-
tudes de travail des industriels. » La principale con-
cerne les possibilités de maintenance des lo-
giciels. Il est possible d’ajouter des fonctions
à un logiciel sans se préoccuper de savoir si la
mémoire va être saturée, car cela est géré par
la machine virtuelle. De plus, un logiciel écrit
en Java pourra être modifié longtemps après
sa mise en service sans risque d’incompatibi-
lité avec le nouveau matériel. Dans les indus-
tries où la durée d’exploitation d’un process
peut être très longue, il se révélera utile de
pouvoir conserver son application logicielle
sur de nombreuses années même si le maté-
riel est changé plusieurs fois. Régis Latawiec
pousse la réflexion plus loin et fournit l’exem-
ple d’« une société qui dispose de deux équipements diffé-
rents, A et B, sur lesquels sont installés des machines virtuel-
les Java spécifiques. Si au bout de 10 ans l’industriel achète
un équipement C (avec sa propre machine virtuelle) et qu’il
l’utilise pour développer une nouvelle application, cette der-
nière pourra tourner sans distinction sur les trois équipe-
ments A, B et C ».
Grâce à cette technologie, il est possible de
dissocier totalement les cycles de vie et de
développement des matériels et des logiciels.
Le programmeur n’a plus à se soucier des
divers changements de processeur ou de sys-
tème d’exploitation, des changements pou-
vant être initiés par le service des achats (qui
a opté pour une plate-forme moins oné-
reuse), ou par les bureaux d’études (qui ont
besoin de redimensionner le matériel pour
ajouter de nouvelles fonctions). Il n’y aura
que les drivers de très bas niveau et les BSP
(Board Support Package) à changer, mais l’ap-
plication restera la même.
Java contribue à aborder la sous-traitance sous
un autre angle, particulièrement dans les sec-
teurs automobile et aéronautique où le secret
industriel revêt une importance capitale. Si un
industriel confie à un tiers l’écriture d’une
application pour un calculateur, il n’est pas
obligé de lui fournir les spécifications de son
matériel. Il peut même ajouter au dernier
moment les fonctions innovantes pour pré-
server le savoir-faire spécifique à son entre-
prise. Il devient possible également de com-
mencer à développer une application avant
que le choix du calculateur ne soit effectué.
Pour finir, malgré tous les atouts évoqués, le
passage des applications “tout en C” ou “tout
en Ada” à des applications “tout en Java” ne
s’effectuera pas du jour au lendemain.
Heureusement, le principe de la technologie
Java autorise une migration en douceur des
langages assembleurs vers le langage objet
Java. Il est ainsi possible d’installer une ma-
chine virtuelle sur n’importe quel équipe-
ment, sous la forme d’un plug-in qui appor-
tera quelques nouvelles fonctions. Cela ne
gênera en rien le fonctionnement de l’appli-
cation, et permettra une migration progres-
sive des fonctions, lorsque seront pleinement
reconnus les avantages de la technologie sym-
bolisée par une tasse de café fumante.
Frédéric Parisot
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!