02.07.2013 Views

article de presse - Cap Data Consulting

article de presse - Cap Data Consulting

article de presse - Cap Data Consulting

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!