article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
T echnologie<br />
La virtualisation pour le développeur<br />
Nous allons examiner quelques solutions comme QEMU, XEN ou VMWARE PLAYER. Ces systèmes<br />
sont relativement lents par rapport à un système natif, mais Intel et AMD s'apprêtent<br />
à intégrer <strong>de</strong>s technologies <strong>de</strong> virtualisation dans leurs processeurs, ce qui permettra à l'avenir<br />
<strong>de</strong> démocratiser la virtualisation quel que soit votre budget <strong>de</strong> développement.<br />
Ces <strong>de</strong>rnières années <strong>de</strong> nombreux systèmes<br />
d'émulation / virtualisation ont<br />
vu le jour qui se sont révélés très vite<br />
indispensables dans un cadre <strong>de</strong> développement.<br />
Comment tester le nouveau système <strong>de</strong><br />
fichiers WinFS réputé instable, ou bien la <strong>de</strong>rnière<br />
suite <strong>de</strong> développement Visual Studio,<br />
tout en conservant un système stable pour son<br />
travail quotidien ? En disjoignant le système<br />
émulé et son système hôte. La machine virtuelle<br />
est ainsi complètement isolée (étanche)<br />
par rapport au système, et les machines virtuelles<br />
sont totalement cloisonnées les unes<br />
par rapport aux autres.<br />
Un développeur Web sera séduit par cette possibilité<br />
<strong>de</strong> disposer <strong>de</strong> plusieurs machines<br />
hôtes, afin d’y exécuter plusieurs versions<br />
d’Apache, <strong>de</strong> s’accommo<strong>de</strong>r <strong>de</strong> <strong>de</strong>ux interpréteurs<br />
PHP, ou encore <strong>de</strong> jouer avec plusieurs<br />
moteurs <strong>de</strong> bases <strong>de</strong> données comme MySQL,<br />
Oracle, etc. Les possibilités sont quasi infinies.<br />
Un mot au sujet <strong>de</strong> la compilation<br />
croisée<br />
La compilation croisée vise à compiler un exécutable<br />
pour une architecture donnée à partir<br />
d'un compilateur lancé <strong>de</strong>puis une architecture<br />
différente. Les développeurs utilisent intensivement<br />
cette technique dans le cas du développement<br />
d'une application <strong>de</strong>stinée à un<br />
ordinateur <strong>de</strong> poche. Tout le développement<br />
s'effectuera sous Windows XP ou sous Linux,<br />
tandis que les exécutables ne fonctionneront<br />
que pour un ordinateur spécifique cible (à<br />
base <strong>de</strong> processeur ARM dans le cas <strong>de</strong><br />
PalmOS). On imagine mal un développeur travaillant<br />
sous une machine virtuelle PalmOS,<br />
alors qu'il peut effectuer tout son travail <strong>de</strong><br />
manière beaucoup plus conviviale sous une<br />
machine physique Linux ou XP.<br />
Concrètement, dans le cas d'une compilation<br />
croisée, le compilateur s'exécutera dans un<br />
environnement spécifique (par exemple x86),<br />
mais le co<strong>de</strong> généré sera d'un type différent<br />
(par exemple le processeur ARM). Le script<br />
configure permet <strong>de</strong> spécifier le type d'architecture<br />
sur lequel s'exécute le compilateur<br />
(l'option –host), ainsi que le type d'architecture<br />
cible (l'option –target).<br />
Exemple :<br />
./configure - -host=i686-pc-linux-gnu -<br />
-target=arm-linux<br />
Sous Linux, mingw32 est un outil <strong>de</strong> compilation<br />
croisée qui est capable <strong>de</strong> produire<br />
(<strong>de</strong>puis Linux) <strong>de</strong>s exécutables Windows... La<br />
génération <strong>de</strong> la chaîne <strong>de</strong> compilation croisée<br />
est donc réalisable manuellement, mais ce travail<br />
est souvent difficile. Heureusement, il existe<br />
<strong>de</strong>s outils spécialisés, comme ELDK (pour<br />
Embed<strong>de</strong>d Linux Development Kit) développé<br />
par la société DENX Software, ou encore<br />
CROSSTOOL développé par Dan Kegel, qui<br />
vous faciliteront la vie. Remarquez qu'il existe<br />
d’autres logiciels comme Cygwin qui traduisent<br />
les appels systèmes et avec lesquels vous<br />
pouvez exécuter <strong>de</strong>s comman<strong>de</strong>s Unix sous<br />
Windows.<br />
ELDK : http://www.<strong>de</strong>nx.<strong>de</strong>/en/News/Press<br />
ReleaseELDK40<br />
CROSSTOOL : http://kegel.com/crosstool/<br />
Le projet Wine<br />
WINE est une exception dans la liste <strong>de</strong>s<br />
outils <strong>de</strong> virtualisation présentés : ce<br />
n'est ni un émulateur (WINE Is Not an<br />
Emulator), ni une machine virtuelle. Il s'agit<br />
d'un logiciel qui implémente l'API Microsoft<br />
Windows 16 bits et 32 bits au-<strong>de</strong>ssus <strong>de</strong> X (le<br />
64 bits n'est pas supporté). Autrement dit, il<br />
permet à un développeur Windows <strong>de</strong> développer<br />
une application sous Windows avec un<br />
outil <strong>de</strong> développement uniquement disponible<br />
sous Windows, et <strong>de</strong> le faire ensuite tourner<br />
Programmez n°85 54 avril 2006<br />
sous Linux, FreeBSD ou Mac OS X sans disposer<br />
du système d'exploitation Windows (WINE<br />
est sous licence LGPL). L'IDE Kylix est une<br />
application Linux non native, basée sur Wine. Il<br />
y a actuellement 3517 applications recensées<br />
dans la base <strong>de</strong> données <strong>de</strong> Wine. Les avantages<br />
sont multiples. Nous avons pu <strong>de</strong> cette<br />
manière faire tourner sous Linux une application<br />
d'encodage <strong>de</strong>s prestations, développée<br />
avec Visual Foxpro 9. Cependant, quelques<br />
adaptations seront parfois nécessaires. Par<br />
exemple, les appels directs à certaines API<br />
32 bits non supportées <strong>de</strong>vront être proscrits :<br />
DECLARE integer FindWindow IN USER32.<br />
DLL integer,string<br />
DECLARE integer ShowWindow IN<br />
USER32.DLL integer,integer<br />
FoxHwnd = FindWindow(0,"ENCODAGE<br />
ATELIER")<br />
*-- La fenêtre FoxPro disparaît complètement :<br />
= ShowWindow(FoxHwnd , 0)<br />
Et seront à remplacer par du co<strong>de</strong> 100 %<br />
FoxPro :<br />
PROCEDURE ShowWindow()<br />
LPARAMETERS FoxHwnd, ACTION<br />
IF ACTION = 7<br />
Frmpresta.WindowState = 1<br />
ELSE<br />
IF ACTION = 10<br />
Frmpresta.WindowState = 2<br />
ENDIF