Vous êtes sur la page 1sur 84

PRO grammez !

www. programmez.com

Numro Spcial 10 ans ! Nouvelle Formule


mensuel n112 - octobre 2008

Le magazine du dveloppement

Enqute

Vos langages favoris


Exclusif ! Vers Microsoft 3.0

Les projets secrets de Microsoft

Le match

Eclipse - Netbeans
Choisir loutil idal !
Les dernires versions compares Tout savoir sur Eclipse 4.0

Chrome et les dveloppeurs Le Google Developer Day !

Java
AspectJ :
La programmation par aspect facile !

technique

SQL Server 2008


Dcouvrez le Resource Governor

Flash
Matriser le bitmap avec ActionScript 3

JavaSpaces :
Crer votre grid computing

iPhone / .net
Piloter votre Windows Media Center avec iPhone

Et aussi :
Linux : Dvelopper des extensions Nautilus

Jeux :
Dvelopper des jeux en Java

Printed in France - Imprim en France - BELGIQUE 6,45 - SUISSE 12 FS - LUXEMBOURG 6,45 - DOM Surf 6,90 - Canada 8,95 $ CAN - TOM 940 XPF - MAROC 50 DH

3:HIKONB=^UZ^Z]:?k@l@b@c@a;

M 04319 - 112 - F: 5,95 E

VERSION EXPRESS GRATUITE


Tlchargez-la !

Environnement professionnel intgr de dveloppement (IDE & ALM)

INCLUS EN STANDARD DANS WINDEV 12 :


Tout est en franais (manuels, logiciel, exemples) Hot Line personnalise (support technique) gratuite* Dploiement libre et gratuit Cre des .EXE scuriss, des WebServices, des applications .NET, des applications Java... Fonctionne en TSE et Citrix 32 bits, 64 bits Compilation JIT Code multi-plateforme compatible Mobile et Internet Gnrateur automatique dIHM, avec charte graphique. Cration automatiques de superbes fentres par utilisation de gabarits fournis (pour tous Windows) Tous les Windows : 98, 2000, NT, XP, Vista, 2008... Gnrateur dEtats et de Requtes diffusable, cration de PDF, code-barres, tiquettes. Fond de page PDF Menu dexport automatique dans chaque application cre: vers Word, Excel, OpenOffice, XML, PDF; Graphiques 3D; Historique de saisie,... Envoi de mail, Macros Real-RAD : Gnrateur dapplications compltes, avec possibilit de crer ses propres Patterns HyperFileSQL, Base de Donnes Client/Serveur, Locale et Mobile sous Windows et Linux (version illimite, libre et gratuite); Gre 4 millions de Tra-octets Accs toutes les Bases de Donnes tierces: Oracle, AS/400, SQL Server, DB2, MySQL, Access, xBase, etc... Rplication entre bases de donnes XML natif Accs natif SAP R/3, Lotus Notes, LDAP, Outlook,... Centre de Modlisation UML, Merise et Souple; code gnr depuis lanalyse, reverse engineering Centre de suivi du planning dquipes Tableau de Bord de suivi de projet Dossier automatique : analyse & programmation Rgles mtier; Gestion des exigences Cration et utilisation de composants ; 3-tiers Centre de suivi des retours et suggestions utilisateurs Import dapplications Access et VB Langage de 5 Gnration L5G, qui limine 90% du code Ouverture aux L4G et L3G: C++, C#, Java, VB, Cobol... Fonctions Domotique (norme X10) Gestion liaison srie RS 232, parallle et USB Fonctions Bluetooth, Fonctions rseau SNMP Fonctions TAPI, OPC, FTP, HTTP, Socket, Twain, API, DLL,... Fonctions Multimdia (image, son, vido) Editeur de code intelligent, avec test immdiat sans recompilation Gestion des versions (gestion des sources: en local, distance) Automate de tests unitaires de code et dIHM, Editeur visuel de tests de non-rgression Dbogueur puissant: threads, composants,... Dbogage distance Refactoring Profiler, pour optimiser la vitesse du code Multilingue automatique: jusqu 20 langues Gnrateur daide CHM Gnrateur dInstallations en 1 clic, grant les mises jour automatiquement (local, distance, via Internet) Autoformation facile, en 1 semaine (manuels livrs) Vous aussi, comme 100000 dveloppeurs professionnels, choisissez WINDEV !

WINDEV
Fournisseur Officiel de la Prparation Olympique

DVELOPPEZ 10 FOIS PLUS VITE


Dveloppez facilement de superbes applications robustes et rapides avec le N1 en France.

Logiciel professionnel. Document non contractuel. Support technique gratuit: 15 requtes sur la version en cours de commercialisation.

www.pcsoft.fr
Demandez le dossier gratuit (244 pages + 1 DVD) VERSION EXPRESS GRATUITE et 112 Tmoignages. Tl: 04.67.032.032 ou 01.48.01.48.88 Mail: info@pcsoft.fr

NOUVEAU : donnez votre avis sur ce numro www.programmez.com

PRO grammez !
Le magazine du dveloppement

numro 112 - octobre 2008


16

sommaire\\

\\ actus
Lactualit en bref ..............................................................................8 Agenda ..............................................................................................9 2e symposium Eclipse-OMG..................................................................10 Adobe dvoile la Creative Suite 4..........................................................12

\\ vnements
Google Day Developer..........................................................................14 Google Chrome : le premier navigateur RIA............................................16

\\ sgbd
Le Resource Governor (1re partie)........................................................18

\\ gros plan : Eclipse-Netbeans,


comment choisir loutil idal ?
Eclipse 4.0 : un aperu de lavenir ........................................................23 Choisir son IDE idal ..........................................................................24

\\ dossier : Spcial10 ans


Grande enqute vos langages favoris..................................................31 La parole aux experts ......................................................................38
Croissance du rseau, rvolution du calcul et transformation des usages ............38 Dvelopper signifiera-t-il toujours " crire du code " ............................................39 Vive le code libre ..........................................................................................40 Au pass le partage, lavenir la concurrence ..................................................41 Rester simple : une affaire complexe ..............................................................42

22

48

Mtiers : 10 ans dvolution..............................................................43

\\ reportage : ImagineCup 2008


Le tour du monde ..............................................................................48

\\ bonnes feuilles
Les projets secrets de Microsoft (2e partie) ..........................................51

\\ code
Blu age dition 2009 ..........................................................................56 ActionScript 3 et la programmation bitmap ..........................................59 Programmation oriente aspect avec AspectJ........................................62 JavaSpaces et le parallel processing ....................................................65 Piloter votre Windows Media Center avec un iPhone (1re partie) ............68 OpenMPI, une librairie pour la programmation parallle distribue............71 Ecrire des scripts dextensions pour Nautilus ........................................75

68

\\ temps libre
Devenez un petit gnie du jeu video ......................................................80 Les livres du mois ..............................................................................82 80

CD ROM

Eclipse SDK 3.4 - Windows Environnement de dveloppement intgr libre Netbeans IDE Java SE 6.5 bta - Windows Environnement de dveloppement intgr pour Java Netbeans IDE Ruby 6.5 bta - Windows Environnement de dveloppement intgr pour Java Perforce Serveur 2008.1 Windows limitation : 2 serveurs et 5 clients. Le systme de Gestion de Configuration Logicielle rapide Perforce Visual Client 2008.1 (P4V) - Windows

Cappuccino Starter Package 0.5 Framework open source pour le dveloppement d'applications web Love 0.4.0 - Windows Moteur de jeu en 2D - Libre Appchecker - Linux Appchecker : la killer application Linux pour dveloppeur ! AspectJ 1.6.1 Extension oriente aspect pour le langage de programmation Java Delphi and C++Builder 2009 Editeur : CodeGear Windows limitation : 14 jours Version 2009 des environnments de dveloppement C++ et Delphi

PHP 5.2.6 (sources) Dernire version stable de PHP 5 WinSCP 4.1.6 - Windows client SFTP graphique pour Windows. Il utilise SSH et est open source Virtualbox 2.0.0 - Windows Linux - Outil de virtualisation et son SDK Kite 2.0 - Windows Logiciel de test de performance des applications Web OpenLaszlo 4.2 bta 1 Windows plateforme de dveloppement pour des applications web interfaces riches

Supplment ditorial n112

JAVA

OUTILS

Eclipse 3.4 Netbeans 6.5 bta !


Dcouvrez les toutes dernires versions des environnements de dveloppements Java.
Versions Windows

Delphi 2009 C++ Builder 2009

CodeGear CodeGear

Dcouvrez le nouveau Delphi avec toujours plus de .Net. Installeur Windows* - Limit 14 jours. La nouvelle version de lIDE C++ mondialement connu. Installeur Windows* - Limit 14 jours.
* Ncessite une connexion internet pour tlcharger et installer

Netbeans IDE Ruby 6.5 bta


Dveloppez plus rapidement votre site Web 2 en Ruby
Windows

Perforce Serveur 2008.1


Le systme de gestion de configuration et de code source de rfrence.

PHP 5.2.6 (sources)


Dernire version stable de PHP 5

Dcouvrez BLU AGETM Build Edition 2009


Le premier Environnement Intgr de Modlisation et de Gnration dapplications Web !
Dbuggez vos modles UML/BPMN et transformez-les automatiquement et instantanment en applications JAVA !
Licence dvaluation 30 jours de BLU AGETM Build Edition 2009, construit sur Eclipse.

Octobre 2008 \\ PROgrammez! 3

Echantillon gratuit Ne peut tre vendu sparment Les versions peuvent tre limites, selon les diteurs et prsentes en anglais ou en franais.

Editeur XML

XMLSpy

XMLSpy 2008 dAltova est lenvironnement de dveloppement XML le plus populaire au monde. Il permet de modliser, diter, transformer, dboguer et profiler toutes les technologies XML. Tlchargez une version dvaluation gratuite ds aujourdhui!
XMLSpy offre une conformit sans gale aux Prise en charge des trs gros fichiers XML Fonction de recherche/remplacement dtaille dans lditeur de schmas XML Dtails XSLT avancs dans la fentre Info Aide la saisie dans XSL Outline Prise en charge de Java, C#, JavaScript et VBScript dans les feuilles de style Prise en charge de Visual Studio mise jour pour VS 2008 Et bien plus encore
auts Nouve dans y 2008 XMLSp 2 n versio

normes les plus rcentes de lindustrie. Il prend mme en charge les nouveaux formats Office Open XML (OOXML) employs par Microsoft Office 2007. Ses fonctionnalits avances sallient des vues et des aides la saisie conviviales, des assistants et des dbogueurs pour permettre aux dveloppeurs de crer, diter et optimiser les applications XML et les services Web les plus avancs avec aisance.

Editeur XML Editeur graphique de schmas XML / DTD Editeur, dbogueur et profileur XSLT 1.0/2.0 Editeur, dbogueur et profileur XQuery Analyse et construction XPath 1.0/2.0 Prise en charge des bases de donnes relationnelles Fonctions de validation XML avances Prise en charge des fichiers Office Open XML (.docx, .xlsx, pptx) Client et dbogueur SOAP Editeur graphique WSDL Gnration de code Java, C#, C++ Vues ddition textuelle et graphique Intgration de Visual Studio & Eclipse

Dcouvrez pourquoi XMLSpy a t choisi par plus de 3 millions de dveloppeurs professionnels Tlchargez gratuitement une version dvaluation de 30 jours sur www.altova.com

dito\\

Monde cruel, quand tu nous tiens


Ce que nous aimons avec septembre et sa rentre, ce sont les surprises, attendues ou inattendues. Et le cru 2008 ne vient pas contredire cette tradition. Plus que de simples annonces, cela va donner le ton pour 2009 et au-del. En attendant les grandmesses Microsoft doctobre et novembre prochains qui promettent l aussi de changer notre vision sur Windows, .net et par contrecoup, au-del. Car nombre dditeurs et de communauts open source scrutent chaque mouvement de Redmond. IE8 sort une navigation prive, pas de souci, Mozilla rplique peu aprs avec sa propre solution. Mais quand il sagit de frapper, Microsoft sait aussi attendre labri et se lancer avec la puissance de feu ncessaire. En retard dans la virtualisation ? Pas grave, on sort un Hyper-V payant, puis une dition spciale gratuite et comme la virtualisation Windows est largement pratique, cause de son omniprsence, Microsoft peut peser de tout son poids sur ce march en pleine restructuration. Il y a encore quelques mois, on parlait partout de Xen. Tous les diteurs voulaient lavoir, le supporter. Dsormais, les diteurs de systmes rachtent de la virtualisation et sortent leurs propres solutions : Microsoft, Red Hat, Novell, Sun Nous assistons une vritable reprise en main du march. Et des pures players comme VMware, Parallels nauront que 6 12 mois pour contrecarrer ce renversement tactique. Cest comme si on assistait un Austerlitz virtuel. Tromper ladversaire, le laisser venir, le fixer puis attaquer sur son point fort, son centre, pour mieux attaquer les flancs. Et la rentre nous a permis de nous replonger dans un autre domaine qui nous tient cur, le modle de dveloppement des applications pour Linux. Quelques diteurs avaient bien tent de crer des outils multi-plates-formes comme Borland avec Kylix, un Delphi linuxis. Un norme flop ! Depuis, lharmonisation est laborieuse. Toutes les tentatives pour crer un " standard Linux " chouent rgulirement. Les rapprochements Gnome KDE souvent voqus ne sont gure plus dactualit. La diversit est une force mais aussi un inconvnient. Mais heureusement une initiative a retenu notre attention et mrite toute notre bienveillance : Linux Application Checker de la Linux Foundation. A mon grand regret ce nest pas un IDE capable de cibler, de compiler sur les distributions mais cest un pas important que cet outil propose de franchir. Il sagit de pouvoir vrifier son code sur lensemble des distributions ayant un profil LSB ! Ce nest pas un debugger, pas un IDE mais cela permet dj de vrifier la conformit de son code source avec les LSB. Cest loin dtre parfait mais dfaut dun accord entre les distributions, que pouvionsnous esprer de plus ? Un nouveau Kylix ? Nous ny croyons plus rellement, faute de combattants voulant se lancer dans laventure. Il y a bien Mono, mais certains objecteront " ah C#, un truc de Microsoft ! ". Lavantage est quil fonctionne et commence faire ses preuves. A vous de choisir. FRANOIS TONIC

PRO grammez !
Le magazine du dveloppement

Rdaction : redaction@programmez.com Directeur de la Rdaction : Jean Kaminsky Rdacteur en Chef : Franois Tonic Ont collabor : F. Mazu, L. Guillois, F. Dewasmes, C.Remy, J-B. Boisseau,. Experts : F. Madiot, P. Belaud, S. Drapeau, A. Cogoluegnes, M. Ghallab, L. Ellerbach, A. Kolawa, C. Bouchre, T. Imbert, F. Colin, L. Ribardire Illustrations : Piedoue Crdit photo : @iStockphoto.com - Sun Microsystems Maquette : AJE Conseils Publicit : Rgie publicitaire, K-Now sarl Pour la publicit uniquement : Tl. : 01 41 77 16 03 coordination@programmez.com Editeur : Go-02 sarl, 6 rue Bezout - 75014 Paris Coordination@programmez.com - Dpt lgal : parution - Commission paritaire : 0707K78366 ISSN : 1627-0908 - Imprimeur : ETC - 76198 Yvetot Directeur de la publication : J-C Vaudecrane Ce numro comporte 1 CD Rom Abonnement : Programmez 22, rue Ren Boulanger, 75472 Paris Cedex 10 - abonnements.programmez@groupe-gli.com Tl. : 01 55 56 70 55 - Fax : 01 55 56 70 20 - du lundi au jeudi de 9h30 12h30 et de 13h30 17h00, le vendredi de 9h00 12h00 et de 14h00 16h30. Tarifs abonnement (magazine seul) : 1 an - 11 numros France mtropolitaine : 45 - Etudiant : 39 CEE et Suisse : 51,83 Algrie, Maroc, Tunisie : 55,95 Canada : 64,33 Tom : 79,61 - Dom : 62,84 e Autres pays : nous consulter. PDF : 30 (Monde Entier) souscription en ligne.

LINFO PERMANENTE
WWW.PROGRAMMEZ.COM

PROCHAIN NUMRO
N113 novembre, parution 31 octobre

Quel est le rapport entre Google et Programmez ?


Ces deux mdias ont 10 ans en 2008. Bien sr, la comparaison sarrte l ! Mais elle illustre le challenge de votre magazine : durer, lre de linformation instantane et gratuite. Vous tes cependant environ quarante mille nous lire, chaque mois. 40 000, cest deux fois moins quil ya dix ans, mais vous tes fidles et le chiffre est globalement stable. Et il sagit bien de lecture ! Vous passez quatre heures en moyenne sur le magazine, alors quon reste quelques secondes sur une page web. La version lectronique en PDF, tlchargeable, de la revue, fille de la presse et du web, a un bel avenir Programmez est votre outil de veille technologique, d information, mais aussi en quelque sorte de formation. Vous savez que le monde du logiciel sest transform depuis 10 ans et se mtamorphosera encore dans les annes qui viennent. Lenqute lecteur vous dcrit comme curieux : vous voyez plus loin que le bout de votre langage favori, de votre plate-forme. Continuer runir des experts pour vous informer et vous aider progresser nest pas seulement notre mission, cest notre passion, notre " moteur " ! JEAN KAMINSKY

Soyez productif !

Dcouvrez les meilleures mthodes, les bonnes pratiques, les outils pour mieux coder, pour russir son projet

Dossier

Google

Dcouvrez toutes les nouvelles API : Android, Gears, App Engine, Protocol buffer

actu \\ en bref
De Cobol Java : Publicitas a annonc la publication du code source des outils dvelopps dans le cadre du projet NACA. Ils permettent de passer dun code Cobol en code Java. Du nouveau pour Silverlight La technologie RIA de Microsoft va enfin intgrer de nouveaux codecs vido / audio : H264 et AAC ! Ils seront aussi intgrs aux outils Expression. Malheureusement, aucune date de livraison nest annonce. Silverlight 2.0 est prvu pour la fin de lanne Dcouvrir CSharpEval : voil un petit outil bien pratique du projet Mono. Il sagit dun compilateur embarqu permettant dvaluer les instructions C#... Le tout dynamiquement ! Autre outil qui mrite votre attention : CsharpRepl, un shell interactif. Refactoring sous VS 2008 : souvent critiqu pour le manque de performance du refactoring, un projet open source se propose de combler les lacunes de Microsoft : TytanNET. Tout nest pas encore disponible, mais ce petit plug-in rendra bien des services ! site : http://www.codeplex.com/tyt annet NHibernate 2.0 : dj bien connu dans le monde Java, Hibernate a toujours eu du mal sur .Net, la faute a un cart fonctionnel avec la version Java. La v2 met niveau ldition .Net avec la v3.2 dHibernate ! Terracotta : encore assez peu connu, Terracotta est un cluster java open source. Il est possible de faire des applications Java EE rapidement distribues capables de monter en charge en monde cluster ! Il se place en middleware. Un projet particulirement intressant et dcouvrir ! site : http://www.terracotta.org/ ebay, une carte, son mail, etc. Les Activities, ou Accelerators, sont des services contextuels accessibles directement sur la page web. Cela permet daccder des services immdiatement sans changer de page, de remonter, etc. Par exemple, traduire dun clic une page web, afficher la recherche, etc. Cest trs pratique lusage, cela permet daller plus vite dans sa navigation, tout comme le webslice. Lobjectif de ces deux fonctions est de faciliter la vie de lutilisateur et pour le dveloppeur, lajout de ces fonctions se fait en codant avec les standards actuels du web, donc peu de surprises attendre. Autre nouveaut intressante, la possibilit davoir plusieurs moteurs de recherche dans la zone de recherche (en haut droite). Il suffit pour cela dajouter des providers. Une nouveaut galement intressante concerne la gestion des crashs: quand un onglet crashe suite un problme sur un site, on ne redmarre pas la session entire mais on perd uniquement la session en cours sur longlet ! Pratique ! Pas de date officielle de disponibilit de la version finale.

Navigateur

Microsoft lance IE8 bta 2


Accessible tout le monde, cette 2e bta complte les fonctions dIE8 (la liste tant dsormais close). Lditeur met en avant principalement les WebSlices et les Activities. Les WebSlices sont des portions dune page web que le dveloppeur dclare sur son site. Cela permet dajouter dans les favoris cette zone par exemple un article

Tests

Smartesting mise sur lInde


Editeur franais spcialis dans les tests logiciels, Smartesting tend un peu plus son audience et ses marchs. Dbut septembre, lditeur annonce louverture dune filiale en Inde. Un choix logique pour la socit qui sappuie sur la croissance de loffshore notamment en Inde. Dans ce contexte, les tests font souvent partie des contrats et les informaticiens indiens ont acquis une excellente rputation dans ce domaine ! Cela permet Smartesting de se rapprocher de ses clients qui travaillent dj en Inde. Smartesting veut aussi capitali-

ser sur la demande croissante doutils de tests complets, de suivi de tests, etc. Les entreprises ralisent que le test est incontournable, mme si cela revient cher ! Site : www.smartesting.com

Monde virtuel

OpenSimulator au cur de Second Life et de Lotus !


OpenSimulator pour ceux qui ne connaissent pas, est au cur des mondes virtuels et notamment de Second Life. Il sagit de crer, de grer et de dployer des mondes virtuels en 3D. Dvelopp en C#, vous pouvez lutiliser en Mono ou en langage .Net. Cependant, le projet nen est quau stade alpha. Et larchitecture est assez complexe mettre en place. Le support de NHinbernate, la mise jour du moteur de script sont, avec dautres fonctions, au menu de la v0.6. Lotus a annonc un dveloppement en vue dintgrer OpenSim dans sa solution de communication unifie. Site : http://opensimulator.org

PROgrammez ! \\ Octobre 2008

LACTU AU QUOTIDIEN www.programmez.com

actu \\ en bref
Modlisation
Alfresco, un sharepoint open source. Lditeur implmente le protocole Sharepoint, ouvert par Microsoft. Il est ainsi possible dutiliser des composants Sharepoint dans Alfresco (webpart). Ce choix est, selon lditeur, logique, car Sharepoint est devenu une rfrence sur le portail. Et veut tre une alternative Microsoft. VirtualBox 2 : Sun a lanc dbut septembre Virtual Box 2.x. Il supporte les

Microsoft rejoint OMG et adoptera UML


Est-ce un tournant de Microsoft sur UML ? Microsoft considre la modlisation comme un lment vital en entreprise pour briser les silos et reconnat lintrt du model driven development (MDD), qui trouve une place toute naturelle dans.Net. La participation de Microsoft lOMG qui " dirige " UML et BPMN nest pas anodine. Microsoft a toujours eu des rticences envers UML. Lditeur a annonc que le prochain Team System incorporera 5 diagrammes UML 2.1. On retrouvera aussi cette intgration dans la future plate-forme OSLO (plate-forme pour les applications distribues et pour le Cloud Computing). Est-ce pour autant la fin des DSL que Microsoft tente de promouvoir depuis plusieurs annes ? Officiellement non, il sagirait de raliser une approche UML + DSL. Nous en saurons plus dans quelques semaines lors de la PDC et de la TechEd.

Mia Software lance Mia-Studio 6


Editeur bien connu doutils MDA, Mia annonce la sortie de la 6e version de son studio de modlisation en y ajoutant des mcanismes de reverses-engineering pour Java EE, tout en renforant son intgration Eclipse. Dsormais, dans son environnement Eclipse, on aura directement accs au statut, au dtail de chaque zone de code complter, aux warning et lensemble des mtriques. Dautre part, lenvironnement sappuie sur EMF, la plate-forme de modlisation dEclipse ! Loutil supporte aussi Maven et amliore les packages gnrs. systmes 64-bit, offre une nouvelle interface sous MacOSX. Idal pour la virtualisation de bureau, il est lger et gratuit. Un kit de dveloppement est disponible pour crer ses propres extensions et mieux intgrer loutil ses applications. Hyperviseur : Microsoft lance la guerre de lhyperviseur avec Hyper-V Server 2008 qui sera disponible gratuitement, en tlchargement. Idal pour le dveloppeur, les tests, cette solution veut contrer ESXi VMware, lui aussi gratuit. Les enjeux se dplacent sur la virtualisation desktop, dapplications et les outils dadministration. Bouygues Telecom lancera sa " box ", Bbox, le 20 octobre prochain. Elle sera quipe de 4 ports Ethernet et USB, dun routeur wifi. Loprateur joue sur la simplicit dinstallation et dutilisation pour sduire les utilisateurs. A partir de 29,90 euros par mois. Gecko 2 ou pas ? Voil la question existentielle de Mozilla pour Firefox 4.0. Les amliorations de performances de lactuelle Gecko font hsiter la fondation basculer vers Gecko 2. La dcision devrait tre prise dans les prochains mois. Firefox 3.1 doit arriver au plus tard dbut 2009. Seagull Software conver tit vers Oracle. Lditeur sort en France Smart DB. Il permet de convertir des donnes vers les applications Oracle, de sassurer de lintgrit des donnes, de leur consolidation et de les amliorer. Des adaptateurs spcifiques sont disponibles.

Stratgie

IBM Lotus va " beyond office "


IBM propose depuis quelques mois une dition spcifique dOpenOffice : Symphony. Plus dpouill, concentr sur la bureautique, Symphony est dot dun puissant SDK et sembarque dans les autres solutions Lotus. Lditeur a dvoil une autre partie de sa stratgie : Beyond Office. Sous cette dsignation se cache la volont de passer en mode SaaS, aux applications en ligne comme Google et tant dautres diteurs. Ce nest donc pas un hasard si Lotus se lance massivement sur les services SaaS comme le projet Bluehouse et que des datacenters seront mis en place. Lobjectif est de faciliter la cration de documents en ligne, de les stocker, de les partager. Deux formats seront utiliss : ODF et Xforms, le support dOpenXML est prvu, plus tard. Pour le moment il sagit avec Beyond Office de mettre Symphony en ligne. A suivre de trs prs !

agenda \\
OCTOBRE MSDN & Technet Tour 2008 Le MSDN & Technet Tour redmarre du 29 septembre au 5 novembre 2008 dans 6 villes de France http://technet.microsoft.com/frfr/cc184917.aspx Le 2 Octobre, Paris, l'vnement de lancement SQL Server 2008 /Windows Server 2008 HyperV, avec Steve Ballmer, pour dcouvrir Les solutions dentreprise nouvelle gnration. http://c2.microsoft.fr/

Le 8 octobre, Vmware organise Paris son Vmware Virtualization Forum. http://info.vmware.com/ Confrence IBM Rational le 14 octobre l'IBM Forum, pour faire le point sur les derniers outils, dcouvrir Jazz et toutes les nouveauts de la fin de l'anne. http://www-05.ibm.com/fr/events/RSDC/ Qt Developer Days 2008 Europe Du mardi 14 octobre 2008 au mercredi 15 octobre 2008, Munich. http://trolltech.com/qtdevdays2008 Forum CXP 2008 Le 21 octobre 2008 http://www.cxp.fr/

21 & 22 octobre : Valtech Days, deux jours pour faire le point sur les technologies ! 21 octobre Paris : Eclipse, now you can. Journe consacre la plate-forme Eclipse http://www. eclipse-nowyoucan.com/index.php? Symposia NOVEMBRE Le 19 novembre, Paris, Confrence MySQL 2008 MySQL (appartenant dsormais Sun) a annonc la tenue de sa confrence annuelle franaise (payante), MySQL. La journe promet dtre trs riche: http://www. mysql.fr/news-and-events/european-conferences/2008/

Octobre 2008 \\ PROgrammez !

actu \\ en bref

2e Symposium Eclipse-OMG
Vers une meilleure implmentation des standards de lOMG sur Eclipse
LOMG a invit la communaut Eclipse en juin dernier, dans le cadre du meeting de lOMG Ottawa. Au menu : des rflexions de fond et des retours dexprience dditeurs ou de chercheurs qui ont dj eu loccasion de se frotter cet exercice. Le tout agrment de nombreux changes avec la salle, notamment sur la diffrence de nature entre les deux consortiums.

Deux cultures diffrentes


En effet, les difficults de synchronisation entre les deux consortiums sexpliquent en grande partie par des diffrences de culture lies leurs objectifs respectifs, leur processus de dcision, mais aussi aux profils des membres actifs. Comme la bien expliqu Kenneth Hussey lun des organisateurs de la journe, lun, lOMG est principalement compos de grandes socits utilisatrices et dditeurs logiciels qui payent un droit dinscription pour pouvoir influer sur les standards de demain. Pour voir le jour, chaque standard doit suivre un processus compos bien dfini auquel seuls les membres (payants) de lOMG peuvent participer : collecte dinformations (RFI), appel propositions (RFP), rvision des propositions, vote, finalisation. Les acteurs de ce processus sont gnralement des architectes ou des consultants ayant de nombreuses annes dexprience dans le domaine. A linverse, Eclipse est avant tout une communaut de dveloppeurs fonctionnant sur la " mritocratie " : les dcisions importantes sont prises par des responsables de projet dsigns par leurs pairs.

Des difficults bien identifies


Ces diffrences expliquent les principales difficults pour intgrer dans Eclipse des standards de lOMG : sur un mme sujet, ce sont gnralement des personnes diffrentes qui y travaillent dans Eclipse et lOMG et le rythme annuel de sortie de chaque version majeure dEclipse colle rarement avec le vote dun standard. Do la situation actuelle, illustre par les retours dexprience prsents Ottawa : les implmentations ntant gnralement pas ralises par les quipes qui ont labor le standard, les risques de divergences sont nombreux. Par exemple, selon James Bruck dIBM, auteur de limplmentation Eclipse dUML2, de nombreux manques ou imprcisions subsistaient dans la spcification dorigine, sans compter ses volutions permanentes pas toujours documentes qui ont compliqu le dveloppement du composant. Les mmes difficults ont t remontes par William Damus de ZeligSoft, auteur dune implmentation dOCL, qui pointe galement du doigt la longueur des processus de finalisation des standards qui oblige les outilleurs livrer des composants bass sur des spcifications intermdiaires ncessairement diffrentes de la spcification dfinitive. Le risque laisser perdurer ces difficults serait dencourager les dveloppeurs Eclipse saffranchir des standards. Comme le rsume Ed Merks dIBM, leader du projet EMP (Eclipse Modeling Project) : " Ceux qui agissent ouvrent la voie, ceux qui parlent ne sont que spectateurs ".

Converger : les axes damlioration


A la suite de ces difficults illustres par des cas concrets, une discussion trs riche et trs ouverte a suivi pour tenter de trouver des solutions. Deux axes damlioration ont ainsi merg. Le premier repose sur une amlioration de la communication de lOMG quant lvolution de ses standards (explicitation des diffrences, stratgies de migration dune version lautre, mise en place dun outil de suivi danomalies ouvert tous, etc.). Le deuxime axe consiste identifier et impliquer le plus tt possible et de manire systmatique pour chaque nouveau standard de lOMG, une quipe en charge de son implmentation dans Eclipse. Frdric Madiot - Directeur Produits de Mia-Software

SOFTEAM Formation
Exceptionnel !
Sminaire de Formation Journe Gratuite Les Meilleures Techniques pour lAlignement Mtier du Systme dInformation
Cest le nouvel enjeu des DSI. Robuste et performant, le SI doit aussi implmenter les stratgies mtiers de lentreprise, et tre suffisament agile pour sadapter rapidement aux changements mtiers, lis lenvironnement concurrentiel, lacclration du time to market, et la diffusion des nouveaux produits ou services qui en rsultent. SOFTEAM vous propose une journe exceptionnelle - et gratuite - pour partager avec vous son savoir faire et ses meilleures pratiques dans llaboration dun SI align sur le mtier de votre entreprise.
UML, M THODES

EA BPM
J2EE

SOA

UML

.NET Java

Catalogue de Formation 2008 - 2009


ET

M THODOLOGIE

SOA

Introduction aux technologies objets et UML . . . . . . . . . . . . . . . . . . . 1 j UML pour la matrise douvrage et lexpression de besoins . . . . . . . . . 2 j Analyse et conception avec UML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 j Processus de dveloppement objets : Etat de lart . . . . . . . . . . . . . . . . . 2 j De UML.1.x UML.2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 j Mthodologie pour SOA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 j

A RCHITECTURE
SOA SOA SOA

ET I NTGRATION

Architecture SOA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 j Dveloppement de Web Services en Java . . . . . . . . . . . . . . . . . . . . . . . 3 j Dveloppement de Web Services en C# . . . . . . . . . . . . . . . . . . . . . . . . 3 j Architecture et approche MDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 j Design Patterns avec Java / J2EE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 j Architecture et intgration : la synthse . . . . . . . . . . . . . . . . . . . . . . . . 3 j

AGENDA LAlignement Mtier du Systme dInformation


Lexpression des objectifs stratgiques La formalisation des Rgles Mtiers La construction du Rfrentiel La formalisation des Exigences La modlisation de lArchitecture dEntreprise EA La formalisation des Processus Mtiers BPM Llaboration dune architecture SOA LAnalyse et la Conception avec UML2 La transformation de modles avec MDA Illustration : gnration BPEL, XML, Java.

Programmation oriente objet avec Java . . . . . . . . . . . . . . . . . . . . 4 j Programmation Java avance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 j Dveloppement dapplications JEE 5 . . . . . . . . . . . . . . . . . . . . . . . 5 j Dveloppement dapplications JEE 5 Front End . . . . . . . . . . . . . . . 4 j Dveloppement dapplications JEE 5 Back End avec EJB 3 . . . . . . 3 j Matrise du framework Struts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 j Matrise du framework JSF - Java Server Faces . . . . . . . . . . . . . . . . 3 j Matrise du framework Spring . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 j Mapping Objet / Relationnel avec Hibernate . . . . . . . . . . . . . . . . 3 j Dveloppement dIHM avec Swing . . . . . . . . . . . . . . . . . . . . . . . . 3 j Dveloppement dapplications embarques avec J2ME . . . . . . . . 3 j 2.0 Dveloppement dIHM avec Ajax . . . . . . . . . . . . . . . . . . . . . . . . . 2 j Web 2.0 Dveloppement dapplications avec GWT . . . . . . . . . . . . . . . . . . 3 j Web D VELOPPEMENT .N ET Dveloppement dapplications .NET / C# . . . . . . . . . . . . . . . . . . 4 j Principes et architecture de la plate-forme .Net . . . . . . . . . . . . . . . 1 j Conception et dveloppement avec .Net 2.0 . . . . . . . . . . . . . . . . 5 j Dveloppement dapplications Web avec ASP.Net 2.0 . . . . . . . . . 5 j D VELOPPEMENT XML ET AUTRES LANGAGES Dveloppement d'applications avec XML . . . . . . . . . . . . . . . . . . . 4 j Formatage et transformation de documents XML avec XSL . . . . . . 2 j Dveloppement d'applications vocales avec VoiceXML . . . . . . . . 3 j Dveloppement dapplications avec C++ . . . . . . . . . . . . . . . . . . . 3 j

D VELOPPEMENT J AVA /J2EE

CONVERGENCE SOA, UML2, BPMN, EA AVEC O BJECTEERING SOA S OLUTION


Modlisation EA, BPMN, SOA avec Objecteering SOA Solution . . . . . . 5 j Analyse et Conception UML2 avec Objecteering Modeler . . . . . . . . . . 5 j Expression de besoins en UML2 avec Objecteering Requirements . . . . . . . 1 j Architecture MDA avec Objecteering MDA Modeler . . . . . . . . . . . . . . 2 j Gnration de code Java avec Objecteering Java Developer . . . . . . . . . 1 j Gnration de code .NET C# avec Objecteering C# Developer . . . . . . 1 j Gnration de code C++ avec Objecteering C++ Developer . . . . . . . . 1 j

Jeudi 20 octobre 9H00 17H00


Paris Centre
5158

Cette session de Formation unique sera anime par Philippe DESFRAY, spcialiste mondialement reconnu des Technologies Objets et Architectures Orientes Services. Membre contributeur de lOMG, il a particip llaboration des standards UML, UML2 et BPMN2, et travaille aujourdhui sur le futur standard de convergence SOAML de lOMG.

Inscrivez-vous en ligne

www.softeam.fr
Formation ligible au DIF, OPCVA etc. Nous contacter.

Tl. : 01 53 96 84 00 Fax : 01 53 96 84 01 Paris : 21 avenue Victor Hugo - 75016 Rennes - Nantes - Sophia Antipolis

actu \\ en bref

Adobe dvoile la Creative Suite 4


Aprs une longue attente, Adobe a dvoil le 23 septembre, la dernire version de sa Creative Suite. Tous les outils sont concerns par cette volution majeure pour les graphistes et dveloppeurs Sloth : un nouveau web en attendant les Framework MVC PHP nouveauts autour de Flex et est disponible. Actuellement en version 0.2, il AIR dans quelques semaines, est crit en PHP5. Son avec loutil Thermo, le tueur originalit tant de se dExpression Blend ! focaliser surtout sur la
vue et le contrleur. A dcouvrir. Site : http://sloth-project.org Cappucino : voil le prochain " buzz word " des frameworks web ! Il " retranscrit " lensemble Cocoa dApple en javascript. Il fonctionne en ralit avec Objective-J mais possde un runtime Javascript. Il sagit de pouvoir disposer dun modle de dveloppement desktop mais pour les applications web. A tester durgence ! site : http://cappuccino.org/ Softfluent va prochainement lancer CodeFluent for Sharepoint. Il sinsrera dans la version entreprise de CodeFluent et permettra de gnrer des sites Sharepoint et des webparts. Ainsi lditeur complte la panoplie technique de son environnement CodeFluent. site : http://codefluent.com/ Magic Software lance uniPaaS, un environnement ddi aux dveloppements client-serveur, RIA, SaaS, et hybrides. Il offre un modle de programmation unique pour cibler les dif frentes platesformes. Site : www.magicsoftware.com

omme pour la CS3, la CS4 arrive en diffrentes ditions, selon les utilisateurs (graphiste, dveloppeur, vido, flasheur). Nous avons install la version la plus complte : Adobe Creative Suite 4 Master Collection. Son installation intgrale ncessite pas moins de 15 Go ! Elle inclut : Acrobat Pro, Flash, Illustrator, Photoshop, Premire, Dreamweaver, Contribute, Fireworks, AfterEffects, Soundbooth, Encore, Bridge, Version Cue, Media Encoder, On Location. Pour exploiter au mieux cet ensemble, mieux vaut disposer dune solide machine avec 4 Go de mmoire vive minimum et une car te graphique rcente. Par contre, si la version Windows aura le support du 64-bit ce ne sera pas encore le cas pour la version Mac. Adobe essaie aussi damliorer les flux de productions entre les diffrents environnements (audio, vido, authoring, flash, dveloppement web, etc.) cela passe notamment par des outils comme Cue, Bridge et Encore. Cependant, sur la partie purement dveloppement, il manque un vrai intgrateur, ce sera un des rles de Thermo au niveau RIA. Si les interfaces des diffrents outils convergent il ne faut pas non plus sattendre des changements radicaux comme nous avons pu le constater. Mais le mouvement va dans le bon sens. A noter que le format SWF (Flash) est support par toutes les applications

Ce qui change dans Dreamweaver CS4


Parmi les nouveauts annonces, Live View est celle mise en avant. Cela permet dafficher directement dans sa page web en construction tout en donnant accs au code source. Cest l une nouveau mode daffichage (il utilise le moteur webkit). Dans la partie prvisualisation (sur Mac), on trouve Safari, Firefox, Opera, Device Central. Lditeur se dote de nouvelles fonctions, comme la surbrillance du code concern par la slection dans le design. Ensuite, on trouve les amliorations " classiques " sur le CSS, Javascript, Ajax, avec un support de plusieurs frameworks Jquery, Prototype et Spry. Rappelons que Spry est la version maison dAjax (et qui fonctionne relativement bien selon nos tests). Adobe oblige, lintgration avec Photoshop se fait plus fine comme sur le format PSD et la possibilit de crer des SmartObject image part dun document PSD. Autres nouveauts qui feront plaisirs aux dveloppeurs : prise en charge de Subversion ( !) et surtout le support dveloppement de AIR. Il permet partir de son site javascript de crer un support auteur de AIR. Cela va renforcer encore un peu plus la position de Dreamweaver, il ne reste plus qu assurer le support de Silverlight et de JavaFX pour complter la panoplie RIA de loutil ! Ct interface, nous la trouvons de plus en plus agrable et fluide ! Et surtout, lensemble de la gamme converge

(processus dj entam avec la CS3). De son ct Fireworks complte lui aussi ses fonctions avec lexper t PDF, limpor t CSS, un moteur de typographie plus volu et le support maintenant de AIR.

Et arriva Flash 10 !
La version 10 de Flash est lune des grosses nouveauts de la CS4. Connu sous le nom de code Astro, nous lavions vu en avant premire lors dAdobe Max en octobre dernier Barcelone. Pour mmoire, Flash 10 apporte les effets 3D, la personnalisation des effets et filtres, un moteur de texte volu, de nouvelles API de dessin, et des performances revues la hausse. Cette version promet beaucoup sur la partie desktop et notamment pour Flex ! Reste maintenant voir du ct mobilit toujours un peu la trane.

Le nouvel Adobe Soundbooth


Parmi les nouveauts, Adobe inclut dans sa suite crative Soundbooth. Il sagit dun outil pour traiter, grer, travailler le son, les pistes audio de ses vidos, des sites. Il supporte de nombreux formats et pas seulement ceux de lditeur. Il gre le multipiste, on peut rapidement diter une piste et corriger les niveaux, ajouter des effets, avec compression MP3. Un parfait complment Flash notamment, et surtout utile aux webmasters pour les podcasts Un test approfondi de Dreamweaver CS4 le mois prochain. Site : www.adobe.com

12

PROgrammez ! \\ Octobre 2008

Perforce, le systme de Gestion de Configuration Logicielle rapide

Le support technique Perforce


Des traitements rapides, des rponses prcises
Nos quipes supports sont toujours disponibles afin de partager leurs expertises en personne - pas de rponses automatiques, de rpondeurs ou de centres d'appel. Nos ingnieurs supports hautement qualifis se font une fiert de traiter rapidement vos appels et de vous apporter des rponses prcises. Raliser vos projets dans les dlais ncessites des quipes supports prtes vous aider quand vous en avez besoin. Vous pouvez compter sur le systme de GCL rapide Perforce et son support technique rput, pour vous donner un atout gagnant.

Tlchargez sans conditions une copie gratuite de Perforce sur www.perforce.com. Un service dassistance technique gratuit est offert pendant toute la priode dvaluation.
Tous droits rservs. Toutes les marques cites sont des marques ou des marques dposes de leurs propritaires respectifs.

vnements \\ google

En direct du.

Google Developer Day


La 2e dition de la journe Dveloppeur Google a fait un dtour par Paris le 18 septembre dernier. Par rapport ldition prcdente : locaux plus grands, un peu plus de monde, un contenu plus adapt aux dveloppeurs et la veille technologique.
Franois Tonic atrick Chanezon, vangliste technologique et grand amateur " dopensocial " chez Google a inaugur la journe. Il sagissait de retracer en une heure les principales thmatiques de Google : Google Gears, App Engine, Chrome, cloud computing, GWT, Ajax, Android, opensocial. La liste est longue. On peut en tirer les conclusions suivantes : - Google est un diteur de technologies, dAPI, de frameworks, de plates-formes - Google veut surfer sur la mode RIA comme Microsoft et Adobe avec sa propre plate-forme (Chrome), tout en crasant la timide tentative des RDA - Google souhaite devenir un fournisseur du Cloud Computing dans les applications, les serveurs et les services ! - Google veut tendre sa prsence sur le mobile en proposant sa propre plate-forme, gratuite : Android - Google noublie pas le Web 2.0 avec, notamment, GWT ! - Enfin, Google joue un rle dans les rseaux sociaux en proposant une api unique : opensocial La journe Dveloppeur a parfaitement illustr cela en proposant des sessions et des labs sur lensemble de ces points. La journe tait bien pense pour pouvoir bnficier des thmes rats le matin mais rejous laprs midi !

dispose dun SDK multi-plate-forme avec son mulateur, et les premiers terminaux arriveront dans quelques semaines. Avec Android, Google souhaite proposer une approche plus lgre que les systmes actuels, ouvert, dot dun modle de dveloppement connu et simplifi, un dploiement facilit pouvant prendre plusieurs formes (USB, rseau, etc.), une plate-forme hautement personnalisable. Mais un des paris est de savoir comment va ragir le march et notamment les principaux constructeurs. Et Google nhsite pas reprendre les bonnes ides dApple, crer une boutique limage de AppStore !

dadministration. La haute disponibilit est lun des gages dApp Engine.

Google Gears : le RIA fait peau neuve !


Extension des navigateurs, intgr directement dans Chrome et bientt sur mobile, Gears sappuie en partie sur HTML 5, un jeu dAPI pour accder aux donnes, au systme de fichier, linterface, etc. On peut aussi lancer une application Gears dans une fentre dun navigateur directement partir dun simple raccourci sur le bureau. Bref, on parle de fusionner RIA et RDA ! Si en plus on rajoute la golocalisation, linterface native, vous avez entre les mains la nouvelle application neuve, et dailleurs la session a t particulirement explicite : offrir les mmes capacits, performances, fonctions dans une application web quune application desktop ! Que lon soit connect ou dconnect. Cette technologie que lon oublie souvent mrite toute votre attention !

App Engine : le cloud computing selon Google


Les sessions ont eu le mrite de rappeler les fondamentaux du Cloud Computing : 3 notions de base (Haas pour le matriel, Paas pour la plateforme et le Saas pour les services). App Engine permet dhberger des applications en ligne. Aujourdhui, le service de base est gratuit (limit 500 Mo de donnes, 5 millions de pages vues par mois, ensuite on paie lutilisation). Il est disponible sur les principaux systmes et navigateurs. Le SDK volue constamment, nous sommes encore en pleine laboration Durant 60 minutes, il sagissait de crer, de packager et dployer son application. Si actuellement seul Python est disponible, il se murmure que Google prpare dautres langages, peut tre Java En ligne on accde au monitoring, la console

Mais alors comment gagner de largent ?


La dmarche est simple : Plus dapplications web riches -> plus dutilisateurs -> plus dusages -> plus de revenus. Le tout reposant sur une plate-forme web ouverte (open web platform) de Google bien entendu ! Bref, il sagit de crer des applications riches (design, interaction, services : informatique la demande presque) pour attirer les utilisateurs, les capter, gnrer de la demande, des usages et donc du chiffre daffaires !

Android : la plate-forme Google mobile cl en main


Android est un systme dexploitation pour les terminaux mobiles open source, gratuit, que tout constructeur ou dveloppeur peut utiliser. On

14

PROgrammez ! \\ Octobre 2008

vnements \\ internet

Google Chrome : le premier navigateur RIA


Un navigateur repose fondamentalement sur 4 piliers : un moteur de rendu HTML, un moteur dexcution JavaScript, une interface utilisateur et bien entendu une architecture pour faire reposer le tout.

i on sest beaucoup focalis sur Chrome depuis sa sortie, il ne faudrait pas oublier plusieurs lments vitaux sur lesquels il tourne. Chrome est le nom du navigateur " cl en main " que lutilisateur tlcharge et installe, et ce, bientt sur les trois systmes majeurs : Windows, OS X et Linux. En ralit, Chrome repose directement sur la fondation technique appel Chromium, qui est le vritable projet open source contenant larchitecture et lensemble des lments techniques permettant Chrome dtre lger et rapide. Dans cet ensemble, plusieurs lments sont relever : - Webkit pour le moteur de rendu et plus particulirement de WebCore. - V8 : moteur dexcution JavaScript

embarqu dans une application C++. Il implmente ECMAScript 3 et fonctionne sur XP Vista, Linux, OS X sur , processeurs ARM et IA-32. Le 64-bit nest pas prsent (et il ne semble pas prvu cour t terme). Etant un ensemble open source (sous licence BSD) vous pouvez loisir utiliser V8. Il est disponible sur le site officiel : http://code.google.com/p/v8/. Vous pouvez donc rcuprer le projet et le builder sur votre machine ! Toutes les instructions sont fournies sur le wiki du projet. Un Framework de test est disponible, inclus dans le moteur. Il est capable dexcuter les tests dfinis en standard mais aussi dautres jeux de tests, actuellement ceux de Mozilla. Il incorpore des tests unitaires crits en C++ et un autre jeu JavaScript. Cela peut sexcuter par un script de test Python. V8 est donc le moteur optimal pour les frameworks Ajax divers et varis et javascript en gnral. Or aujour-

Schma 1

Passer au V8
Ce qui fait la force de V8 se situe dans sa conception. Il est crit en C++ et peut tre excut seul ou

UN MOTEUR JAVASCRIPT SURBOOST


Baptis V8, le moteur Javascript de Chrome est lui une nouveaut complte. Son principal atout consiste dans la reprise de lide de compilation juste--temps de Tracemonkey, le moteur utilis par le futur Firefox. La mise en oeuvre de cette ide, assez complexe pour un langage aussi faiblement structur que Javascript, donne une bonne longueur davance V8 sur toute la concurrence... en attendant Firefox 3.1 ! En gnrant des pseudo-classes pour mieux mutualiser les comportements des objets et en mettant au point un ramasse-miettes efficace, les concepteurs de V8 ont dgag de nouvelles marges de manoeuvre pleines de promesses pour l'avenir. On remarque d'ailleurs que sur la majorit des tests, les deux principaux navigateurs Webkit (Chrome et Safari) sont nettement devant les autres en terme de vitesse. Sur le benchmark " Dromaeo " (de la fondation Mozilla), John Resig constate mme que le navigateur d'Apple peut s'avrer plus rapide que Chrome. Site : http://ejohn.org/blog/javascript-performance-rundown/ Jean-Baptiste Boisseau - Eutech SSII

dhui, un souci majeur existe sur les performances des sites massivement Ajax / javascript, cause des problmes de performances ! Pour arriver tre performant, V8 comporte trois lments cls : un accs rapide aux proprits, une machine de gnration de code dynamique et enfin un bon " garbage-collector ". Javascript tant un langage objet ne disposant pas de mcanisme de classes (c'est un langage dit " prototypes "), la gestion des objets et de leurs proprits est trs complique optimiser : chaque objet a ses caractristiques, et aucun ne peut tre reconnu comme semblable un autre. Tout le gnie des quipes de V8 a t d'imaginer un mcanisme analysant les objets, dterminant leurs similitudes et les rangeant dans des " familles " : V8 cre ainsi des " hidden classes " (dans la mesure o ce sont des classes invisibles pour le dveloppeur) qui rend ds lors pos-

16

PROgrammez ! \\ Octobre 2008

vnements \\ internet
Une interface utilisateur simplifie
L'interface (qu'on appelle " Chrome " dans tout navigateur web) est dpouille au maximum, ce qui limite bien entendu la consommation de ressources. Google a de plus ralis un kit graphique sur mesure afin de matriser au mieux cet aspect plutt que den laisser la responsabilit Windows ou un kit graphique tiers. Ce choix du minimalisme est souvent critiqu, en particulier par certains utilisateurs avancs de Firefox qui apprcient de bnficier de nombreuses fonctionnalits porte de clic... mais remettre en cause cela serait jeter par dessus bord un des principes de conception essentiels la russite de Chrome. Jean-Baptiste Boisseau

sible une vritable optimisation de l'accs aux proprits. Et chaque " nouveaut " dans un mme objet , une hidden class se cre, base sur la prcdente. Voir le mode de fonctionnement dans le schma ci-dessus. Lquipe de V8 met en avant le fait que le moteur na pas besoin dutiliser une structure de donnes sur le principe du dictionnaire pour stocker les proprits objets. Cela ncessite un accs au dictionnaire chaque modification dune proprit. Dautre part, V8 compile directement le code javascript quand celui-ci est excut pour la premire fois.

pour le moment, il nexiste pas de systme dextension la Firefox. Un tel rajout est dores et dj prvu. Et cela pourra se faire rapidement car Chromium supporte NPAPI (Netscape Plugin Application Programming Interface).

Une architecture globale bien pense


Larchitecture qui tient le tout a un mot d'ordre : compartimentation ! Ce qui dans la BD de prsentation de Chrome aux journalistes est rsum par lexpression un onglet, un processus est en ralit plus complexe comme le montre le schma. Pour faire simple : un processus-matre coordonne des processus de rendu, chacun de ces processus tant lui-mme multi-threads. Cette architecture segmente parfaitement les responsabilits et vite quun problme ne bloque lensemble de lapplication. Elle permet galement de mieux restituer la mmoire lorsquun processus est clos. Ce mme principe de compartimentation est appliqu en matire de plug-in : en utilisant astucieusement le motif de conception proxy, Chrome parvient isoler les plug-in en dehors des processus de rendu de la page web. Cette bonne ide demande toutefois tre perfectionne tant donn les ralentissements inhabituels que provoquent rgulirement les animations Flash sous Chrome. Jean-Baptiste Boisseau

Et pour le dveloppeur web ?


Pour le dveloppeur web, le webmaster, Chrome est encore un ovni car pas support par les diteurs et les outils de dveloppement , mais la situation devrait changer dans les mois venir. Ds aujourdhui il est possible de tester ses applications et sites avec Web Inspector, Task Manager, JavaScript Debugger. Lquipe met par ailleurs une liste de points surveiller, vrifier. Reportez-vous la page : http://www.google.com/chrome/intl/en/webmasters-faq.html#tools Franois Tonic

Passer sur Linux et OS X


Si basiquement des composants de Chromium fonctionnent dj en multiplate-forme, Chromium en tant que tel reste porter. Car pour Google, il ne sagit pas de faire un simple portage, mais de rellement exploiter au mieux Chrome / Chromium sur chaque systme et de conserver des performances leves, dou lutilit de composants hautement portables. Cet aspect est important dans un contexte dapplications connectes / dconnectes pour exploiter des lments desktop comme linterface (contexte : RIA / RDA). Ainsi lquipe ne sait pas encore quelle librairie pour la GUI : GTK ou Qt, mme si GTK reste le premier choix. Et le choix peut conditionner les performances futures Pour comprendre la rflexion multi-plate-forme de Chromium, nous vous conseillons de lire attentivement ce post rvlateur : http://googlemac.blogspot.com/2008/09/pla tforms-and-priorities.html Mais si larchitecture est bien pense, elle nest pas sans dfaut. Ainsi

Chrome, lautre RIA !


Noublions pas un lment important : Google Gears. Cela suffit donner toute limportance de Chrome pour Google. Le fait que Gears, servant btir des applications connectes dconnectes, soit un lment standard fait de facto de Chrome un conteneur idal pour ce type dapplication web / desktop, surtout quand on sait que Adobe, Sun, Microsoft travaillent sur des fonctions similaires. Dautre part, il intgre un gestionnaire de process, car Chrome est multi process, il permet une grande souplesse dans la gestion des diffrents process, ce qui, l aussi est dun grand intrt dans le cas de Gears. Et une telle gestion doit aussi mieux allouer et librer la mmoire, et viter lutilisation inefficace de ressources. Il est un peu tt pour dire si avec Chrome, Google a l une alternative JavaFX, Silverlight mais avec lensemble des API de lditeur, il est clair que Google possde avec Chrome un conteneur RIA adapt ses besoins. Et surtout, en vitant laffrontement IE-Mozilla, Chrome se concentre sur lessentiel. Pour le moment, Chrome est encore en dveloppement et ne peut pas tre utilis en entreprise pour des applications. Mais il est possible ds aujourdhui de ltudier, de tester ces codes. Nous reviendrons dans les prochains numros sur Chrome / Chromium, tellement le sujet est riche. Pour en savoir plus : http://www.google.com/googlebooks/chrome/med_00.html

Octobre 2008 \\ PROgrammez !

17

sgbd \\ sql serveur 2008

Le Resource Governor
Jusqu prsent, nous navions pas la possibilit dallouer plus de ressources" telle ou telle catgorie dutilisateurs ou dapplications et " moins de ressources " dautres. Avec le " Resource Governor ", il est dsormais possible dallouer tout ou partie des processeurs de la machine hbergeant votre instance SQL Server 2008. De la mme manire, une rpartition de la mmoire utilise peut tre envisage. Il est noter que chaque instance SQL Server 2008 ne peut affecter lutilisation que des seuls processeurs et ressource mmoire qui lui sont allous. La comprhension du fonctionnement du " Resource Governor " passe imprativement par la comprhension des concepts suivants : Pool Workload Group Fonction de classification

1re partie

Dans le numro prcdent, nous avions brass lensemble des nouveauts de SQL Server 2008. Ce mois-ci nous poursuivons notre dcouverte technique, avec Pascal Belaud, en mettant le focus sur le Resource Governor, un outil surpuissant !
Create Resource Pool [Pool1] With (Min_Cpu_Percent=30, Max_Cpu_ Percent=100, Min_Memory_Percent=0, Max_Memory_Percent=100) Create Resource Pool [Pool2] With (Min_Cpu_Percent=30, Max_Cpu_ Percent=100, Min_Memory_Percent=25, Max_Memory_Percent=100) Create Resource Pool [Pool3] With (Min_Cpu_Percent=60, Max_Cpu_ Percent=100, Min_Memory_Percent=0, Max_Memory_Percent=100)

Workload group
Un " workload group " reprsente un " conteneur " pour des sessions SQL Server 2008 permettant de les regrouper ensemble, ceci bas sur un critre de classification dfini par ladministrateur lui-mme (voir plus bas). A chaque " workload group " est associ un et un seul " pool ". Ce " workload group " excutera lensemble des sessions qui lui seront rattaches en respectant la lettre les impratifs dutilisation des ressources dcrits dans les caractristiques du " pool ". Comment le moteur SQL Server 2008 peut-il dcider daffecter telle session tel ou tel autre " workload group " ? Et bien, quon se rassure, il ny a aucun arbitraire ici. Vous tes le seul, et le plus mme de prendre cette dcision ! Cest tout lobjet de la fonction de classification.

Pool
Un " pool " reprsente les ressources physiques du serveur hbergeant linstance SQL Server 2008. Dans cette version, seules la (ou les) CPU et la mmoire physique peuvent tre gres dans ce pool (il nest pas exclu que dautres ressources physiques soient rajoutes cette notion de " pool " dans des versions ultrieures). Pour chacune de ces ressources, il est possible daffecter une valeur " Min " et une valeur " Max ". Ces valeurs vont permettre daffiner lutilisation des ressources pour telle ou telle catgorie dapplication/utilisateur. La valeur " Min " correspondra la valeur minimum garantie tandis que la valeur " Max " ne pourra tre honore que si les ressources disponibles au moment de la demande le permettent. Il est noter quil existe deux " pools " qui sont crs linstallation de linstance SQL Server 2008 : internal pool : ce pool correspond aux ressources utilises en interne par linstance. Il ne peut en aucun cas tre altr. default pool: ce pool sera celui utiliser si linstance SQL narrive pas dterminer la catgorie (" workload group ", voir plus bas) laquelle appartient lappelant. La somme de toutes les valeurs " Min " de lensemble des " pools " dfinis ne pourra pas dpasser la valeur 100%. Chaque valeur " Max " devra quant elle tre comprise entre la valeur " Min " et 100%. Voici un exemple de cration de " pools " :

Fonction de classification
En effet, pour prendre cette dcision, il vous suffit dcrire vousmme la fonction de classification qui va permettre au systme de dterminer que la session demande doit tre rattache au bon " workload group ". Imaginons que nous ayons deux utilisateurs dclars dans linstance SQL Server 2008 : Create Policy Create Policy Login Utilisateur1 With Password = 'MotDePasse1', Check_ = Off Login Utilisateur2 With Password = 'MotDePasse2', Check_ = Off

Un exemple de fonction de classification pourrait tre : Create Function FonctionClassification() returns sysname with Schemabinding Begin

Fig.1

Fig.2

Fig.3

18

PROgrammez ! \\ Octobre 2008

sgbd \\ sql serveur 2008


Fig.4 Fig.5 Fig.7

Declare @Val sysname Declare @LogonActuel sysname = Lower(Suser_Sname()) If @LogonActuel = 'utilisateur1' Set @Val='Workload1'; If @LogonActuel = 'utilisateur2' Set @Val='Workload2'; Return @Val End Ici nous dcidons que toute requte excute sous le compte Utilisateur1 sera affecte au workload1, tandis que celle ralise sous le compte Utilisateur2 sera affecte au workload2. Cette classification est extrmement simple et permet de rpartir les ressources de votre instance SQL Server 2008 entre diffrents utilisateurs ou groupes dutilisateurs. Il ne reste plus qu indiquer au " Resource Governor " de linstance SQL Server 2008 quelle est la bonne fonction de classification utiliser : Grant Execute On FonctionClassification To Public Alter Resource Governor With (Classifier_Function = Fonction Classification) Alter Resource Governor Reconfigure On peut dsormais tester le fonctionnement de notre paramtrage en utilisant une requte trs gourmande en temps processeur : Set Nocount On Declare @I int = 100000000 Declare @S varchar(100) While @I > 0 Begin Select @S = @@Version Set @I = @I - 1 End Nous allons excuter cette requte simultanment sous les deux comptes prcdents, savoir Utilisateur1 et Utilisateur2. Pour juger de lefficacit du " Resource Governor ", nous allons utiliser " Performance Monitor (perfmon) " et constater que deux nouveaux compteurs sont apparus suite la cration des deux " workload group " prcdents : [Fig.1] Nous allons maintenant excuter les tches suivantes : Etape 1 : excution de la requte sous le compte Utilisateur1 dans un premier temps Etape 2 : excution, en parallle, de la requte sous le compte Utilisateur2 [Fig.2] Avant daller plus loin, il est noter que visiblement, nous nutilisons pas 100% de la CPU de la machine mais seulement 50%. Ceci est absolument normal dans le cadre de cette dmonstration car, en

Fig.6

fait, la machine sur laquelle ces requtes sont excutes possde deux processeurs (CPU0 et CPU1). Linstance SQL Server 2008 a t configure pour nutiliser que le premier processeur (CPU0). Il est affich en bleu et on voit bien quil est utilis 100%. Lorsque la premire requte est excute, le systme lui alloue 100% de la CPU0 (soit 50% de lensemble du temps processeur du systme). A la deuxime tape, nous dcidons de lancer en parallle la seconde requte et lon voit que le systme rpartit immdiatement la charge CPU de manire quitable, soit 50% de CPU0 pour la premire requte et 50% de CPU0 pour la seconde requte (traduit ici par 25% du temps total processeur pour chacune delle). Nous allons maintenant changer la rpartition de lutilisation de la CPU entre les deux utilisateurs. Nous avons la possibilit de modifier toutes les caractristiques de notre " resource governor " via loutil dadministration de SQL Server 2008 appel " Management Studio ".[Fig.3], [Fig.4]. Il est galement possible deffectuer ces paramtrages par script T-SQL (Etape 4) : Alter Resource Pool Pool1 With (Max_Cpu_Percent = 30) Alter Resource Pool Pool2 With (Max_Cpu_Percent = 70) Alter Resource Governor Reconfigure Comme le montre la figure suivante, un changement de paramtrage devient actif immdiatement et chaud, c'est--dire que les requtes, alors quelles sont encore en train de tourner, bnficient de la nouvelle rpartition ds que cette dernire est enregistre dans le systme : [Fig.5] Pour rappel, voici les valeurs de rpartition constates sur le " Performance Monitor " compte-tenu du fait que la machine possde 2 processeurs : [Fig.6] Comme vous venez de le voir, le Resource Governor permet darriver un niveau de personnalisation intressant. Cette fonctionnalit peut galement rpondre au cas les plus complexes. [Fig.7]

Pascal Belaud, Microsoft France Pascal est en charge, depuis plus de 10 annes, de la relation technique avec les dveloppeurs chez Microsoft France. Vous pouvez le retrouver sur son blog ladresse : http://blogs.msdn.com/Pascal

20

PROgrammez ! \\ Octobre 2008

gros plan \\ eclipse - netbeans

Eclipse - NetBeans :
comment choisir loutil idal ?
Quand on dbute la programmation Java ou que lon est dj un bon torrfacteur de caf javanais, un moment ou un autre, se pose la question de loutillage. Il ne faut pas oublier de revenir aux fondamentaux de la programmation : les outils ! Sans eux, vous pouvez tre un expert en toute technologie vous ne ferez pas grand chose
ans le monde merveilleux du dveloppement Java, il y a encore quelques annes, nous avions un trs grand choix : JBuilder, JetBrains, Eclipse, Netbeans, VisualCaf, jcreator, jde, etc. On connat ce quil en est advenu : Eclipse a tout cras ou presque. JBuilder a connu des heures sombres et est pass sur Eclipse. JetBrains rsiste tant bien que mal, JDev se " contente " de dveloppeurs Oracle. Netbeans, issu de Sun, ntait pas au point : lent, peu performant, lacunes fonctionnelles. En peine 3 ans, cet IDE a russi le dfi de rejoindre Eclipse et de connatre une reconstruction totale de son environnement et cela paie ! Netbeans est redevenu une vraie alter-

native Eclipse mme si, notamment, en France, il demeure souvent mal considr et encore assez peu utilis. Est-ce pour autant que lon va refaire un Eclipse vs Netbeans pour la nime fois ? Oui et non. Oui dans le sens o nous allons comparer fonction par fonction les avantages et inconvnients de chaque IDE. Non, car le but ici nest pas de comparer brut de fonderie les deux outils. Ce dossier doit vous permettre de mieux savoir ce que lon trouve, ou ne trouve pas, dans ces environnements. Et au final, vous saurez comment mieux choisir en fonction de vos besoins et impratifs techniques. Nous vous dvoilerons aussi le futur dEclipse, avec le projet e4. Franois Tonic

22

PROgrammez ! \\ Octobre 2008

gros plan \\ eclipse - netbeans

Eclipse 4.0 : un aperu de lavenir


En mars dernier, la fondation Eclipse a annonc la cration d'un nouveau composant nomm e4. Derrire ce nom se cachent les bases de la prochaine version majeure d'Eclipse SDK (Eclipse SDK 4.0). Une premire version (technical preview) est prvue au mieux pour l't 2009 et une version stable (first regular release) pour l't 2010.
Stphane Drapeau leader du projet SCA : http://www.eclipse.org/stp/sca/ - http://www.obeo.fr ais ds prsent des dmonstrations sont disponibles en ligne. Toutefois, Eclipse 3.x existera encore pour au moins 5 ans (Eclipse 3.5 - Galileo est prvu pour juin 2009).Les principaux objectifs de cette future version sont de simplifier la plate-forme, d'ouvrir Eclipse aux autres langages de programmation et de faire d'Eclipse une plate-forme d'applications plus qu'un environnement de programmation.

d'instances de ces listener. La fiabilit doit galement tre amliore, notamment grce la dfinition d'une architecture commune pour la gestion de la concurrence.

Principales volutions de la plate-forme


Le modle de programmation doit tre simplifi afin de faciliter l'criture des plug-in. Cela passe par une simplification des API, et par l'utilisation du framework EMF pour mettre en oeuvre un vritable modle de la plate-forme Eclipse. Les API sont galement en cours d'uniformisation et une premire liste d'API recommandes a t fournie. L'objectif est de rduire la complexit et d'augmenter la rutilisation en proposant un ensemble de services de base et d'API recommandes, sur lesquels il est possible de venir construire d'autres plug-in. Une des volutions majeures envisage concerne la possibilit d'crire des plug-in dans des langages autres que Java. L'objectif est d'accrotre la communaut en attirant les dveloppeurs non Java, mais galement de permettre d'utiliser Eclipse dans des contextes spcifiques : par exemple, des plug-in JavaScript pour des pages web. Cela implique donc d'tendre OSGi afin de supporter des plug-in crits dans d'autres langages et de rendre accessibles les ressources ncessaires leur excution. Il est galement prvu de permettre de dvelopper des interfaces graphiques modifiables (de manire

Simplification et optimisation de la plate-forme


L'objectif est d'amliorer les performances par rapport Eclipse 3.4 en stoppant la prise de poids chronique dont souffrent les dernires versions d'Eclipse : rduction du nombre de classes et de l'empreinte mmoire. Des objectifs chiffrs sont mme fournis : 10% plus rapide au dmarrage (SDK sans plug-in additionnel), 10% de moins pour l'empreinte mmoire aprs ouverture des prfrences, 10% plus performant en moyenne. Pour cela, le noyau sera compltement revu afin d'en faire un noyau minimum commun. Par exemple, il est prvu de ne plus inclure les concepts de projets et de perspectives, notions non ncessaires tous les types d'applications. Il est galement planifi de diminuer le nombre de listener en identifiant un mcanisme de notification commun, et galement de rduire le nombre

dclarative ou en se basant sur des modles) la fois en phase de dveloppement et l'excution. Cela passe par l'introduction du support de la gestion de scripts et de styles dans la plate-forme. L'implmentation Web de la plate-forme Eclipse et de SWT est un autre grand thme dEclipse 4.0. Plusieurs pistes sont l'tude. La premire approche consiste excuter le code Java sur un serveur et le rendu de l'interface graphique sur le client. C'est l'approche du projet RAP (Rich Client Platform). La seconde piste suivie consiste excuter un langage de type Java (Flex, Dojo ou Silverlight) sur le client la " Google Web Toolkit ". De nombreuses autres fonctionnalits sont prvues ou en cours d'tude, comme la possibilit d'avoir des workspaces distants, l'uniformisation des frameworks de connexion (ceux de projets CVS, WTP ECF, DTP ...). , , En novembre prochain, Eclipse Summit Europe sera loccasion dchanger et de prciser larchitecture de e4. Ainsi le comit de programme constitu de Ralph Mueller (Responsable Europe de la fondation Eclipse), Cdric Brun (Obeo), Hendrick Hoefer (Microdoc), Daniel Megert (IBM), Jeff McAffer (Code9) et Juergen Wiesmaier (Compeople) a tout particulirement soign la place laisse e4 au sein de la confrence. Nul doute que l'vnement Eclipse le plus important en Europe va encore dvoiler de nombreuses nouveauts lies e4. Pour en savoir plus : http://wiki.eclipse.org/E4

Le mois prochain : focus sur le

Octobre futur de Netbeans 2008 \\ PROgrammez ! 23

gros plan \\ eclipse - netbeans

Choisir son IDE idal


Eclipse et Netbeans sont connus pour tre des environnements de dveloppement Java, mais aussi web, C et C++. Si Eclipse parat avoir une longueur davance (et craser la concurrence), NetBeans, depuis la version 5, sest considrablement amlior et na pas dit son dernier mot. Quand on est dveloppeur, dbutant ou avanc, lequel faut-il choisir : Eclipse ou NetBeans ?
Arnaud Cogolugnes - Architecte JEE chez SQLI
Fig.1

Les quatre principaux IDE Java sont Eclipse, Netbeans, IntelliJ IDEA et Oracle JDevelopper, sans compter les distributions Eclipse comme MyEclipse. JBuilder fut longtemps une rfrence et est depuis pass sur un socle Eclipse. JDevelopper est plus destin un usage interne ou pour les utilisateurs des produits Oracle. De tous ces outils, Eclipse et Netbeans sont les seuls tre gratuits et open source.

la fin de lanne, avec comme grande amlioration un support pour PHP .

exporter en Ajax ! Tout comme NetBeans, Eclipse est aussi une plateforme riche avec Eclipse RCP .

Linstallation
Eclipse 3.4 : dans la continuit Eclipse est depuis juin dernier en version 3.4, nom de code Ganymde. La dernire grande refonte dEclipse date de 2004, avec la v3, qui reconcevait compltement le moteur dexcution de lEDI, en le basant sur la plate-forme OSGi. Depuis lors, les diffrentes versions ne reprsentent pas une aussi grande volution que Netbeans 6. Elles sont plutt faites de changements internes et dintgration de diffrents projets de la florissante fondation Eclipse. La fondation Eclipse comprend environ 90 projets et Ganymde en regroupe 23. Chacun de ces projets tant autonome, Ganymde reprsente donc un dfi organisationnel, mais aussi technique avec ses 18 millions de lignes de code. Ganymde propose notamment de meilleures performances grce au support pour les machines multi-core, un principe de collection de donnes comportementales sur lutilisation dEclipse (permettant ainsi de connatre prcisment lutilisation faite) et une plate-forme de dveloppement permettant de programmer des applications en SWT/JFace et de les Au niveau de linstallation, Netbeans et Eclipse viennent chacun sous diffrentes formes. Lide commune est de partir dun environnement de base que lon peut alors habiller finement avec des plug-in ou alors avoir un environnement pr-packag selon les dveloppements que lon fait (web, clients lourds). Dans le premier cas, on tlcharge la distribution la plus simple et lon peut alors passer du temps paramtrer finement les plug-in que lon veut, pour avoir un environnement sur mesure. Dans le deuxime cas, chacun des sites nous propose des " bundles ", cest--dire le noyau enrob de plug-in selon nos besoins. Les bundles proposs par Netbeans et Eclipse sont relativement similaires : un environnement simple pour le dveloppement Java, un autre environnement pour les dveloppements Web avec un support pour des serveurs dapplications (Tomcat et Glassfish pour Netbeans). Il existe aussi un bundle " complet ", incluant la plupart des plug-in officiels de la communaut. Le principe des bundles est intressant puisquil vite la chasse aux plug-in et propose dj une bonne granularit pour avoir un EDI adapt lutilisation que lon veut

Les deux prtendants

Netbeans 6.1 : toujours en progrs Sun sest lanc dans un chantier ambitieux pour proposer un outil hautement productif et parfaitement intgr Java. Le rsultat est plutt impressionnant : ldition du code source avec Netbeans laisse une trs bonne impression, lintgration avec de nombreux outils est transparente. Dans sa version 6.1, Netbeans apporte un grand nombre damliorations : un meilleur support pour le JavaScript (compltion et du refactoring simple), un suppor t natif pour Spring, un meilleur support des serveurs JEE, de la compltion pour la JavaDoc, une gnration CRUD pour JSF et JPA partir dune base de donnes et des performances amliores ! Bref, lquipe de Netbeans est trs active. La version 6.5 de Netbeans est prvue pour

24

PROgrammez ! \\ Octobre 2008

gros plan \\ eclipse - netbeans


avoir (les tests de cet article ont t effectus sur les bundles Web des deux environnements). Ct installation, un lger avantage pour Netbeans qui propose un installeur pour les utilisateurs de Windows. suffisamment attrayant pour donner envie de travailler avec loutil. Ct technique, Netbeans est entirement crit avec la bibliothque Swing, native lenvironnement Java. Eclipse nest pas en reste avec une interface sintgrant parfaitement avec le systme dexploitation, puisquutilisant les bibliothques SWT et JFace. Lapparence globale d Eclipse a peu chang depuis la version 3.0. Les deux EDI proposent la possibilit dagencer lenvironnement comme bon nous semble : diteurs et vues peuvent tre positionns judicieusement, selon le travail que lon effectue. Netbeans propose mme une vue pleine cran ! Eclipse dispose du principe de perspective, qui correspond une organisation de vues, selon la fonctionnalit en cours (dveloppement Java, dbogage, CVS).
Fig.2

Lespace de travail
Eclipse lance directement une invitation un peu laconique concernant le choix dun " workspace " (" espace de travail "). Cette notion est un peu perturbante au dbut. Lespace de travail stocke en effet les projets sur lesquels on travaille et le paramtrage de tous les plug-in. Ainsi, si lon travaille sur plusieurs sujets (des applicat i o n s m t i e r We b p o u r v o t r e entreprise ou des clients, des frameworks open source, des valuations de diffrentes technologies), chaque contexte peut tre sauvegard dans un espace de travail distinct et votre EDI ne devient pas un fouillis de toutes vos activits. On touche l une caractristique rcurrente dans Eclipse : une fonctionnalit trs utile offrant de la flexibilit mais prsente abruptement sans vraiment dexplications. Eclipse est en effet trs souple et trs puissant mais il ncessite toujours un paramtrage un peu plus pouss. Ct Netbeans, on dispose aussi de lespace de travail. Netbeans propose un lment similaire (peut-tre moins puissant) lespace de travail dEclipse : les groupes de projets. Cependant cette notion nest pas introduite immdiatement et on peut utiliser Netbeans pendant des mois sans en connatre lexistence. Les deux outils proposent des wizards pour la cration de projets. Le fonctionnement reste le mme : choix dun type de projet (Java classique, application Web, EJB) et les deux EDI se talonnent pour cette fonctionnalit trs importante. Linterface graphique de Netbeans est trs soigne : icnes, look-andfeel proche du systme dexploitation, diteurs de code avec coloration syntaxique pour de nombreux types de fichiers, palettes de vues (projets, structure de lobjet dit, bibliothques de composants glisser/dplacer). Bref, le look est

Ldition de code et le refactoring


Pour ce qui est de ldition pure, les deux environnements se ressemblent. La compltion du code Java est excellente et devient plus intelligente. Elle peut tre par exemple plus approprie selon le contexte : si lon demande une compltion pour un paramtre dun certain type, lditeur va proposer les variables accessibles et correspondant ce type. Le meilleur support ddition est sans conteste celui pour Java, mais les autres types de fichiers ne sont pas en reste (JSP , XML), avec une excellente coloration syntaxique et de la compltion (ex. : pour les fichiers XML disposant dune DTD ou dun schma). On dispose dune pr-compilation, indiquant immdiatement les erreurs de compilation. De la gnration simple de code est aussi possible : g e t t e r / s e t t e r, c o n s t r u c t e u r s , mthodes hashCode et equals Le refactoring est lui aussi support par les deux EDI. Ils peuvent aider dans cette activit, en automatisant certaines modifications. Par exemple, la modification du nom dune mthode peut tre rpercute automatiquement sur tout le code appelant. Les deux EDI supportent aussi la modification en cascade du nom dune classe, dune proprit ou dune variable locale.

Le support pour le refactoring ne sarrte pas l, il est aussi possible dajouter des paramtres une mthode et de choisir une valeur par dfaut pour tous les appels existants, dextraire du code pour en faire une mthode part entire ou encore dextraire une classe abstraite partir dune classe existante Selon les oprations de refactoring, les EDI sont aussi capables de gnrer un aperu, afin dvaluer les consquences de lopration. Eclipse dispose dune lgre avance, certainement due sa maturit. Certaines oprations assez complexes sont supportes : cration dindirections dappel, cration et application de scripts de refactoring Sur la partie dition de code, les deux outils sont globalement gaux.

Les outils et fonctions


Les IDE modernes incluent de nombreux outils annexes. On peut citer parmi ceux-ci les gestionnaires de sources, des outils de construction (" build ") et les tests unitaires. Ct gestion de sources, Netbeans propose nativement un support de CVS et de Subversion. Eclipse na que CVS, mais un plug-in Subversion officiel est en dveloppement. Des outils tels que Ant et Maven 2 sont supports par les deux. En NetBeans, le build est systmatiquement bas sur Ant. Si le support de Maven 2 est trs bien, il est trop intrusif pour le dveloppeur. Un projet est totalement gr en Maven 2 ou pas du tout ! Ct Eclipse, le support pour Maven 2 peut tre ajout diffrents niveaux, ncessitant peut-tre une configuration plus fine mais offrant

Octobre 2008 Recevez la Newsletter www.programmez.com/inscription.php \\ PROgrammez ! 25

gros plan \\ eclipse - netbeans


plus de souplesse. Le plug-in Maven 2 pour Eclipse le plus populaire est celui de Codehaus, mais il existe un autre projet, q4e, dont le code va tre rcupr pour servir au projet Eclipse Integration for Apache Maven (IAM). [Fig.2] Pour les tests unitaires, on dispose dun bon support pour JUnit 3 et 4. Ce support se prsente sous la forme de wizard gnrant lossature du test et des lanceurs pour les tests. Lavantage va plutt Eclipse dont les lanceurs sont plus ergonomiques. Un autre point important pour un EDI Java est le support pour le dveloppement dapplications dentreprise. L, encore, les deux EDI sont trs proches lun de lautre. Ils proposent chacun un client SQL multi-base de donnes, vous permettant de coder et de consulter votre base de donnes partir dun mme outil. Netbeans sinterface particulirement bien avec Java DB (anciennement Apache Derby), la base de donnes officielle de Java, maintenant livr avec le JDK 6. Si les clients des deux EDI sont globalement proches en fonctionnalits, on peut laisser un petit avantage Netbeans, qui propose une interface de configuration plus conviviale. pour diffrents frameworks Web : JSF, Struts, Wicket, Spring MVC et GWT. Il est possible de crer un projet Web Struts ou mme de donner une composante Struts un projet Web existant. Netbeans se charge alors de prconfigurer tous les lments ncessaires et propose gnralement (selon le framework) des outils graphiques. Si Eclipse propose des quivalences, ils sont rarement aussi bien packags que son concurrent. Spring ncessite une attention particulire. Avec Netbeans, il est par exemple possible davoir rapidement un squelette de lapplication Spring MVC mais aussi de bnficier de compltion et dhyperliens dans les fichiers Spring. Eclipse dispose quant lui du plug-in SpringIDE. SpringSource privilgie Eclipse, notamment pour lintgration de sa plate-forme applicative et via une distribution Eclipse complte. dveloppement sur les appareils mobiles puissants (CDC) peut tirer parti des mulateurs fournis ! Un support pour Android est disponible via un plug-in. Eclipse propose aussi un support pour le dveloppement mobile mais il est moins structur. Il propose sa propre plate-forme avec eRCP (embedded RCP), une version lgre de RCP Le support Java ME . est pour linstant en gestation, avec le projet Mobile Tools for Java, bas sur EclipseME.

Standards et autres langages


Ct standards, la plupart des API de la pile JEE sont aussi bien prsents dans les deux IDE. Chacun propose des wizards et un support pour JPA, EJB 3, Web Services, SOA Eclipse et Netbeans ne sont pas limits au dveloppement Java. Ils supportent de nombreux langages : C et C++. Celui de Netbeans reste basique, tandis que celui dEclipse (CDT pour C/C++ Development Tools) fait maintenant rfrence dans le monde C/C++. Le CDT propose notamment un framework de refactoring trs pouss. Eclipse est aussi un environnement de dveloppement pour COBOL et AspectJ. Ces supports sont proposs par la communaut Eclipse et sont donc officiels. Dautres supports sont apports par des plug-in tiers, par exemple pour Ruby. Netbeans, propose un excellent support pour Ruby et ses variantes (JRuby, Rails). PHP mrite une attention particulire : il en existe plusieurs sous Eclipse, mais le PDT (PHP Development Tools), dvelopp par Zend et IBM, est sans conteste le plus avanc. Netbeans dans sa version 6.5 fera aussi du PHP .

Outils de RAD
Ils permettent de dvelopper en quelques clics. Ces outils se justifient pour des phases de tests ou de prototypages. Eclipse propose un outillage RAD limit. Ct client lourd, il nexiste plus de support officiel open source, le plug-in Visual Editor ntant plus support depuis Eclipse 3.3. Ct web, Eclipse propose de ldition visuelle de composants, notamment pour HTML, JSP et JSF. Netbeans propose en revanche un trs bon support, avec notamment la possibilit de gnrer des applications JSF ou Swing, aussi bien pour la partie vue que persistance des donnes. Le prototypage avec Netbeans est donc grandement facilit. Matisse, ddi Swing, fait maintenant rfrence et permet de dvelopper des crans avec un code de bonne qualit. A noter quil existe un portage de Matisse pour Eclipse mais payant. Avantage : Netbeans.

Les serveurs dapplication


Ct serveurs dapplications, avec Netbeans, on dispose de Tomcat 6 et de Glassfish (implmentation de rfrence pour JEE). Tout projet Web peut tre lanc sur lun ou lautre, le tout en configurant peu de chose. Eclipse propose le mme support (pour Tomcat, JBoss, JOnAS, Websphere). A noter que son support serveur na pas toujours t heureux et quil faut gnralement prfrer les environnements des ser veurs (JBoss, IBM) ou des plug-in tiers (Tomcat, Jetty). Avant de dployer son application, il faut lcrire et cela gnralement avec un framework Web. La plupart dentre eux proposent un plug-in pour Eclipse. On est alors un peu tributaire de lditeur du plug-in. Cependant, Eclipse a souvent la primeur quand il sagit de dveloppement de plug-in. Netbeans propose, lui, un support

Performances
Les EDI ont la rputation dtre gourmands en ressources. Netbeans ne faillit malheureusement pas cette rputation. Malgr des amliorations, il reste relativement lent, aussi bien pour dmarrer que pour le dveloppement de tous les jours. Cette lenteur ne gne pas aux tches de dveloppement de tous les jours mais savre parfois agaante. La consommation

Dveloppement mobile
Netbeans se concentre sur Java Micro Edition dont limplmentation est particulirement bonne : diteur graphique (visual Mobile designer) pour grer graphiquement lenchanement et le design des crans. Le

26

PROgrammez ! \\ Octobre 2008

gros plan \\ eclipse - netbeans


mmoire peut aussi atteindre facilement 400 Mo. Ct excution, Netbeans, utilisant Ant ou Maven 2, nest pas des plus performants. Eclipse se montre meilleur. Son temps de chargement est plus quacceptable et le droulement du dveloppement se fait toujours avec une bonne ractivit. Sa trace mmoire est importante (facilement 200 Mo) mais moindre que Netbeans. Le lanceur dapplications dEclipse est excellent : pas de recompilation et savre trs souple (utilisable pour les serveurs dapplications, les tests unitaires). Avantage : Eclipse sible en quelques minutes (avec les vidos) davoir une ide de ce que peut donner lutilisation de Netbeans et en quelques heures de pratiquer (avec les tutoriaux) la plupart des fonctionnalits de Netbeans. Eclipse est lui aussi trs complet. Elle est gnralement de bonne qualit pour les parties " phares ", mais les sites internet des diffrents plug-in ne fournissent pas toujours une documentation jour. Avantage : Netbeans pour ces efforts !
Fig.3

Lcosystme des plug-in


La force dEclipse est limpression catalogue de plug-in open source et payants, mme si Netbeans toffe peu peu son offre. Malgr la complexit de dveloppement, le dveloppement de plug-in pour Eclipse est un peu plus simple que pour Netbeans. Chaque plug-in Eclipse est en fait un composant OSGi. Cest OSGi qui donne Eclipse toute la force de son systme de plug-in : ajout/activation/suppression dynamiques, possibilit de faire cohabiter plusieurs

Aide et documentation
Devenant de plus en plus complexe, la documentation est un lment capital ! Netbeans, ladoption se fait sans problme : laide prsente dans le logiciel est bien fournie (systme JavaHelp). Chaque plug-in dispose dune partie ddie. Le site officiel regorge de tutoriaux et de vidos pour comprendre les bases de tous les outils natifs de Netbeans. Il est donc pos-

versions dune mme bibliothque. Netbeans a, lui aussi, adopt une architecture plug-in. Celle-ci se montre trs convaincante et quasi quivalente celle dEclipse, notamment avec le gestionnaire de plug-in permettant des installations distantes et dynamiques partir dun catalogue. [Fig.3] La communaut Netbeans propose mme des plug-in gratuits qui nont pas leur quivalent (au moins en qualit), par exemple Matisse. Il ny a cependant pas que laspect utilisateur pour les plug-in. Il faut en

InfoPro la collection des pros de linformatique

97821005 20985 12 8 pages

25 32

Richard Basque
29

Chantal Morley, Jean Hugues, Bernard Leblanc

Rudi Bruchez

www.dunod.com

Octobre 2008 \\ PROgrammez !

MAOGANI 080902

9782100 520978 232 p

9782100 522323 112 p ages

12,80
ages 9782100 518630 336 p ages

Franois Cointe

umour Dcouvrez lh de geeks

27

gros plan \\ eclipse - netbeans


effet aussi considrer laspect dveloppement : quelle plate-forme propose le meilleur environnement pour le dveloppement de plug-in ? Eclipse part videmment avantag avec ses annes dexprience en la matire. Il intgre en effet tout un environnement pour le dveloppement de plugin : wizard et solutions compltement graphiques pour grer les nombreux fichiers de configurations dun plug-in. De plus, de nombreux livres, la plupart en Anglais, traitent du dveloppement de plug-in. Netbeans reste en retard sur ce point l. tches, avec Mylyn. En organisant ses activits sous forme de tches, il est possible de crer un contexte autour de chacune delles. Ce contexte est cr automatiquement par Mylyn qui suit lactivit de lutilisateur. Une fois le contexte de la tche identifi par Mylyn, celui-ci adapte linterface dEclipse en ne laissant que les lments ncessaires la tche. LEDI sadapte donc automatiquement votre besoin ! Les tches pouvant tre cres manuellement, mais surtout importes partir de trackers de bugs (Mantis, Bugzilla), Eclipse parvient devenir une interface centralise (ldition des bugs par tir dEclipse est possible) et surtout intelligente pour nous rendre la vie plus facile. Avantage : Eclipse. [Fig.4]
Fig.4

Une plate-forme part entire


Les deux IDE proposent un socle pour crer et dployer des clients lourds : Eclipse RPC et Netbeans Platform. Eclipse RCP existe depuis 2004 et est le cur de nombreuses applications. Il propose la gestion de toutes les problmatiques de base dune application de bureau (menus, barre doutils), mais aussi la gestion de laide, la mise jour distante Toute interface graphique dEclipse RCP utilise SWT et JFace, des bibliothques de composants graphiques spcialement cres pour Eclipse. Ces bibliothques diffrent de Swing dans la mesure o elles ne sont pas portables, mais utilisent directement les composants graphiques du systme dexploitation hte. Ceci explique la ressemblance des applications Eclipse avec des applications natives. Netbeans propose peu ou prou la mme chose, en basant linterface sur Swing. Il est une bonne alternative RCP .

dun EDI nest pas exclusive : on peut utiliser chacun dentre eux pour ses points forts, par exemple Netbeans pour dvelopper les vues dune application Swing et Eclipse pour la partie persistance. Il ne faut pas se priver ni de lun, ni de lautre !

Quel EDI pour quel profil ?


Alors, lequel choisir ? Netbeans conviendra indniablement mieux un public privilgiant un environnement tout packag, sans trop de rglages. Eclipse fonctionne aussi cl en main, mais ne dvoilera sa pleine puissance quaprs une configuration parfois pousse. Netbeans exploite trs bien les standards du monde Java, il est donc privilgier pour une approche en douceur des dveloppements JEE ou Java ME. Eclipse reste dans son approche parfois un peu spartiate, dcourageant parfois le nophytes. Il est important de noter que lutilisation

Le bilan
Il est indniable que Netbeans dans sa version 6.x constitue une vraie alternative. Les deux outils sont de trs bonne qualit et proposent des fonctionnalits trs proches. Cependant, ils ont une philosophie un peu diffrente. Eclipse savre gnralement plus souple, en contrepartie, il peut ncessiter plus de configuration. En bref, Netbeans 6.1 ne devrait pas convaincre les pro-Eclipse de changer. Les autres doivent sans conteste lessayer pour voir sil peut rpondre certains de leurs besoins en dveloppement.

Fonctionnalits
Refactoring Reporting Support PHP CVS Subversion Mercurial Support pour frameworks Profiling SOA Modlisation Support JEE Gnration CRUD Designer WYSIWYG Swing Client base de donnes Programmation oriente " tche "

Eclipse 3.4
Oui Oui (BIRT) Oui Oui Non (pas natif) Non (pas natif) Non (pas natif) Non (pas natif) Oui Oui Oui Non (pas natif) Non Oui Oui (Mylyn)

Netbeans 6.1
Oui Oui (JasperReports) Non ( venir) Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui Oui Non

Commentaires
Sensiblement quivalents BIRT est sous projet Eclipse Dans Netbeans 6.5 Trs bon support Trs bon support, mais plugin ncessaire pour Eclipse Fortement utilis chez Sun Ncessit dinstaller les plug-in pour Eclipse Pour Eclipse, ncessit de tlcharger TPTP, assez complexe Plug-in tlcharger sparment ou distributions spcifiques Plug-in tlcharger sparment ou distributions spcifiques Netbeans focalise plus sur les standards de Java Netbeans propose la gnration dapplications CRUD pour Swing et JSF Matisse est port pour Eclipse mais nest pas gratuit Trs bon support des deux cts. Eclipse est capable dadapter son interface lactivit du dveloppeur

Le suivi des bugs


Autre aspect que le dveloppeur doit comparer, la capacit amliorer sa productivit : travail en quipe, gestion des bugs dun projet Netbeans propose ainsi un plug-in collaboratif, permettant de chatter. Il suffit de se crer un compte sur un serveur personnel ou un serveur mis gracieusement disposition par Sun et de commencer discuter avec ses collgues ! Lintrt est de pouvoir changer directement dans lEDI. Eclipse dpasse ici Netbeans en proposant de cadrer son dveloppement autour de

28

PROgrammez ! \\ Octobre 2008

Infragistics NetAdvantage

Un potentiel sans limite pour Windows Forms, ASP .NET et WPF


Les meilleurs composants pour interfaces utilisateur disponibles Tous les composants essentiels pour la conception et le style dapplications corporatives irrsistibles Une exprience utilisateur hors du commun Concevez des IHM exceptionnelles et ergonomiques pour multi-plateformes Un cycle de dveloppement acclr Rduisez vos dlais de dveloppement et assurer une livraison rapide avec des composants prts lemploi Une utilisation facilite Concevez des IHM reproduisant fidlement le look & feel des dernires technologies Microsoft avec un minimum de code Retour sur investissement Focalisez vos attentions sur laspect mtier et permettez la boite outils Netadvantage dassurer la cohrence, le style et lutilisation simplifie de linterface de vos applications pour Windows Forms, WPF et WEB 2.0 Support complet pour lIDE de Visual Studio Conu pour compatibilit avec les plateformes de dveloppement de Microsoft y compris Visual Studio 2008

Pour de plus amples informations: infragistics.com


0800 667 307
WINDOWS FORMS grids scheduling charting toolbars navigation ASP .NET menus listbars WPF trees JSF tabs explorer bars editors
&

sales-europe@infragistics.com

more

Copyright 1996-2008 Infragistics, Inc. All rights reserved. Infragistics, the Infragistics logo and NetAdvantage are registered trademarks of Infragistics, Inc. All other trademarks or registered trademarks are the respective property of their owners.

dossier \\ 10 ans

" Rendez-vous
dans
www. pro gramm

10ans !
18:28 Page 1

N um

PRO gra mmez !


ez.com

mensu el n112 - octobr e 2008

ro S p cial 10

AVANT

a ns ! Nouvelle Formule

Le m agaz

ine d u d ve

loppe

techniq

Les de rn Tout sa ires versions voir su r Eclipse compares 4.0 SQL S 2008 erver Flash Dco
uvrez le Resour Govern ce or

ch Eclipse Choisir - Netbean s loutil id a

Le mat

Les proj rs Microsoft 3.0 et de Micro s secrets soft


Chrome et Le Goog les dveloppe le Deve urs loper Da y!

Exclusif ! Ve

Vos langages favoris

Enqute

ment

l!

/ .net Piloter vo Window tre s avec iPh Media Cente r one

iPhone

Matrise r ActionS le bitmap avec cript 3

Printed in Franc e - Impri m en Franc e - BELG IQUE 6,45

ux : D des extens velopper ions Na utilus


- SUISS E 12 FS - LUXEMBOU RG 6,45

Et au ssi : Lin

paces Crer vot : re grid computin g Jeux Dvelop : per des jeux en Java M 04319 - 112 - F: 5,95 E
- Cana da 8,95

JavaS

tJ : La progra mmatio n par asp ect fac ile !

Aspec

Java
k@l@b@c@a;

APRS

ue

- DOM

Surf 6,90

3:HIKONB=^UZ^Z]:?
$ CAN TOM 940

XPF - MARO C 50 DH

Les premiers lecteurs du magazine se souviennent de la naissance de la revue, dabord numro " hors srie " de la revue Compatibles PC magazine. A lpoque, une revue comme " PC mag " comportait des pages de listings. " Comment programmer en Basic lhorloge de votre ordinateur " , et autres articles de code, ont constitu le hobby du week end de toute une gnration . Tous les amateurs dinformatique (ou presque) taient des programmeurs amateurs. Le numro hors srie stant arrach dans les kiosques, votre magazine tait lanc, en 1998. Lquipe tait divise en ce qui concerne le titre. " Dvelopper " faisait trop " informaticien professionnel ", nous voulions continuer de toucher la masse des amateurs. " Programmez " faisait moins peur !

prochains cadres en entreprise. De programmeurs, vous tes devenus dveloppeurs. Vous rvez dun poste darchitecte, de chef de projet, ou pour les plus ambitieux dentre vous, de directeur informatique.

DE JAVA .NET
Le Numro 1 faisait la part belle Java. En 2000, .NET tait en vedette. Linux tait prsent depuis le dbut, mais la notion dopen source restait vague. En 2004, le dessin de Piedoue montrant le militant " open-source.org " devenu un prospre " open-source.com ", marquait la reconnaissance de lopen source en entreprise. Dailleurs dans lenqute " 10 ans " diffuse sur programmez.com, vous dsignez nettement le phnomne open-source comme le changement le plus marquant de la dcennie. Apache, Linux, Open Office devancent Microsoft et Java !
Jean Kaminsky

LRE DES PROS


Aujourdhui, vous tes des " Pros ". Au fil des ans, le dveloppement sest professionalis, Programmez aussi. Les " developpeurs amateurs " existent encore, mais sont minoritaires.Nos enqutes vous indiquent dveloppeurs en entreprise, ou tudiants en coles dinformatique,

30

PROgrammez ! \\ Octobre 2008

dossier \\ 10 ans

Grande enqute
Vos langages favoris
Dix ans de Programmez ! cela se fte. Quoi de mieux que de vous laisser la parole en votant pour vos langages prfrs et donner votre point de vue sur les dix dernires annes du dveloppement, les faits marquants, et esquisser le futur de linformatique.
Les langages les plus utiliss
HTML et consorts reste assez largement le langage le plus utilis, cela sexplique par lexplosion des applications web qui utilisent toujours massivement HTML, XHTML, DHTML. Mais on constate une grande perce dAjax alors que Php perd une place mais reste majoritairement utilis. XML est en deuxime position, ce qui sexplique par son utilisation pour les donnes, les changes. Ct plate-forme .Net, VB.net rgresse de 8 points alors que C# reste quasi stable, VB confirme sa fin en chutant de 13 points, ce qui, tonnamment, ne profite pas .Net. Java perd quelques points mais reste un excellent 54 % ! Toujours ct web, notons la bonne tenue de Flash qui ne souffre pas (-5 %) de larrive de Silverlight. Ruby ralise une petite perce mais reste assez marginal. Pour combien de temps ?

2008
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 HTML XML Php Java C++ Ajax C# VB VB.Net ASP.Net Flash Assembleur Delphi Perl Python WinDev Ruby Cobol Fortran 70 60 57 54 53 41 38 37 29 26 22 21 20 16 14 12 10 9 6

2006
83 65 65 57 58 29 40 50 37 33 27 22 24 21 14 13 6 9 5,5

Tendance

F F F F F S F F F F F D F F D F S D D

Enqute langages

Profils des votants


Les chantillons des enqutes se rpartissent ainsi : - 839 votants dont 40 % de dveloppeurs professionnels, 13 % dtudiants. Les dveloppeurs non professionnels reprsentent 8 % du panel. Les architectes psent un peu moins de 5 % et les webmasters 2 %. Par rapport 2006, les dveloppeurs reprsentent 48 % des votants contre 37 %... Les professionnels, tout confondu, culminent 65 % contre 67 % deux ans plus tt.

Langages ayant le plus influenc les 10 dernires annes


Notre enqute 10 ans fournit un rsultat intressant sur les langages ayant influenc cette dernire dcennie. On retrouve un grand nombre de vos langages prfrs dans les 10 premiers. Java arrive premier, sans grande surprise. Par contre Php vous a fortement impressionn depuis son apparition et devance dune courte tte C# qui termine 3e. On retrouve dailleurs dans les dix premiers trois langages Microsoft : C#, VB6 et VB.Net. Par contre, les langages fonctionnels ne vous ont pas marqu.
% exprims % exprims

1 2 3 4 4 6 7 8 8

Java Php C# C++ SQL JavaScript C VB6 VB.Net

69 61 59 56 56 53 51 46 46 39 33 31

13 Cobol 13 Ruby 13 ADA 16 Lisp 16 OCaml 18 Simula 18 D 18 Powerscript 21 Eiffel 21 Haskel 22 Erlang 22 Smalltalk

29 29 29 27 27 24 24 24 22 22 21 21

10 Delphi 11 Python 12 WinDev

Octobre 2008 \\ PROgrammez ! 31 Venez tmoigner de votre exprience sur le forum www.programmez.com

dossier \\ 10 ans
Total des utilisateurs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 HTML XML Php Java C++ Ajax C# VB VB.Net ASP.Net Flash Assembleur Delphi Perl Python WinDev Ruby Cobol Fortran 70 60 57 54 53 41 38 37 29 26 22 21 20 16 14 12 10 9 6

Dveloppeurs professionnels
XML HTML Java Php C++ Ajax C# VB ASP.Net VB.Net Flash Assembleur Delphi Perl Python WinDev Ruby Cobol Fortran 74 73 61 59 53 50 45 41 33 31 22 21 21 18 13 12 10 9 6

Etudiants
C++ 78 HTML 70 Php 65 Java 59 XML 51 Ajax 36 C# 28 VB 24 Flash 23 Assembleur 21 VB.Net 20 ASP .Net 18 Delphi 13 Python 13 Ruby 13 Perl 12 WinDev 9 Cobol 4 Fortran 2

Perfectionnement chez les dveloppeurs professionnels


La veille technologique et le perfectionnement constant des dveloppeurs sont deux ncessits. On le constate aisment (en %). Les langages les mieux matriss par les professionnels sont HTML, XML, Java, PHP et C#.

matrise
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Ajax ASP.Net Assembleur C# C++ Cobol Delphi Flash Fortran HTML Java Perl Php Python Ruby VB VB.net WinDev XML 14 22 8 35 34 9 17 3 4

se perfectionner 43
16 6 22 14 0 3 18 0

envisage de l'utiliser
14 10 4

15
2 1 2

15
0 1 8 9 9

60 36
7 35 6 3 30 21 11

23
21 10 21 9 8 4 10 2

Chez les dveloppeurs professionnels, XML passe devant HTML et Java arrive 3e, devant Php. Donn pour moribond par beaucoup, voire quasi mort, C++ redevient un langage phare. Pour preuve, les tudiants le placent en premier et globalement, C++ termine 5e , un trs beau rsultat. Les langages .Net restent, par rapport 2006, dans le milieu du classement avec un croulement de VB (passant de 50 % 37 %). C# passe devant. Mais comme Java, C# connat une baisse dans son utilisation chez les dveloppeurs professionnels. On peut constater quil y a un rquilibrage des langages, mme si certains sont plus utiliss que dautres. Le dveloppement web reste particulirement fort en plaant quatre langages dans les 10 premiers.

16 21
1 7 5 4

45

38

Il est intressant de distinguer dans lutilisation des langages ceux que lon matrise et ceux que lon utilise mais que lon voudrait approfondir et enfin ceux que lon envisage dutiliser. Si XML est utilis par presque 50 % des dveloppeurs, la moiti dentre eux veulent se perfectionner et peu disent le matriser. Et Ruby arrive en tte des langages envisags dans lavenir

Enqute 10 ans

Portrait robot du lecteur


Dresser un portrait robot peut apporter de prcieuses informations. Notre enqute 10 ans ne droge pas la rgle mais la qualit des donnes rcupres est parfois alatoire, provoquant une marge derreur de quelques pour cent. Le plus important contingent se situe entre 19 et 35 ans (environ 48 %). Nous avons ensuite les 35-45 ans qui reprsentent plus de 17 % et les 18 ans et moins, avec les 45 et au-del, font 10 %. Et nous avons aussi 10 % dindcis Vous habitez en France (66 %), dont les deux tiers en province et un tiers en le de France. Les pays francophones (Belgique, Luxembourg, Afrique du Nord, Canada) reprsentent un peu plus de 25 %.

VOTRE MTIER
Nous vous avions laiss une large panoplie de choix dans les mtiers. Les dveloppeurs professionnels (en entreprise, SSII, freelance) arrivent en tte avec 37 %. A la deuxime place, nous trouvons les tudiants (13 %) puis les chefs de projets, 10 %. Les webmasters sont peut tre plus timides que les autres avec seulement 3 % des participants Les architectes font un peu mieux, 6 % !

32

PROgrammez ! \\ Octobre 2008

dossier \\ 10 ans

Et le gagnant 2008 est


simplicit
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Php HTML WinDev VB VB.net Python Ruby XML C# Fortran ASP .Net Cobol Java Perl Delphi Ajax Flash Assembleur C++ 86 78 77 70 65 59 57 54 49 46 44 40 40 34 31 28 27 21 17

% exprims

facilit
VB WinDev Php HTML VB.net Python C# Ruby XML ASP .Net Perl Java Delphi Fortran Cobol Flash Ajax Assembleur C++ 76 74 67 66 61 61 56 56 49 48 46 38 36 36 29 29 28 16 14

productivit
WinDev C# Ruby ASP .Net VB.net Python Java Php Perl VB C++ XML Ajax HTML Delphi Assembleur Flash Cobol Fortran 79 68 61 61 52 50 50 45 42 39 37 35 31 30 30 26 26 24 18

portabilit
Java XML Delphi Python Perl HTML Php Ruby Flash C++ Ajax Fortran WinDev C# Assembleur ASP .Net Cobol VB.net VB 81 70 67 64 60 58 56 52 49 47 32 28 25 23 21 18 16 14 6

communaut
Php Java C++ HTML Flash ASP .Net Perl C# VB VB.net Python Ruby XML Ajax Cobol Assembleur Fortran WinDev Delphi 81 74 68 68 58 58 56 51 46 45 44 43 42 35 29 28 26 24 23

reconnaissance
C# 80 Java 78 C++ 73 ASP .Net 72 Cobol 69 Assembleur 56 Flash 55 XML 55 Php 54 Ajax 53 HTML 49 Fortran 49 WinDev 42 VB.net 41 Perl 35 Ruby 28 VB 27 Python 24 Delphi 14

En 2006, Php et Java arrivaient premiers 5 fois sur 6. En deux ans, quelle volution ! Ces deux langages monopolisent 3 catgories sur 6 mais WinDev, C# et VB reviennent en force ! Php reste selon vous le langage le plus simple, avec HTML mais WLangage (WinDev) passe 3e et amliore mme son rsultat par rapport 2006 ! Surtout, il est reconnu pour sa facilit (deuxime) et 1er pour la productivit ! En deux ans, WinDev a russi convaincre les dveloppeurs. VB et VB.Net continue tre considr comme simple et facile coder, ce qui est moins le cas de C#, Ruby par contre nest que 7e et 9e, soit grosso modo le mme rsultat quen 2006. Si Java reste dans le milieu du classement il amliore son pourcentage de vote, en triplant. Windev langage le plus productif ! Lapproche cl en main de lenvironnement y est sans doute pour quelque chose. Les langages .Net russissent un bon tir group, Java marque le pas la 7e place. Ajax est loin derrire, pchant par la complexit de Javascript et la multitude de frameworks. Cependant, sans surprise l non plus, Java arrive largement devant pour la portabilit. .Net ptit par contre de cela (mme sil faut relativiser pour ASP .Net et C# avec des piles tiers comme Mono). L encore Ajax souffre de sa complexit, du grand nombre de Frameworks, pas toujours trs interoprables entre eux. Les Communauts et la " Reconnaissance sur le march et les employeurs " constituent des lments cls pour les langages. Ct communautaire, Php, Java et C++ (exaequo avec HTML) sont sur le podium. Identique celui de 2006 ! Flash reste aussi sa place, preuve que la technologie dAdobe a su trouver une bonne communaut. A noter aussi un tir group des langages .Net entre la 6e et la 10e place. Ct reconnaissance, C# est dsormais parfaitement reconnu par le march (alors quil tait 10e en 2006). VB plonge dans le classement et Ruby peine saffirmer.

Les librairies les plus utiles


note moyenne
1 2 3 4 5 6 7 8 9 10 11 12 13 14 Ajax Librairies standard C++ Winform Librairies standard C Swing et autres Java SE MFC Qt VLC Zend Framework SPL wxWidget CLX Openmp Clim 7,52 7,62 7,42 7,32 7,12 5,95 5,56 5,56 4,99 5,97 5,05 3,97 3,1 2,59

en % exprims
68 63 60 58 58 49 46 45 43 40 40 38 33 30

Avec larrive dAjax sur le dveloppement web depuis plus de 2 ans, il tait normal quil soit en tte en nombre de votants (68 %). On trouve ensuite les librairies standard C++, winform, librairies C, Swing et consorts. Par contre en intrt, les librairies C++ arrivent en tte (7,62 / 10) puis suivent Ajax et Winform. Swing arrive 5e. La notorit de C++ et son importance dans le dveloppement est une nouvelle fois confirme ici. Le langage est toujours trs bien plac depuis le dbut de lenqute puis on retrouve le duo insparable Java - .Net mais le dveloppement web est lui aussi bien prsent ici avec Ajax. Les mta langages ont-ils eu une influence sur linformatique ? Oui ! Pour preuve, les 88 % de XML ou encore les 82 % pour HTML. Etonnamment, SGML se contente de 21 %. Pour mmoire, SGML est la base de HTML

34

PROgrammez ! \\ Octobre 2008

dossier \\ 10 ans

1998 - 2008 UNE DCENNIE


DE
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

Quelles techniques de programmation ont eu le plus dinfluence ?


Vaste question et de nombreux choix taient proposs. Les rponses illustrent toute cette diversit ! La programmation arrive assez largement en tte avec plus de 87 % de votants et une note moyenne de 8,71 ! Si on considre uniquement la note moyenne : programmation SQL, le mapping relationnel / objet, programmation parallle, Merise, programmation distribue sont au-del de 7 / 10 ! Bref, la modlisation, la mthodologie et les nouvelles techniques de dveloppement comme le multicore sont lhonneur.

CHANGEMENTS
innovants
% exprims
69 61 59 56 56 54 51 46 46 39 33 31 29 29 29 27 27 24 24 24 22 22 22 21

Les langages les plus


note moyenne
Java Php C# C++ SQL JavaScript C VB6 VBnet Delphi Python WinDev Cobol Ruby ADA Lisp OCaml simula D Powerscript Eiffel Haskel Erlang Smalltalk 7,73 7,16 7,02 7,29 7,4 6,57 6,18 5,73 6,41 5,46 5,26 4,42 2,98 4,88 3,83 3,41 3,17 3,53 2,68 3 2,66 2,26 2,32 2,07

Quelles

applications dveloppez-vous ?

Utiliser un langage cest bien, mais dans quel but ? Majoritairement vous ralisez des applications web et desktop. Les sites web sont fortement reprsents, les sites purement web 2 reprsentent environ un tiers des dveloppements. Les technologies web 2 pouvant sintgrer sans difficults dans les sites et applications web " traditionnels ". La mobilit reste marginale tout comme le jeu. Jeu / multimdia Mobilit Intgration Extranet Industriel / embarqu Sites web 2 intranet Sites web Application desktop Applications web

A la grande majorit, vous pensez que le langage le plus innovant est Java avec une bonne note gnrale et un fort taux de votants ! Puis nous trouvons Php, C#, C++, SQL, Javascript. C++ est 2e si on considre la note moyenne, mais il a obtenu moins de votes. Les langages objets monopolisent les premires places. Les langages fonctionnels restent en retrait, sans doute par manque dapprentissage.

LA PLATE-FORME LA PLUS MARQUANTE...


.Net clipse Java... !
Depuis plusieurs annes, on a pris lhabitude de diviser le monde entre .Net et Java / Java EE. Notre enqute va-t-elle confirmer cela ?
% exprims

Quels IDE ou outils de dveloppement vous ont le plus marqu ?


L encore la sensibilit de chaque dveloppeur joue beaucoup. On constate tout de mme un trio de tte en terme de votants : Visual Studio, Eclipse et WinDev. Puis, suivent peu de distance, Delphi, NetBeans et C++ Builder. Par contre, si on considre lapprciation moyenne (sur 10 et par rapport aux votants effectifs), on constate que Visual Studio domine encore (8,18 / 10) alors que Eclipse et Netbeans compltent le podium ! WinDev narrive que 6e, derrire Delphi, C++ Builder. On peut en conclure que l aussi il existe une coupure nette entre le monde Windows / .Net et Java / Java EE. Par contre les outils " historique " tels Turbo C, Vim, PowerBuilder terminent assez loin derrire.

1 2 3 4 5 6 7

.Net Eclipse Java EE Java SE Lamp Ruby on rails Zope

79 73 71 67 56 53 45

.Net est la plate-forme qui a le plus marqu ces dernires annes selon vous, mais Eclipse, Java SE et Java EE sont trs bien placs !

Octobre 2008 \\ PROgrammez !

35

dossier \\ 10 ans

Les dveloppeurs votent : OPEN SOURCE


LES HOMMES, LES SOCITS, LES TECHNOLOGIES

QUI ONT MARQU LA DCENNIE


% exprims

Apache

83%

Bill Gates

62% 72%
Le mouvement Open Source / logiciels libres se confirme quand on vous demande les phnomnes, les personnes qui ont marqu, influenc le monde informatique. Apache et le mouvement open source arrivent premiers ! Seul Apple sintercale. Bill Gates arrive seulement 15e Et Sourceforge, Wikipedia ou Richard Stallman ne vous ont pas particulirement marqu !

1 Apache 2 Open source 3 Apple 4 Openoffice 5 Linus Torvald 6 Microsoft 7 Offshore 8 Google 9 GNU 10 Linux 11 Mozilla 12 Wikipedia 13 IBM 14 Richard Stallman 15 Bill Gates 16 Steve Jobs 17 Sourceforge

83 80 80 78 78 75 75 72 72 70 67 66 65 63 62 50 47

Apple 80%
Linus Torvald

78%

Mozilla

67% 78%

Windows et Linux au coude coude


1 2 3 4 5 6 % exprims Windows 90 Linux 89 MacOS X 63 Solaris 46 BSD 44 AIX 39 % exprims 7 HP-UX 38 8 UnixWare 37 9 XENIX 36 10 IRIX 35 11 A/UX 34 12 Ultrix 33

Vive lopen source ! Cest par cette exclamation que lon peut rsumer votre opinion. Windows reste, certes devant, mais vous tes 89 % considrer Linux comme le plus marquant depuis 10 ans !
Force est de constater que vous navez pas dides tranches sur le futur de linformatique et du dveloppement. Mme si quelques tendances, actuelles ou non, se dtachent, on ne peut pas dire que ce soit un raz de mare ! Cela prouve la difficult de voir ce qui va se passer et la confusion actuelle dans les annonces, les tendances. Plus que jamais, la veille technologique sera un lment capital pour mieux comprendre les volutions et les tendances futures qui vont conditionner fortement le mtier ! Lopen source reste votre tendance de choix (76 % de votants), avec la programmation objet et Linux, mais la gnration automatique de code arrive juste derrire avec le nomadisme. Par contre, vous ne croyez pas beaucoup W indows Seven, loffshore et mme aux langages fonctionnels ! Franois Tonic

Un futur toujours open source !


% exprims

1 Open source
2 3 4 5 6 7 8 9 10 11 Programmation objet Linux Gnration automatique du code Informatique nomade Multicore Qui peut le dire ? Windows Seven Langages fonctionnels Offshore DSL

76
76 71 69 66 63 61 58 57 51 49

36

PROgrammez ! \\ Octobre 2008

dossier \\ 10 ans

La parole aux experts

INRIA / Photo C. Lebedinsky

Croissance du rseau, rvolution du calcul et transformation des usages


Les dix dernires annes auront connu de nombreuses avances en informatique que l'on peut illustrer en particulier dans quatre domaines.
Malik Ghallab Dlgu gnral la recherche et au transfert pour linnovation, INRIA tion par apprentissage ou par tutorat, en montrant la machine des exemples des traitements dsirs et en spcifiant des rgles et des modles, dmocratisera le dveloppement d'applications.

Paralllisme et puissance
La matrise du paralllisme est galement un dfi pour les annes qui viennent. Seule une meilleure matrise des traitements parallles permettra de continuer profiter de l'volution technologique avec de plus en plus de curs par processeur. Le calcul haute performance (HPC) devra progresser pour faire face aux besoins de simulations sur des modles multichelles de plus en plus complexes capables d'assimiler des quantits de donnes de plus en plus vastes.

es possibilits d'excution distance et de por tabilit des codes (technologies Java) ont modifi radicalement la distribution des traitements travers le rseau. Aujourdhui, nous achetons moins de logiciels comme objets et davantage comme services sur le rseau. Le web a un impact considrable : nouveaux modles conomiques d'changes, de cration de biens et de ser vices, et mme nouvelles modalits d'interaction sociale. La quantit dinformations disponibles a cr de faon exponentielle (elle passe aujourdhui les 1020 octets). Les possibilits dindexation de ces donnes sont de plus en plus fines (Google a dix ans aujourd'hui) ouvrant un large accs au grand public et donnant lieu une crativit foisonnante de nouvelles pratiques.

intgrant des reprsentations htrognes et des donnes issues de systmes d'observation et d'imagerie de plus en plus fins.

Nouveaux objets, nouvelles mthodes


Les progrs algorithmiques ont touch tous les secteurs, de la cryptographie la rsolution de contraintes, en passant par l'algorithmique probabiliste qui a permis des avances en planification ou en optimisation. Les possibilits nouvelles de synthse automatique de code partir de spcifications formelles ont permis le dveloppement de systmes embarqus plus complexes. Plus de 80% des millions de lignes de code de l'avionique du A380 ont t synthtises partir de spcifications formelles. Ainsi, les programmeurs inter viennent-ils aujourdhui davantage sur ces spcifications de haut niveau. Les prvisions des progrs qui marqueront les dix prochaines annes sont trs difficiles. Mais on peut souligner que les qualits de scurit et de fiabilit des logiciels et systmes embarqus sont critiques et seront ncessairement amliores. Cest le sens des recherches actuelles sur les mthodes formelles et les techniques de vrification abstraite.

Langage commun
Linteroprabilit entre composantes (machines et codes) de grands systmes devra tre amliore : dans un environnement o les modles et les codes sont de plus en plus nombreux et doivent communiquer entre eux, il sera essentiel que chaque composante dispose dun modle explicite de son propre fonctionnement et sache interprter les modles des autres composantes pour changer des donnes et services. Dans le mme temps, le web et les moteurs de recherche volueront vers une matrise smantique des contenus. En laborant des ontologies (lments smantiques associs aux concepts), les chercheurs facilitent l'indexation et la recherche de documents par leur contenu. Enfin, beaucoup de progrs sont attendus du traitement du langage naturel et des modalits d'interaction vocales, visuelles, etc. Vers la fin du trop rducteur clavier-cran-souris ?

La rvolution des modles


Les modles numriques ont radicalement transform l'ingnierie, en intervenant sur lensemble de la chane de conception et de production. Ils ont permis des gains considrables en temps et en qualit de conception et de ralisation (le viaduc de Millau est en cela un bon exemple), et ouvert de nouvelles possibilits d'innovation. Plus loin, ces modles numriques ont proprement rvolutionn la recherche fondamentale dans tous les secteurs, en particulier dans les sciences de la vie et celles de l'environnement, en

Le logiciel intelligent
Lapprentissage automatique des machines reprsentera sans doute une grande avance. La programma-

38

PROgrammez ! \\ Octobre 2008

dossier \\ 10 ans

Dvelopper signifiera-t-il toujours " crire du code ?


Cest la question que je me pose depuis quelques annes dj. Quand je me retourne vers la courte histoire de linformatique je vois du matriel que lon cblait et dbuguait aux sens propres du terme !
Laurent Ellerbach - Relations Dveloppeurs, Designers et Enseignement Suprieur Division Plateformes et Ecosystme - Microsoft France uis apparaissent les transistors, les processeurs et le code. Rapidement, la saisie des lignes de code se fait travers des crans remplaant progressivement les machines perforer. Associ au stockage magntique, le dveloppeur augmente sa productivit. Et le debug devient temps rel, les breackpoints apparaissent. Lpoque des logiciels complets qui tiennent sur des PC ou serveurs en moins de 100Ko arrivent. Et le dveloppeur prend son pied crer du code, proche du systme, optimiser les registres, les couches basses. Fin de la premire gnration. Aujourdhui, ce dveloppeur nexiste plus que dans quelques domaines spcifiques. Les couches dabstractions, les bibliothques, les OS riches tels que Windows, Mac OS, Unix changent le paradigme du dveloppement. Nous croyons attaquer la mmoire directement, tre le seul utiliser toutes les ressources de la machine, et bien non. " On " nous ment. LOS nous ment. Et puis les interfaces graphiques, les accs rseaux, la scurit, la dcentralisation des donnes nous obligent crer des applications plus riches, plus complexes. Adieu programmes de moins de 100Ko, bonjour les 10Mo. Les outils arrivent tels que Visual Studio, les ressources aussi, inflation de puissance de traitement, graphique et de stockage. La nature a horreur vide, le dveloppeur aussi. Fin de deuxime gnration. Le Web existe depuis toujours ou presque. Cest avant tout du rseau. Mais il prend toutes ses lettres de

noblesse milieu des annes 90 avec lapparition dun protocole tout bte, http, et dun langage de description tout aussi simple, html. Le dveloppeur crit moins de code, il dcrit de plus en plus. Les technologies telles que CGI et ASP permettent dajouter de lintelligence ct serveur. Ouf, le code est de retour ! Le dveloppeur Web est donc aussi un dveloppeur qui crit de vraies lignes. Troisime gnration. Mais le Web expose surtout des applications entires qui peuvent tre consommes par dautres applications riches de la deuxime ou troisime gnration. Bienvenue dans la quatrime gnration, gnration toujours en cours. Dbandade de ressources sur le Web : " Mga Datacenter ", fermes de s e r v e u r s , Te r r a octets, nous voil. Et lobjet qui vibre et sonne, que tout le monde a dans la poche, il ne faudrait pas loublier ! Ces micro machines qui sont plus puissantes que les ordinateurs dil y a 10 ans peine. Oui, cest la cinquime gnration, proche de la quatrime, qui se base sur des concepts de la seconde et peut consommer des logiciels de la troisime et de la quatrime. Tiens, cest la premire fois que jutilise le mot logiciel. Pourtant cest ce que produisent tous les dveloppeurs de la plante. Le logiciel cest le fondement de toutes ces gnrations et de celles venir. Et maintenant, que se passe-t-il ? La complexit est telle quil est de plus en plus difficile dcrire du code per-

pour crire mieux et plus, il faut crire moins

formant, propre (nous avons tous notre dfinition), scuris, volutif. Et surtout comment faire pour offrir lutilisateur les bnfices de toutes ces gnrations ? Difficile de lire dans une boule de cristal Et pourtant, pour crire mieux et plus, il faut crire moins. Paradoxal. Oui, en ralit, il faut laisser la machine crire du code, laisser la machine loptimiser, et crire des spcifications, assembler des composants pour faire fonctionner des logiciels entre eux. Le dveloppeur crira toujours du code mais sera plus un ingnieur de production quun technicien les mains dans le cambouis. Il y aura des briques, les poutres, les tuiles et ceux qui les assemblent. Et comme tous les composants ne sont pas rels, changer le type de tuile pour offrir une meilleure tanchit ou changer la couleur du toit devient possible. Cette rvolution qui se base sur toutes les prcdentes est pleine de termes tels que Software + Services de Microsoft, Cloud Computing, industrialisation des logiciels, vir tualisation, SOA et jen passe. Le logiciel de la sixime est partout et doit pouvoir tre dvelopp de la mme faon quelle soit de la deuxime, troisime, quatrime ou cinquime rvolution. Cest la promesse que Microsoft fait au dveloppeur. A travers Visual Studio, .NET et toute sa plate-forme. Vive le dveloppement, vive le code, vive le dveloppeur !

Octobre 2008 \\ PROgrammez !

39

dossier \\ 10 ans

La parole aux experts

Vive le code libre !


Internet est fond sur l'ouverture, et cest avec la volont forte de respecter ce principe fondateur que chaque jour un nombre croissant de technologies sont lances en Open Source.
Christophe Bouchre, Manager Customer Solutions engineering Europe (Google) 'est en s'appuyant sur ces fondements essentiels que chaque jour de nouveaux outils sont crs destination des dveloppeurs, leur permettant leur tour de crer plus librement et sans avoir rcrire de code Les dveloppeurs disposent d'ores et dj de nombreux composants, on peut citer en vrac des hbergements de photos, la cartographie, le dveloppement dapplications pour les rseaux sociaux (opensocial) ou encore la diffusion de vidos (ex. : API YouTube). Autant de composants rapides et simples mettre en uvre. Les dveloppeurs n'ont alors plus crer de toutes pices ces environnements spcifiques quils pourront proposer des utilisateurs dj familiers des interfaces. La plupart de ces outils sont par ailleurs

mis disposition gratuitement, permettant aux dveloppeurs de davantage se concentrer sur leurs concepts applicatifs novateurs, sans se proccuper des questions d'infrastructure, transfres aux centres de donnes grce au Cloud Computing (ou nuage informatique). Avec ces basiques, il est possible denvisager la mise en place de standards, une compatibilit entre les navigateurs, ou les systmes d'exploitation, voire mme les langages de programmation. Jetant un pont au-dessus des incompatibilits, et des difficults de dveloppement, Google Web Toolkit (GWT) permet par exemple de dployer des front-end applicatifs en JavaScript, mais maintenus en Java. Aujourdhui, une nouvelle offre d'outils de dveloppement et de services permet aux

entreprises de se jouer des obstacles techniques au dveloppement et au dploiement. Les plates-formes de dveloppement et d'hbergement de Salesforce (Force.com), d'Amazon (EC2) ou de Google (AppEngine) permettent galement la prise en charge et l'administration de ces infrastructures. Les entreprises qui utilisent les PaaS peuvent ainsi recentrer leurs services informatiques sur des projets de conception, plus forte valeur ajoute, et enrichir leur offre sans avoir la grer. Le principe dorigine du web, doffrir tous un environnement de cration et de dcouverte libre, est ici respect et plus encore, au cur de l'effort des dveloppeurs du monde entier envers la communaut.

Comment la technologie a chang les 10 dernires annes


Adam Kolawa - Fondateur de Parasoft en 1987. Il est lauteur de nombreux articles. En 2001, il reoit le prix Ernst and Young de lEntrepreneur de lAnne dans la catgorie logiciel. Adam reviendra sur les diffrents aspects prsents ici dans son prochain livre prvu pour dbut 2009, The Next Leap in Productivity l y a dix ans, Java commenait juste merger comme un langage de programmation srieux. Tout le monde tait excit par la promesse annonce crire une fois, excuter partout et plus encore par la promesse de Java pour les dveloppeurs de les sauver de leurs propres erreurs Depuis, je pense que nous avons appris que le langage de votre programme nest pas vraiment la question. Peu importe le langage invent, les dveloppeurs vont encore faire des erreurs, des bugs et les quipes auront (encore) besoin de suivre les bonnes pratiques afin de prvenir et de dtecter les dfauts. Mais il nexiste pas de solution miracle. Quand nous tions au plus fort du boom internet, on avait limpression que chacun tait un brillant dveloppeur crivant beaucoup de code pour toutes sortes dapplications

innovantes. Toutefois, en regardant en arrire, je ne pense pas que lindustrie technologique ait rellement avanc. Dans le mme temps, beaucoup davances ont t ralises loin de la lumire, des media. Je citerais lmergence des services web. Ils ont rellement permis de faire dmarrer la rutilisation des composants, au lieu de juste en parler. Aujourdhui, au lieu de rcrire les anciens logiciels mainframe, on expose, on les connecte via des web services. Tout le monde sattendait la mort du mainframe mais il a rellement tendu son esprance de vie ! En outre, la programmation de systmes distribus devient beaucoup plus efficace notamment grce la rutilisation ! Une autre volution intressante noter : beaucoup de personnes sattendaient la mort du C et C++. Ce qui ne fut pas le cas ! Bien au contraire, il y

eut une (vritable) rsurrection. Il existe une nouvelle gnration de dveloppeurs et dditeurs qui comptent sur le C et C++ pour dvelopper le logiciel embarqu ! Le C est utilis dans les systmes embarqus pour lesquels il ny a pas de support (ncessaire) pour un systme temps rel. Cela comprend la plupart des terminaux. C + + est actuellement le langage de choix pour les terminaux de plus en plus complexes, comme ceux utiliss dans l'arospatiale, le militaire, le mdical, etc. Ces appareils doivent fournir une puissance de calcul et le C++ les aide dans les applications complexes et critiques. Le rsultat est que le march du dveloppement logiciel est profondment divis en deux : dun ct (IT surtout) Java, et de lautre C et C++ pour lembarqu. Il y a dix ans, de nombreuses quipes travaillaient avec VB. Et finalement, une grosse part du march a t prise par Java ! Le dveloppement avec la solution Microsoft est (plus) rare maintenant. Il existe la marge. Je suis vraiment impatient de regarder les dix prochaines annes, partir de maintenant. Nous regarderons en arrire et verrons que les web services et les processus mtiers ont rellement rvolutionn linformatique. Ensemble, ces technologies aident automatiser beaucoup de processus humains, et font faire un bond considrable la productivit dans lensemble de lentreprise.

40

PROgrammez ! \\ Octobre 2008

dossier \\ 10 ans

Au pass le partage, l'avenir la concurrence


Evoluant considrablement vite tout en gardant ses mauvaises habitudes, l'informatique se prpare un avenir mouvement.
Frdric Mazu - Les lecteurs connaissent bien la signature de Frdric Mazu. Encyclopdie vivante de la programmation, il crit des articles depuis la premire anne de Programmez! n'ayant de cesse de vous faire partager sa passion, la dcouvertes de nouveaux langages et technologies. e monde de l'informatique est si vaste qu'il n'est videmment pas possible de mentionner tous les faits qui l'ont marqu de manire dterminante ces dix dernires annes. Mais en essayant de me centrer sur l'essentiel et en considrant que cette rtrospective commence en 1998, je dirai tout d'abord que c'est l'initiative Open Source, justement lance en 1998 la suite de la dfinition du logiciel libre tablie par Richard Stallman quinze ans auparavant. C'est certainement le phnomne majeur, la base de la plupart des autres, avec des rpercussions sur les modles conomiques. C'est aussi le retour du partage du logiciel, qui tait de rgle jusqu'en 1970. Avec ce retour du partage et l'explosion de la quantit de logiciels ainsi disponibles, tout un chacun peut apprendre, travailler, dvelopper son tour, avec une panoplie d'outils gratuits et puissants que personne n'aurait os imaginer sans cela. 1998, cest encore, et ce n'est sans doute pas une concidence, la venue de Linux dans le grand public. Dsormais Windows n'est plus le seul systme d'exploitation pour PC. Gratuit des outils, de l'OS, autant de conditions favorables l'explosion du nombre de serveurs et donc de l'usage d'Internet. Et aussi favorables l'apparition des pays dit mergents sur la scne informatique.

pement Web en plein boum et qui demande souplesse, adaptation et ractivit. Pour cela le langage de script est idal et cette dcennie a vu la conscration des Python, Ruby, PHP langages tous ns la dcennie , prcdente, comme quoi, dans ce monde de l'informatique qui volue si vite, il faut beaucoup de temps pour que les ides simples parviennent s'imposer :)

Le marketing prend le pas sur la technique


La dcennie prcdente est encore, et c'est moins glorieux, la priode de la main mise du choix marketing sur le choix technologique pertinent. Il fut un temps o les techniciens, puisque comptents en la matire, taient libres du choix de leurs outils. Ce temps semble rvolu et l'ont voit des solutions, souvent assez lourdes, imposes sur la base de considrations souvent trs loignes de la technique. C'est peut tre une des raisons qui expliquent que malgr tant d'efforts et de progrs la qualit des logiciels reste souvent moyenne, voire mdiocre, et le dveloppement extrmement coteux. Ceci amne voquer un autre phnomne, extrmement inquitant celui-l: l'offshore. Il fut une poque o dvelopper un logiciel, c'tait presque comme raliser un travail soign, presqu'une oeuvre d'art. Dvelopper est dsormais une activit courante, banale. Elle doit tre mene bien le plus vite possible et, surtout le moins cher possible, alors on l'exporte comme on l'a fait de travaux manufacturs. C'est

"

La concurrence dans les applications et dans l'offshore

Ct technique
Si l'on regarde ct technique, on peut dire que cette dcennie est celle de la programmation objet qui remplace, et c'est tant mieux, le style spaghetti. C'est aussi le retour des langages de scripts. Ceux-ci ont toujours exist mais ils trouvent leurs lettres de noblesse dans un dvelop-

que cette dcennie passe est celle de la fracture. Les cartons de nos universits dbordent de crations remarquables, mais qui restent ignores. On prfre avoir plusieurs fois la mme solution dans sa trousse outils: Java, C# = Java.clone('Microsoft'), etc. Et les dveloppements restent coteux, alors on les exporte. Quitte ce qu'ils soient mal raliss (et encore ! Ce n'est pas toujours le cas...) autant qu'ils cotent le moins cher possible. A quoi pouvons-nous nous attendre pour la dcennie venir ? Il semble certain que l'volution du matriel, la gnralisation des processeurs multicoeurs et l'impatience des utilisateurs feront que la programmation parallle, ou concurrente sera omniprsente et deviendra probablement un nouveau paradigme. Des langages et des outils de modlisation verront le jour. Toutes choses qui existent dj, dans le domaine d'Erlang par exemple. Mais s'il y a quelque chose de bien constant dans notre cher monde, c'est cette mauvaise habitude de toujours rinventer la roue. Alors finalement, plus que des langages vraiment nouveaux, nous verrons sans doute des Java et des C# remanis, enrichis de librairies. Cela existe dj, C_ par exemple. Les plates-formes resteront lourdes, les langages les plus en vogue verbeux, les applications concurrentes seront toutes remplies de deadlocks et comme tout cela va coter extrmement cher, les dveloppements seront ncessairement offshore. Cet offshore spcialis depuis si longtemps dans la concurrence...

Octobre 2008 \\ PROgrammez !

41

dossier \\ 10 ans

La parole aux experts

Restersimple : une affaire complexe


Laurent Ribardire Prsident 4D S.A.S - Programmeur dans lme, Laurent est le fondateur et actuel Prsident Directeur Gnral de 4D. Il crit son premier logiciel de gestion de fichiers et pour l'diter, cre un an plus tard l'entreprise ACI, (4D depuis mars 2000). epuis 10 ans, Internet a boulevers nos habitudes avec des consquences durables sur notre mtier dditeur de logiciel : prpondrance des moteurs de recherche, abandon des supports physiques pour la distribution des logiciels et de leur documentation, exigence accrue de lutilisateur due la multiplication des offres. La notion de qualit a d tre repense en tant que process global et plus seulement comme propret du code. LOpen Source sest install durablement dans les pratiques de programmation. La collaboration lchelle plantaire est dsormais une ralit, et a un impact insouponn, mme sur des diteurs commerciaux tels que nous, puisque prs dun tiers du code source de 4D est bas sur des librairies ouvertes (Xerces, Xalan, OpenSSL, ICU, etc...). Certes, labsence de leadership peut nuire la qualit ergonomique et esthtique des projets libres par rapport leurs quivalents propritaires. Et, en cas dabsence dun modle cono-

mique bas sur les services, la survie du produit dpend compltement de la motivation dun noyau dur de dveloppeurs, mais le logiciel libre a encore de beaux jours devant lui. Enfin je mentionnerai la rsurrection du Mac dans les cinq dernires annes comme un signal supplmentaire du march contre lhgmonie du systme Windows. Quant au futur, point besoin de boule de cristal pour prdire un brillant avenir aux Smartphones, tablettes, eBooks et autres dispositifs mobiles. Leur expansion sera proportionnelle celle des forfaits illimits daccs des rseaux trs haut dbit, sur des zones de couvertures toujours plus larges. De nouveaux services seront inventer pour accompagner les prochaines mutations des mentalits et des modes de vie. Le push rciproque simposera, tout appareil connect tant la fois client et serveur de centaines dautres. A la simplicit croissante des modes dutilisation rpondra une complexit tout aussi croissante

des briques mises en uvre dans le plus simple des projets : autour dun noyau proche de la machine, en C, C++, foisonnera une collection hybride de langages de scripting de plus en plus difficiles maintenir, ou mme connatre. Face des millions de lignes de code, le programmeur aura un dfi de plus en plus lourd relever. Fort de sa philosophie dintgration des standards, 4D continuera, je lespre, faire entendre sa diffrence et dmontrer son utilit dans ce challenge. En effet, comme notre pass le prouve, non seulement nous cherchons simplifier lacquisition des nouvelles technologies, en jouant au passage un vritable rle de prescripteur, mais nous sommes extrmement attentifs la prennit des dveloppements de nos clients et donc de leurs investissements. Au fond, la prochaine dcennie ressemblera fortement la prcdente : le niveau de qualit des applications, et donc des organisations qui les fabriquent, est condamn crotre, pour le plus grand bnfice de lutilisateur final.

PRO grammez !
Le magazine du dveloppement

LINFO permanente
Lactu : le fil dinfo quotidien des journalistes de Programmez La newsletter hebdo : abonnez-vous, comme 30 000 professionnels dj. Cest gratuit !

Cest

PRATIQUE !

Le forum : modr par la rdaction et les auteurs de Programmez, rejoignez les forums techniques de programmez.com Les tutoriels : une solution en quelques clics ! Le tlchargement : rcuprez les nouveauts.

www.programmez.com

dossier \\ 10 ans

METIERS : 10 ans dvolution


En 10 ans, les informaticiens ont connu diverses fluctuations conomiques et mutations technologiques. Le programmeur de base a fait place des mtiers plus forte valeur ajoute et diversifis : du dveloppeur dapplications base de composants larchitecte de systme dinformation, du dveloppeur dinterfaces au chef de projet complexe.
Par Claire Remy

es informaticiens ont toujours la cote, comme en tmoignent les tudes du Syntec Informatique, qui recensent les mtiers des diteurs de logiciels, des socits de services et du conseil en informatique. Mme sil y a eu des fluctuations conjoncturelles dans cette demande. Leurs mtiers et les comptences requises ont volu avec les mutations technologiques, mais aussi avec le contexte historique, conomique et gopolitique.

(ateliers de gnie logiciels). " Les mutations du gnie logiciel ont suivi les volutions technologiques avec, dans les annes 1980, les bases de donnes, applications batch, mthode Merise, puis lapparition des concepts objets, des SGBD relationnels, du middleware et aujourdhui, une grande diversit de technologies ", explique Jean-Louis Bernaudin.

Lentre en force des PGI


Dans les annes 1990, les entreprises, conscientes de la ncessit dchanger des informations, ont cherch connecter entre elles des applications isoles. Do lapparition des EIS (Enterprise Integration Systems) ou middleware, dune part, et des progiciels de gestion intgrs (PGI) ou ERP dautre part. Ces der, niers, et en particulier SAP, sont venus structurer les Services Informatiques de faon lourde. Ils se placent au-dessus des directions mtiers et sadressent aux directions gnrales. Avec ces progiciels de haut niveau, exit le programmeur de base. Il y a certes encore des dveloppeurs (langage Abap 4 pour SAP , par exemple), mais le travail de linformaticien consiste dsormais moins dans le codage que dans le paramtrage et ladministration. Ds lors, aux postes traditionnels concepteur ou ingnieur dtudes, analyste-programmeur, intgrateur, administrateur de bases de donnes, administrateur systme, sans oublier le DSI, les spcialistes du test et de la maintenance sajoutent des postes plus orients " mtiers " ou " fonctionnels ", souvent lis la mise en uvre des PGI.

LEuro, lan 2000.


Les lments majeurs de cette volution sont le dveloppement dinternet et des techniques qui sy rattachent, lan 2000 et leuro, la mondialisation. A partir de la fin des annes 1990, le mtier de simple dveloppeur sera de plus en plus souvent externalis et mutualis, au profit des fonctions de plus haut niveau de concepteur, darchitecte ou de relation avec les utilisateurs. " Les systmes dinformation se sont dvelopps historiquement par lautomatisation de tches, comme la comptabilit. A part le mtier de perfo-vrif, aucun mtier informatique na vraiment disparu ", constate Jean-Louis Bernaudin, dlgu gnral de lassociation Pasc@line. Cest ainsi que les grands ordinateurs centraux ont fait place des architectures client-serveur et distribues, en mme temps que les langages suivaient une volution parallle, passant des L3G de type Cobol, Fortran ou C aux L4G et AGL

Le dveloppement de logiciels de type PGI reste toujours en bonne place dans les offres demploi. En 2008, lcosystme SAP en Allemagne reprsente 30% des projets et la moiti des services en informatique de gestion (source : Syntec Informatique). Lesjeudis.com placent en deuxime position (derrire les nouvelles technologies lies internet) le dveloppement de logiciels de type ERP " Avec une acclration de la . demande lie la mondialisation, aux fusions dentreprises, au besoin de pilotage et de partage des donnes dans un contexte mondial ", prcise Marie Ozier -Lafontaine, charge de communication pour Lesjeudis. com. " Les postes demands sont des ingnieurs et consultants ERP notamment SAP " , . Par ailleurs, le modle client-serveur implique un poste client " actif ", dot de suites bureautiques et autres applications clientes. Do lapparition de nouveaux mtiers ddis lutilisa-

Figure 1 : Evolution de lemploi des informaticiens, chercheurs et ingnieurs, de 1985 2015 - (extraite de ltude Pasc@line)

H, M, N Ingnieurs, informaticiens et chercheurs : lvolution de lemploi de 1985 2015

Octobre 2008 \\ PROgrammez !

43

dossier \\ 10 ans
Webmestre, un mtier aux multiples facettes
Le webmestre est charg de ladministration de site, son mtier est proche de ladministrateur de bases de donnes ou de serveurs. Ce qui est nouveau, cest laspect graphique et la gestion de contenus multimdias. En tant quadministrateur de site, il est le chef de lquipe web. Responsable du bon fonctionnement et coordinateur des diffrents sites, il garantit un contenu ditorial conforme limage de marque de la socit, ses objectifs et sa stratgie ; ct infrastructure, il dcide des serveurs, logiciels, technologies et services mis en uvre ; il est responsable de la performance, de la fiabilit et de la disponibilit du site. Les autres fonctions qui lui sont lies sont : - responsable ditorial ou " webditeur " : responsable de la publication de contenu (marketing, commercial, RH, production, R&D, etc.) ; - infographiste, ou responsable artistique du site web, mtier caractris par crativit et le souci dergonomie ; - dveloppeur web, charg dassembler les composantes du systme et de raliser linterface avec les applications de back-office ; - gestionnaire de contenu, utilisateur de techniques de type GED (gestion lectronique de documents). tion de projets. Le chef de projet est un manager : il constitue un ensemble destin rpondre un cahier des charges prcis dans un temps limit, en fdrant les ressources (humaines, financires, matrielles et logicielles) ncessaires, suivant un processus cohrent. Il ne peut pas approfondir les techniques autant que le font les dveloppeurs, mme sil est souvent un ancien dveloppeur, mais il doit tre capable de suivre leur travail et darbitrer entre diffrentes options. Laspect communication et le dialogue, aussi bien avec lquipe projet quavec les utilisateurs, est aussi trs important : cest lui qui traduit les lments techniques dans le mtier des utilisateurs et inversement. Pour laider dans sa tche, il a sa disposition des outils de gestion de projets ou de gestion de portefeuilles de projets.

Origines des filires TIC en coles dingnieurs en 2005

Figure 2 : Origine scolaire des tudiants en formations dingnieurs (extraite de ltude Pasc@line)

teur, tels que help desk, hotline, gestionnaire de parc, ergonome, dveloppeur dinterfaces homme-machine.

Lan 2000 et leuro : des facteurs dcisifs


Lapproche de lan 2000 et lentre en vigueur de la nouvelle monnaie europenne ont t loccasion pour les entreprises de revoir de fond en comble leur systme dinformation. Il fallait vrifier que les programmes manipulant des dates nallaient pas gnrer des " bugs ", voire " se planter " compltement, en rencontrant des champs marqus 00. Larrive de leuro, quant elle, ncessitait au minimum de rajouter une colonne dans les tableaux comptables. Cette perspective a gnr une for te demande en cobolistes puisque la plupart des programmes mettant en

uvre des dates et des valeurs, notamment dans les banques et socits dassurance, taient crits dans ce langage. Dautres entreprises en ont profit pour faire voluer leur systme dinformation, et notamment adopter un PGI. Consquence de ces projets de migration : la fin des annes 1990, les informaticiens sont une denre rare, et la demande est trs importante, concernant aussi bien les " vieux " cobolistes, mobiliss pour faire voluer les programmes existants, que les spcialistes SAP et autres PGI pour faire migrer des systmes propritaires vers des progiciels intgrs. Fin 1998, linvestissement pour lan 2000 reprsentait entre 10 et 20% du budget informatique des entreprises.

La " bulle " Internet et aprs


Si tt la vague euro/an 2000 passe, on assiste une monte prodigieuse des applications dinternet, web et messageries, impliquant larrive de webmestres et dinfographistes. Le commerce lectronique ou e-commerce voit souvrir devant lui des perspectives rjouissantes : Forrester Research valuait ce march 22 milliards de dollars en 1998, et prdisait quil atteindrait les 350 milliards en 2002. Une foultitude de socits de la " net-conomie " se crent mais ne tiennent pas leurs promesses et la plupart meurent quelques mois ou quelques annes aprs leur naissance. Cest la " bulle " internet, qui dure, grosso modo, de 1998 2001. Le contre-coup est rude pour les informaticiens qui continuent arriver en masse sur un march de lemploi dj satur. Passe la grande dsillusion de cette premire vague internet, les informaticiens forms ces langages (Java, HTML, XML, VRML, Flash) et techniques (IP protocole http, compres, sion et codage de la voix) vont se trouver prts pour aborder la deuxime vague, vague de fond celle-ci, des systmes distribus et des interfaces de type web.

Des gros projets grer


A loccasion des grands projets de transformation des SI occasionns par lan 2000 et leuro, la maintenance logicielle sest structure, avec lapparition de nouveaux outils et de SSII spcialises sur ce crneau. La maintenance informatique sindustrialise, en faisant largement appel ces techniques et outils tels que rfrentiels, outils danalyse et de cartographie, architecture et urbanisme. Par ailleurs, du fait du grand nombre de projets, les entreprises et surtout les SSII se mettent utiliser largement des outils de planification et de ges-

44

PROgrammez ! \\ Octobre 2008

dossier \\ 10 ans
Rvolution de linterface
Cette seconde vague va largement mobiliser les comptences des spcialistes rseaux et tlcoms, scurit en mettant un fort accent sur les interfaces homme-machine et linteractivit, notamment avec lapparition fin 2004 du web 2.0. " 50% de leffort de dveloppement est consacr la construction de lIHM ", indiquait dj en 2001 Thomas Baudel, ingnieur de dveloppement chez lditeur Ilog. Et Alain Derycke, responsable du DESS Multimdia et Internet pour le commerce lectronique Lille, ajoutait la mme poque : " Les IHM sont passes de ltat de lart celui de science, fonde sur des mthodes de conception, la rutilisation et les patterns. XML est devenu une technologie cl. " Ce que confirme Jean-Claude Rault, consultant indpendant et organisateur de confrences sur le gnie logiciel : " La composante interface prend de limportance : elle associe lergonomie, la psychologie, ltude des compor tements. Cest un mtier qui devrait se dvelopper. "

Le dveloppement par composants


Pendant ce temps, les armes de programmeurs (Cobol, For tran, Assembleur, C, langages temps rel, voire assembleur) ont quasiment disparu, au profit du dveloppement par assemblage de composants. " Cela demande un niveau suprieur de comptence ", indique Jean-Claude Rault. " Compte tenu de la complexit croissante, le niveau bac+5 devient le niveau de rfrence ", renchrit JeanLouis Bernaudin. Cest ainsi quaujourdhui, les mtiers les plus demands sont justement en relation avec ces technologies, comme la not Marie Ozier-Lafontaine : " Les nouvelles technologies lies Java, J2EE, .Net, PHP reprsentent 35 40% des offres demploi, dont 20% pour la spcialisation Java. Ces demandes concernent des ingnieurs en dveloppement et chefs de projet, notamment pour raliser les interfaces web des postes clients. " Outre le for t dveloppement des mtiers existants, relatifs Internet et aux rseaux, les architectures de systmes distribus ont fait natre de nouveaux mtiers : concepteur de systmes distribus, dveloppeur dinterfaces, analyste fonctionnel. " Avec de moins en moins de codage et de plus en plus d'interfaces dvelopper en raison de la rutilisation de composants au sein dune mme application ", dclarait un consultant en architecture distribue ds 1999. " Comme la gestion de rfrentiel ncessite souvent la pratique du langage XML, ce mtier peut voluer vers celui de rdacteur de standards, qui aura pour mission de dfinir et de rdiger les standards de communication entre systmes dinformation lintrieur ou lextrieur de lentreprise. " On peut faire appel un responsable de bibliothque de composants logiciels : garant de la qualit et de la disponibilit des composants, de leur cohrence et de leur prennit, responsable de lentretien des composants et de leur connaissance, sa fonction est comparable celle de ladministrateur de bases de don-

nes. Ses outils sont le rfrentiel de composants ; le gestionnaire de configuration et de documents ; le langage UML pour la description interne des composants et XML pour la description des donnes et mtadonnes, ainsi que des mthodes pour permettre de modifier ou daccder aux composants

Larchitecture de SI : un passage oblig


Poste cl dans ce nouvel environnement, larchitecte de SI. Son travail consiste dterminer comment dcomposer une application ou une famille dapplications en un systme base de composants. Il identifie les composants rutiliser ou dvelopper, il prconise lutilisation de modles (patterns) pour les diffrentes phases : analyse, conception,

Formation des informaticiens


(source : Pasc@line) Trois grands niveaux dtudes Le niveau bac+2, concrtis par les DUT et les BTS, a souvent t prfr pour les postes en contexte industriel ou dexploitation, plus que pour les postes en SSII. Le niveau bac+3 ou 4 recouvre : - les formations de matrise auxquelles se substituent dornavant les masters, formations trs apprcies pour tout le secteur des applications de gestion ; - les nouvelles formations de Licence Professionnelle, qui tendent se substituer aux DUT. Le niveau bac+5, qui reste la rfrence principale dans le secteur, quil sagisse des diplmes dingnieurs ou de masters (qui se sont substitus aux DEA et DESS). Une diversification de lorigine, sinon sociale, du moins scolaire des ingnieurs, par le biais des diffrentes passerelles mises en place, souvent au dtriment des formations de niveau bac+2 ou 3, est galement observable. Quel que soit le cycle dtudes, le pourcentage de jeunes filles en informatique est la baisse, mais suprieur au pourcentage observ dans les formations dingnieurs. Ce pourcentage de jeunes filles est le plus lev dans les formations de niveau bac+5, fluctuant par exemple entre 10 et 12% des effectifs totaux de 2000 2005 dans les coles dingnieurs. Trois grands champs de spcialit relvent des STIC : informatique industrielle, informatique de gestion, audiovisuel. Le nombre de diplms dans ces spcialits a augment au cours des six dernires annes, laugmentation la plus forte se situant en informatique de gestion (+5,4% par an entre 2000 et 2006).

Aujourdhui et demain
Les profils lis aux rseaux sont toujours trs recherchs. " Depuis 2002, on demande des profils expriments type ingnieur pour les technologies de convergence tlphonie-informatique avec expertise voix sur IP et scurit ", constate Marie Ozier-Lafontaine. " Les profils recherchs sont des informaticiens forms aux tlcoms ou des spcialistes tlcoms ayant acquis une comptence en informatique. " Sans oublier les aspects scurit (cryptage, firewalls, paiement scuris, etc.) : en 1999, une enqute de lApec (Agence pour lemploi des cadres) prvoyait que la croissance du march de lemploi dans le domaine de la scurit informatique augmenterait de 10% par an. En 2001, elle reprsentait prs de 24% du march de lemploi informatique.

Octobre 2008 \\ PROgrammez !

45

dossier \\ 10 ans
implmentation. Il propose des " frameworks " ou squelettes darchitecture, qui permettent de dfinir la structure globale, les collaborations entre composants et les tches de contrle dune application pour le domaine concern. Il doit aussi prendre en compte la performance, ladaptabilit et lvolutivit, afin que larchitecture ainsi conue constitue un ensemble facile prendre en main par les dveloppeurs. " Ce nest pas un mtier rellement nouveau, mais au dbut, il y avait confusion totale entre chef de projet et architecte ", constate Jean-Louis Bernaudin, qui souligne les diffrences entre les deux mtiers : " Le chef de projet a une dimension relationnelle et commerciale ; il est charg de grer les dlais, budgets, ressources. Il peut tre assist dun architecte. Celui-ci est le bras droit du chef de projet. " Pour Marie OzierLafontaine, " les architectes et urbanistes de systme dinformation interviennent surtout dans des projets long terme (environ 5 ans). " Ils doivent grer la complexit des nouveaux SI, ce qui ncessite une expertise solide et une exprience de 5 10 ans, avec des profils orients plutt consultants. les grandes entreprises, qui demandent souvent une comptence sur un logiciel particulier (Business Objects, notamment) ", commente Marie Ozier-Lafontaine. Lintitul du poste est " ingnieur en informatique dcisionnelle ". Enfin, aujourdhui, le temps rel et linformatique enfouie connaissent un regain. En effet, des systmes de plus en plus nombreux et varis embarquent de lintelligence, quil sagisse de rseaux de capteurs et dactionneurs, RFID, cartes puces, domotique, M2M, etc. ; grands systmes dinformation (tlcoms, militaire, trafic arien, rseaux de distribution dnergie) chez les industriels et quipementiers, et autres grands chantiers mens grce aux applications de linformatique : Airbus A380, Ariane 5, Gnople, gestion des rseaux GSM et UMTS, systme Sirius, GPS, loisirs numriques (musique, photo, cration), intelligence contextuelle (rendue clbre par le film Minority Report), applications de la vie quotidienne (achats en ligne, carte de transport ou daccs sans contact). " Linformatique enfouie est en explosion du point de vue quantitatif, mais nvolue pas fondamentalement du point de vue qualitatif ", constate Jean-Louis Bernaudin. JeanClaude Rault insiste lui aussi sur limpor tance des mtiers lis lingnierie de systmes : " Les informaticiens qui conoivent ces systmes doivent avoir une vision globale du projet : cots, performances, mcanique ", souligne-t-il. " Pour faire de la gestion de projet, gestion de configuration, dfinition et validation des exigences, il faut avoir une culture plus pousse que la seule connaissance des outils informatiques. Cest ce qui fait souvent dfaut aux ingnieurs systmes. " Les mtiers de linformatique daujourdhui, et surtout de demain, voluent ainsi vers des comptences plus pointues, mais aussi une pluridisciplinarit : associer pratiques technologiques et cration graphique, informatique classique et mtier de lentreprise (banque, industrie), connaissances des progiciels et de la physique ou de la biologie, etc.

Chiffres de lemploi informatique


300 000 salaris, forms, comptents en informatique en 2007 200 000 crations demplois dans les 5 ans venir 40 000 recrutements en 2005 et 2006, 55 000 en 2007, avec un rythme de cration demplois nets qui stablit plus de 15 000 crations demplois nets pour 2007 50% des nouvelles recrues en 2006 sont titulaires dun Bac+5 (source : Syntec Informatique, 2008) 539 244 ingnieurs ou techniciens sont reconnus comme exerant un mtier centr sur linformatique, dont 171 837 travaillent dans des SSII et 55 915 dans des socits de conseil. Ces 539 244 ingnieurs ou techniciens constituent plus de 35% des emplois techniques suprieurs. Plus de 350 000 emplois dans les TIC sont de niveau Bac+5, dont prs de 90 000 en SSII. 149 000 crations nettes demploi et un besoin dembauche de 207 000 sur 2005-2015. (source : Pasc@line, 2008)

(source INSEE, cit par Pasc@line) : Les emplois du secteur Logiciels et Services en informatique de gestion. On peut identifier 5 grands mtiers dingnieurs et cadres techniques :
SSII Tous secteurs

Des mtiers pas si nouveaux


Notre petite chronologie, et son impact sur les mtiers, pourrait sarrter l, avec les mtiers lis aux utilisations dinternet et des web services, et des logiciels open source. Mais il ne faut pas oublier des techniques plus traditionnelles, qui suscitent toujours une forte demande : les bases de donnes, type Oracle, qui ncessitent toujours des administrateurs et des dveloppeurs ; les innombrables PC dans les entreprises, ainsi que les autres matriels, fixes et, de plus en plus souvent, mobiles, avec les logiciels associs, qui doivent tre administrs par des gestionnaires de parcs informatiques. Autre mtier toujours trs demand, les spcialistes du dcisionnel ou BI (Business Intelligence). " Surtout depuis 3 ans, ils sont recherchs par

Dveloppeurs et cadres dtudes 137 830 Maintenance, services aux utilisateurs 11 000 Chefs de projet 3 281 Technico-commerciaux 18 802 Spcialistes Tlcoms 924 Total : 171 837

80,20% 6,40% 1,90% 10,90% 0,50%

283 473 16 208 6 850 25 490 19 543 351 564

80,60% 4,60% 1,90% 7,30% 5,60%

et 5 mtiers de niveau technicien : Techniciens commerciaux et technico-commerciaux en informatique Techniciens de dveloppement en informatique Techniciens de production en informatique Techniciens maintenance et support (informatique) Techniciens tlcoms rseaux Total :

6 629 84 917 13 606 44 848 37 660 187 660

Sites et adresses utiles : www.lesjeudis.com www.changeursdemonde.com www.passinformatique.com www.assopascaline.fr

46

PROgrammez ! \\ Octobre 2008

Nous attendons vos tmoignages sur le forum www.programmez.com

reportage \\ concours

ImagineCup 2008

le tourdu monde
Durant la comptition ImagineCup de juillet dernier Paris, lquipe de Programmez ! a cum les stands des participants, suivi les comptitions, la prparation et a longuement rencontr des quipes du monde entier. Le mois dernier, nous avions surtout mis laccent sur les quipes franaises et les vainqueurs, ce mois-ci, jetons un regard intress sur dautres quipes, europennes ou dailleurs. Elles ont toutes concouru dans la catgorie du " software design ", sauf lquipe indienne.
Claire Rmy

EUROPE
Projet PoinT Power in Time (Allemagne)
Le projet PoinT-Power in Time consiste dans un botier lectrique pour conomiser lnergie des imprimantes et ordinateurs en rseau. Le systme dtecte si les appareils ne sont pas utiliss et les teint compltement, de sorte quils ne consomment plus du tout dnergie. Ds quun appareil est de nouveau requis, le systme le reconnat et le rallume " temps ". Le matriel et le logiciel ont t dvelopps avec un analyseur de trafic. Lquipe, pluridisciplinaire, comprend quatre tudiants de luniversit de sciences appliques dEsslingen, proche de Stuttgart : un spcialiste interface utilisateur graphique ; un spcialiste analyse de rseau ; un spcialiste matriel ; un spcialiste logiciel et gestion de donnes. Ils sont tous en quatrime anne dtudes suprieures. Leur professeur leur a propos de participer la comptition, cest la deuxime fois pour cette universit. " La principale difficult du projet a t le temps limit. Lquipe se runissait tous les jours pour programmer. Actuellement nous recherchons une coopration avec un fabricant de commutateur. La cible pour ce systme est plutt lindustrie ", expliquent-ils. Trois dentre eux avaient dj lhabitude de travailler en quipe. Quant aux dbouchs, aucun problme : " A Stuttgart, il y a beaucoup de socits dinformatique. "

Daniel Franke

Daniel Franke a dbut en informatique lge de 10-11 ans.

" Mon pre ma montr, jai fait des petits programmes. "
Les autres membres de lquipe ont commenc plus tard : Vasilios Filippidis vers 16 ans. Jrn Schindler a commenc vers 16-17 ans et Axel Ernst vers 20 ans.

Vasilios Filippidis

Ct technique
Power in Time sappuie sur le Framework .Net 2.0 et sa dclinaison embarque, Compact Framework. Pour les langages, une grande diversit : ASP .Net, C, C++ et C#. Pour la partie change de donnes et message, on retrouve SOAP et XML.

Jrn Schindler

48

PROgrammez ! \\ Octobre 2008

Axel Ernst

reportage \\ concours

ASIE
Projet Windows Light (Thalande)
Lquipe de Kasetsart University (Thalande), baptise SKE, a men un projet de contrle automatique dclairage pour la maison (home automation), pour lutter contre leffet de serre. " En teignant 1 milliard dampoules lectriques pendant 1 heure, nous pouvons sauver 717 696 arbres ", ont-ils calcul. Lquipe (Udomsak Donkhampai, Tanthwat Khemavast, Saroot Udomkarn et Krithee Sirisith) est en quatrime et dernire anne dtudes. " On commence linformatique vers 15-16 ans au lyce. Lide, cest de travailler 2-3 ans aprs le diplme, puis de faire un master degree ". Pour la partie purement technique, lquipe a utilis une large panoplie de technologies et doutils Microsoft et non Microsoft : .Net 3.0, Visual Studio, Windows SDK, WPF, Vir tual Earth, Framework de calcul de lempreinte carbone.

Matjaz Horvat, Jernej Goricki, Domen Grabec, avec Martin Breskvar leur mentor (en polo ray). " Nous sommes un groupe de personnes qui voulons faire quelque chose dextraordinaire dans la vie. Et nous nous efforons tous de faire quelque chose qui soit utile au bien commun. Lorsque nous avons vu le thme dImagine Cup 2008, nous nous sommes dit : Cest fait pour nous ! "

Projet Ogreenizate ! (Slovnie)


Le projet Ogreenizate! (www.ogreenizate.com) comprend une grande base de donnes produits, quivalente wikipedia, pour les produits de grande consommation (alimentaires, mnagers), et un systme de reconnaissance dimage. A chaque produit est attribue une note de 0 (mauvais) 10 (excellent) tenant compte de la fabrication, des produits chimiques toxiques, de lemballage, du transport. La note transport est localise. Le systme vise duquer le public, mais aussi amuser ses utilisateurs. Lquipe pluridisciplinaire comprend le dveloppeur, le designer, la prsentation et le " gourou " : Anze Furlan,

Ct technique
Du trs lourd pour la partie dveloppement : Siliverlight 2, C#, ASP .Net 3.5 et Popfly. A cela se rajoute C#, REST et LINQ. Ct outils, lquipe a utilis toute la panoplie dveloppeur designer : Visual Studio 2008, SQL Server 2005, Expression Blend 2.5 et les fonctions Activities de IE8.

Projet MEN Mobile Environment-monitoring Network (Hong-Kong)


Lquipe du Yung Yan College (Matthew Kwok, Cathy Lau, Alisa Hung, David Wong), qui a prsent le projet MEN (Mobile Environment-monitoring Network) est probablement la plus jeune quipe finaliste de cette anne : ils ont 17 ans tous les quatre et sont encore au lyce. Ils ont choisi loption informatique. Ils ont gnralement commenc utiliser linformatique

Octobre 2008 \\ PROgrammez !

49

reportage \\ concours
vers lge de 11 ans. Leur projet met en uvre un capteur de CO2 reli un mobile, lidentification par RFID et un systme de golocalisation GPS. Il vise renforcer la conscience des gens et les impliquer autant que possible pour protger la terre. Le capteur fournit des donnes qui sont reportes sur une carte gographique, ce qui permet de voir quelles parties sont pollues, lesquelles ne le sont pas. Le systme peut tre utilis pour le gouvernement et pour le public. Lquipe a ralis une maquette du Tajmahal : lorsque la concentration en CO2 atteint un certain seuil, un feu rouge sallume pour arrter la frquentation du public et donc rduire la concentration en CO2 localement. Cela peut aussi tre utilis pour encourager les conducteurs garer leur voiture et utiliser les transports en commun. " Nous esprons proposer ce projet au gouvernement. " Pour accompagner leur projet, ils ont cr un site (http://men.yeelok.com) avec une devise " Unite people to protect our earth ! ", un logo, un pins Bref, de vrais petits professionnels de linformatique et du marketing ! La diversit du projet (embarqu, tiago Nieves, Enrique Lira Vargas, Fernando Aguilar Reyes, avec leur mentor, Gabriel Ibarra Romero) a dvelopp le projet Pepenator (www.cmirg.com/pepenator) en vue de changer les habitudes des gens et de les aider recycler. Ils sont informaticiens, sauf Fernando Aguilar Reyes qui est tudiant en mcanique (Mechanical Engineering). Bas sur le web, le systme est destin aux coles, supermarchs, gouvernements Il intgre logistique, codes barres, hotmail, systme dinformation gographique.

RFID, GPS, desktop, web) a oblig lquipe intgrer dans un mme projet des technologies diverses pour ces diffrents aspects. On retrouve dans la panoplie technique : Virtual Earth, WPF, Silverlight 2, un kit RIFD, Windows Mobile 5, .Net 3.5, ASP.Net Ajax, SQL Ser ver 2005 Express, des gadgets, Visual Studio 2008 ainsi que lensemble de la gamme Expression !

AMERIQUE LATINE
- Projet Pepenator (Mexique)
Lquipe Chicos Karel (Felix Rafael Horta Cuadrilla, Rodrigo Rubn San-

Equipe

" Embedded Development " projet JAL (Inde)

L
50

quipe DCEites (Kumar Ankit, Siddharth Singhal, Sunil Kumar), juste diplme de luniversit de Delhi (Delhi College of Engineers), tait dj candidate en 2007. Ils ont 22-23 ans. Lquipe comprend des ingnieurs de diffrents domaines un lectricien, un sp-

cialiste de lordinateur, un informaticien. " Nous tions dj candidats en 2007 et nous avons lhabitude de travailler ensemble. " Le projet JAL concerne la pollution des rivires. " Jal signifie eau en hindi. " Le systme est bas sur deux types de capteurs de pollution : des capteurs fixes placs dans leau prs des industries pour informer les gouvernements ; des capteurs sur des petits bateaux pour mesurer la pollution alatoire " car les gens continuent jeter des impurets dans les rivires, et a cote trs cher de dpolluer. " " Nous sommes en relation avec les responsables de la dpollution. " Pour ce projet, ils ont travaill en collaboration avec le gouvernement sur la rivire Yamuna qui passe Delhi. Ensuite, le systme sera test avec les autorits municipales. Lune des difficults tait linterface gographique. Les membres de lquipe se sont initis linformatique depuis lge de 14 ans en moyenne. Les parents leur achtent un ordinateur pour le travail, le jeu et internet. Lun deux a pris des cours lcole et a commenc coder 16 ans.

PROgrammez ! \\ Octobre 2008

bonnes feuilles \\ E X C L U S I F
2e partie

Les projets secrets de Microsoft


Aprs le dpart de son fondateur, o va Microsoft ? Mary Jo Foley, journaliste et blogueuse indpendante rvle dans son livre " non autoris " ce que sera " Microsoft 2.0 " : la stratgie, les futurs produits. Dans le dernier chapitre, dont nous publions des extraits ci-dessous, elle lve le voile sur les projets secrets de lditeur.

Vers Microsoft 3.0


" Toute technologie qui va avoir un impact significatif sur les 10 prochaines annes a dj au moins 10 annes de retard. Cela nimplique pas que les technologies vieilles dune dizaine dannes ont atteint lge adulte et que nous en comprenions tous les tenants et aboutissants ; cela signifie plutt que nous connaissons juste le concept de base ou quil est comprhensible pour ceux qui se donnent la peine de ltudier. " Bill Buxton, Research Principal Scientist chez Microsoft, " The Long Nose of Innovation ". Bien que les technologues aient peine commenc aborder ce que les gens appellent le " Web 2.0 ", on parle dj de son successeur, le " Web 3.0 " () Selon Wikipdia : " Certains pensent que les technologies mergentes comme le Web smantique vont transformer la faon dont le Web est utilis, et offrir de nouvelles possibilits lintelligence artificielle. Dautres visionnaires suggrent que laccroissement de la vitesse de connexion Internet, les applications web modulaires, ou bien les progrs de linformatique graphique vont jouer un rle cl dans lvolution du World Wide Web. " ()

synergies entre Windows et Windows Live. Cest ce quexplique clairement un mmo rdig au cours de lt 2007 sur le planning de Windows Live Wave 3 : " Pendant que nous allons cibler une exprience continue sur Windows Vista, nous allons parier sur lexprience et la plate-forme Windows 7, et crer la meilleure exprience quand on est connect avec Windows 7. Nous allons travailler avec lquipe Windows 7 pour devenir le meilleur dveloppeur de solutions sur la plate-forme Windows 7. Nos expriences seront conues de telle sorte que lorsque lon est connect Windows 7 on tend lexprience Windows de manire continue, et nous allons travailler suivre les prconisations de style Windows 7 pour les applications. " ()

Dans les labos de recherche de Microsoft


Les mmos dvoilant des plannings ne procurent cependant que des informations court terme et si vous cherchez des indices sur les futurs produits de Microsoft plus long terme, vous devez explorer dautres voies. Une solution consiste examiner les brevets que la socit a dposs au cours des dernires annes. En 2007, il a t accord Microsoft plus de 1 600 brevets. () Une autre solution pour faire des hypothses sur lavenir de Microsoft consiste explorer un chantillon des centaines de projets de recherche sur lesquels travaille Microsoft. Microsoft a dpens plus de 7,5 milliards de dollars au cours de lexercice fiscal 2007 en recherche et dveloppement. En 2007, la socit a employ 700 chercheurs temps plein dans ses diffrents centres de recherche qui sont situs Redmond, Mountain View, Cambridge en Angleterre, Pkin et Bangalore en Inde.() Lobjectif des centres de recherche de Microsoft est de se projeter une dizaine dannes dans le futur pour identifier et inventer les technologies importantes qui vont dterminer lexprience utilisateur lavenir. Les chercheurs essayent donc de trouver de nouveaux moyens dinteraction avec les ordinateurs et les priphriques. Tout comme Bill Gates qui a domin la socit depuis sa fondation, les labos de recherche de Microsoft ont investi beaucoup de temps et dnergie dans la reconnaissance de la parole, de lcriture manuscrite et des gestes.
Septembre 2008 \\ PROgrammez! 51

Windows Live Wave 3 : partir de 2010


Aprs les dmls judiciaires de Microsoft avec le Ministre de la justice amricain, la socit sest rendu compte que chacune de ses dcisions commerciales tait sous surveillance. Cela est particulirement vrai en Europe, o les adversaires de Microsoft ont trouv des autorits de rgulation antitrust prtes attaquer lditeur de Redmond sur le champ. Il y a pourtant des signes de plus en plus nombreux qui montrent quen dpit de la colre possible de Google, Adobe, Opera Software, et des autres, Microsoft est en train de chercher partir de 2010 et au-del, lier plus troitement Windows et les technologies et stratgies Windows Live. Microsoft ne va sans doute pas aller jusqu proposer une offre groupe de ses services Windows Live avec les nouvelles versions de Windows. Cela serait trop audacieux et Microsoft serait une proie facile pour ses concurrents prompts ester en justice, mais la socit cherche activement accrotre les

bonnes feuilles \\ EXCLUSIF


Certaines de leurs inventions se sont concrtises dans diffrents produits Microsoft. Dans certains cas, comme celui de la table tactile Surface, il a fallu des annes pour que les travaux des chercheurs dbouchent sur un produit commercial. Mais comme le rptent souvent les Softies, il ny a aucune garantie ce que les produits issus des labos de recherche de Microsoft trouvent des dbouchs commerciaux. Malgr cette mise en garde, les labos de recherche de Microsoft donnent de bons indices quand on veut rflchir lavenir de Microsoft et nous permettent de faire un peu de prospective.

Cosmos : pas dinformations publiques


Daprs mes sources, Cosmos est une sorte de systme de fichiers distribu qui pourrait tre la concrtisation de WinFS (Windows File System) qui devait faire partie de Windows Longhorn.(1) Cosmos est aussi une couche de stockage sur laquelle repose linfrastructure de Windows Live Search. Horizon et Cosmos, pourraient en fait sortir plus rapidement quil ny parat, surtout si Microsoft a lintention de rester comptitif par rapport ses concurrents web. ()

Windows Live Core " lHorizon "


quelle vitesse les clients et les diteurs vont-ils adopter linformatique en ligne (cloud computing) ? Certains diteurs, comme Google, parient dj aujourdhui 100 % sur cette technologie. Dans son best-seller paru en 2008, The Big Switch, Nick Carr met lhypothse que le modle des services est en passe de devenir aussi omniprsent chez les consommateurs que llectricit. Mais Microsoft, ainsi que lauteur de ces lignes, est beaucoup plus prudent sur la rapidit du succs foudroyant du modle de cloud computing (au-del des tudiants et des fanatiques des nouvelles technologies qui travaillent principalement dans les PME). Jusqu prsent, Microsoft a assur ses arrires avec le modle Software + Services, mais la vision plus long terme de Microsoft du modle cloud computing tourne autour de Windows Live Core et dun autre projet dont le nom de code est Horizon. Horizon, pour le peu que jen sais, est un service de stockage en ligne qui est conu pour donner aux utilisateurs limpression que, quel que soit lendroit o ils se trouvent (sur leur propre PC, sur un priphrique mobile, sur un systme distant, etc.), ils sont connects leur propre ordinateur. Horizon sera la fois une interface web, un service de stockage, une sorte de mcanisme de synchronisation de fichiers et un client.

Cest la fin de Windows tel que nous le connaissons


Windows Mobile est juste lune des nombreuses platesformes Windows que Microsoft se dpche de faire progresser. Un jour, peut-tre pas si lointain, Windows va devenir plus un lment du passif que des actifs pour Microsoft. Mme avec Windows Vista, Microsoft trane comme un boulet la garantie de rtrocompatibilit qui handicape le systme dexploitation en matire dapplications et de pilotes existants. De nombreux observateurs de Microsoft pensent que la socit va bientt rompre cette chane et lancer un nouveau produit post-Windows qui ne sera plus limit par lhritage du pass. Il faut cependant noter que tout le monde nest pas de cet avis. Jai aussi entendu dire que Microsoft travaille sur une architecture qui rglerait ce problme et qui permettrait aux anciennes applications et aux pilotes dtre virtualiss et de sexcuter dans ce mode en mme temps que les applications natives plus modernes. Il se peut galement que Microsoft finisse par emprunter la voie suivie par Apple avec Carbon, en sortant un environnement qui fournit une rtrocompatibilit pour les anciens logiciels. Ou bien il est possible que Microsoft puisse contourner la plupart des problmes de rtrocompatibilit en dcouplant simplement les lments de Windows comme le courrier lectronique, le stockage des photos et les lecteurs audio/vido, et en les fournissant en option sous la forme de services Windows Live. De cette manire, Microsoft pourrait rduire la complexit tout en faisant capoter les projets des enquteurs antitrust (tout du moins en matire de vente lie). Du ct de la recherche, Microsoft a dvelopp un systme dexploitation en mode micro-noyau qui nest pas bas sur Windows et dont le nom de code est Singularity ; il

Nom de code : Horizon


Horizon permettra aux utilisateurs de synchroniser des fichiers dun PC vers un autre PC (grce linstallation dun client), douvrir, de modifier et denregistrer des fichiers en ligne partir dun navigateur, de partager des documents en ligne ou de se connecter distance nimporte quel PC. Horizon sera une volution du service de stockage qui est actuellement utilis par les services Live existants, notamment SkyDrive et Windows Live FolderShare. Est-ce que Horizon sera gratuit ou payant ? Sera-t-il extensible? Quand sera-t-il disponible ? Nous ne connaissons pas ces dtails pour linstant, mais il semblerait que Microsoft envisage de tester en 2008 Horizon qui sera la dorsale de son futur maillage de priphriques et de rseaux sociaux. Horizon semble avoir un rapport avec un autre projet Microsoft dont le nom de code est Cosmos ; il sagit dune plate-forme de service dinformatique distribue grande chelle.
52 PROgrammez! \\ Septembre 2008

(1) Il ny a pas dinformations publiques sur Cosmos. Il y a cependant beaucoup dinformations anciennes sur WinFS, le systme de fichiers de Windows que Gates a dcrit il y a quelques annes comme lun des meilleurs arguments de vente de Windows Longhorn (http://msdn.microsoft.com/msdnmag/issues/04/01/WinFS/). Aprs plusieurs annes de promesses non tenues, Microsoft a finalement arrt WinFS en juin 2006, en promettant de livrer la plupart des fonctionnalits du systme dexploitation dans les futures versions de SQLServer et dautres produits.

bonnes feuilles \\ EXCLUSIF


comprend un nouveau langage de programmation (Sing# ) et de nouveaux outils de vrification des logiciels. proche de la commercialisation que la majorit des projets de recherche de Microsoft, mais pas assez finalis pour que lon puisse en voir une forme quelconque de prsentation. Midori est aussi intressant par la personne qui dirige ce projet, savoir Eric Rudder qui est apparu un moment donn comme lhritier de Bill Gates. " Toutes les personnes travaillant sur Midori sous les ordres de Rudder sont des vtrans chevronns au titre ronflant qui retrouvent leurs racines et crivent du code comme ils le faisaient probablement il y a une vingtaine dannes " ma confi un bon connaisseur de Microsoft. Midori ressemble beaucoup un projet secret de Microsoft dnomm BigTop qui est un projet en incubation sous le contrle du CSRO Mundie.

Projet Singularity : la programmation sans dfaut


Voici ce quen disent les chercheurs responsables de ce projet : " Le projet Singularity a dmarr en 2003 dans le but de rtudier les dcisions de conception et les dfauts les plus vidents des systmes et logiciels existants. Parmi ces points faibles, on peut lister les failles de scurit, les interactions inattendues entre les applications, les erreurs provoques par des dtournements dextensions, de plug-in et de pilotes, ainsi quune impression de manque de robustesse. Nous pensons quune grande partie de ces problmes sont dus aux systmes qui nont pas volu audel des architectures informatiques et des langages de programmation des annes 1960 et 1970. Lenvironnement informatique de cette poque tait trs diffrent de ce que nous connaissons aujourdhui... Ds le dbut de sa conception, Singularity a tent de rpondre la question suivante : quoi devrait ressembler une plate-forme logicielle si elle tait conue partir de zro avec lobjectif principal damliorer la scurit et la fiabilit ? " (2) Les chercheurs de chez Microsoft ont crit Singularity 100 % en code manag, ce qui signifie en langage de profane, que le code est contrl par le Microsoft Common Language Runtime, qui est le coeur du .NET Framework. Le code manag est cens tre plus scuris par sa conception. Singularity a t pens ds le dbut pour minimiser les dpendances du sous-systme interne, problme qui a t une vritable plaie pour Windows. Il a t aussi voqu les recherches de Microsoft sur le couplage de Singularity et de lhyperviseur Viridian. Les chercheurs de Microsoft ont achev la version 1.0 de Singularity en 2007 et livr un kit de dveloppement plusieurs universits en stipulant quil ne devait tre utilis qu des fins de recherche. Lquipe de recherche de Microsoft travaille actuellement sur la version 2.0 de Singularity.

Big Top : dvelopper rapidement


BigTop a t conu pour permettre aux dveloppeurs de crer relativement rapidement un ensemble de composants autonomes dun systme dexploitation distribu. Certains dcrivent BigTop comme un systme dexploitation en grille (grid-computing ) distribu. Big Top comprend trois composants principaux : Highwire : cest une technologie conue pour automatiser le dveloppement dapplications massivement parallles qui rpartissent le travail entre des ressources distribues. Bigparts : il sagit de code conu pour transformer des priphriques PC bon march en serveurs spcialiss, en permettant des logiciels temps rel et spcifiques un matriel, dtre grs de manire centralise, en dehors du PC. BigWin : cela ressemble au prcurseur de la stratgie de Microsoft Software + Services (S+S). Les applications BigWin sont simplement des collections de services du systme dexploitation qui adhrent des contrats de comportement prtablis. Microsoft a fini par abandonner le projet BigTop en 2006, mais il semble quune bonne partie des concepts se retrouve dans Midori. ()

Les futurs centres de donnes


Le mystrieux projet de Rudder nest pas le seul concernant les systmes et les rseaux davenir de Microsoft qui largit ses centres dintrt aux technologies informatiques sophistiques, comme le clustering, la tolrance de pannes, linformatique parallle, etc. Ces technologies ne sont pas seulement conues pour les clients de Microsoft car elles vont probablement tre appliques dans le rseau grandissant de Microsoft, compos de centres de donnes qui font fonctionner ses diffrents services Live. Lquipe de recherche Dryad, qui est base Mountain View, dveloppe des logiciels qui sont conus pour fournir des abstractions au niveau du systme dexploitation pour les grands clusters composs de plusieurs milliers de PC qui se trouvent dans les centres de donnes. Dryad est considr comme la rponse de Microsoft au MapReduce de Google,
Septembre 2008 \\ PROgrammez! 53

Confidentiel : Midori, plate-forme de systme dexploitation distribu


Il y a apparemment un projet confidentiel qui est en cours de dveloppement et qui a un rapport avec Singularity. Ce projet, dont le nom de code est Midori, est une nouvelle plate-forme de systme dexploitation distribu. Midori est en incubation, ce qui signifie quil est un peu plus

(2). Vous trouverez beaucoup dinformations sur le projet Singularity sur http://research.microsoft.com/os/singularity/. Les citations proviennent dune tude davril 2007 intitule " Rethinking the Software Stack ", qui est disponible sur http://research.microsoft.com/os/singularity/publications/ OSR2007_RethinkingSoftwareStack.pdf. Il est intressant de noter quil nest pas fait mention de " Midori " dans cette tude.

bonnes feuilles \\ EXCLUSIF


qui est larchitecture logicielle permettant des calculs parallles sur de grands clusters dordinateurs. Selon le site web du projet Dryad, " la conversion dun programme squentiel sexcutant sur une seule machine en un logiciel pouvant tre excut dans un environnement concurrent, potentiellement distribu, est rpute difficile... Le projet Dryad est une tentative de gnralisation de cette approche afin de fournir un modle de programmation qui permet de passer dune machine multicoeur de grands centres de donnes. "(3) multicoeurs. Mundie mne les oprations pour modifier radicalement la conception et le dveloppement des logiciels afin de pouvoir profiter du passage aux systmes multicoeurs. En 2007, il a commenc intensifier sa campagne pour faire du dveloppement multicoeur une des priorits de Microsoft. " Alors que les capacits des microprocesseurs ont augment considrablement, ainsi que le systme dans son ensemble, le concept dapplication na pas fondamentalement chang " a dclar Mundie aux analyses de Wall Street et aux membres de la presse qui assistaient la confrence FAM 2007. " La question est donc de savoir pour Microsoft, et en fin de compte pour toute lindustrie, ce que seront les futures applications et quoi elles vont ressembler. " Selon Mundie, le dveloppement du modle de service en ligne saccorde bien avec le paradigme multicoeur, tant donn que les applications multicoeurs seront plus asynchrones, faiblement couples, concurrentes, dcentralises et rsilientes. Microsoft mne plusieurs initiatives concernant les diffrents aspects de lexploitation des processeurs multicoeurs, notamment le projet MS-ManiC (Memory Systems for Many Cores) qui est dcrit en ces termes sur une page du site Microsoft Research : " Ce projet est consacr la conception darchitectures volutives de systmes mmoire pour les futurs processeurs multicoeurs. Le systme mmoire nest pas seulement lun des principaux goulets dtranglement des multiprocesseurs, mais sa conception peut conduire de graves pertes dnergie, une certaine imprvisibilit et des failles de scurit. Notre objectif est de concevoir un systme mmoire volutif et quilibr qui utilise une approche matrielle et logicielle holistique. Nous nous intressons la conception dun systme mmoire scuris, dot de performances leves et conergtique qui fournit en mme temps une bonne qualit de service aux applications qui lutilisent. " Du ct commercial, lquipe Parallel Computing Platform travaille au dveloppement de nouveaux outils et compilateurs qui prendront en charge les systmes parallles. Ces nouveaux outils seront bass sur Phoenix qui est un framework de transformation et danalyse de code, en dveloppement depuis plusieurs annes.

Dryad, Projet Eclipse


Lquipe de Dryad sest concentre lorigine sur quelques domaines importants : la dcomposition du squelette dun programme en un ensemble de simples classes dexploitation, la tolrance de pannes, et la dcouverte de modles convenant aux systmes distribus, notamment la vision par ordinateur, la parole et lapprentissage informatis. Les chercheurs de Dryad travaillent main dans la main avec les groupes produits MSN/Windows Live qui ont besoin dune volutivit et dune bande passante toujours croissantes. Quel que soit le degr de tolrance aux pannes et de fiabilit des systmes, les pannes et les priodes dindisponibilits sont invitables. Microsoft et les autres diteurs semblent avoir actuellement abandonn lide de garantir un temps de disponibilit de 99,999 % et prfrent parler de " mode dgrad " et de " restauration automatique ". Le projet de recherche Eclipse (4) concerne la conception de systmes distribus tolrance de pannes tout en prenant en considration la ralit des performances. Et Pat Helland, grand gourou de chez Microsoft, a parl de lavenir des centres de donnes en voquant de nombreux petits ordinateurs bon march consommant moins dlectricit.

Prise en compte des processeurs multicoeurs


Laugmentation du nombre de processeurs dans les machines multicoeurs est une autre tendance informatique qui va avoir un impact de plus en plus important dans le futur la fois pour Microsoft et ses clients. On constate ce phnomne non seulement pour les serveurs, mais galement pour les machines de bureau et les portables o les processeurs multicoeurs deviennent la norme. Les systmes dexploitation (Windows ainsi que les autres) et les outils de programmation ne sont actuellement pas capables dexcuter les applications qui utilisent compltement les possibilits des systmes

Mary Jo FOLEY, Extrait de : Microsoft laprs Bill Gates, Avec laimable autorisation des ditions Dunod. Parution le 24 Septembre 2008.

Qui sera lhritier de Ballmer?


(3). http://research.microsoft.com/research/sv/dryad/. Vous trouverez dautres informations sur Microsoft Dryad dans un message de mon blog disponible sur http://blogs.zdnet.com/microsoft/?p=18 (4). Vous trouverez des informations sur Eclipse (le successeur du projet Boxwood qui a t arrt) sur http://research.microsoft.com/research/ sv/eclipse/
54 PROgrammez! \\ Septembre 2008

Aprs le dpart de son fondateur, qui dirigera demain cette socit de 80 000 employs ? Des extraits sont galement en ligne sur

www.programmez.com

Votre pack internet est-il vraiment adapt ?

- Conditions Gnrales de Vente sur le site www.amen.fr. AMEN RCS PARIS : B 421 527 797. IN WEB WE TRUST : Nous croyons au web.

7,80 HT/an
soit 9,33 TTC/an

PARTIR DE

AVEC LE PACK LA CARTE D'AMEN, VOTRE HBERGEMENT S'ADAPTE SIMPLEMENT L'VOLUTION DE VOS BESOINS.

Votre nom de domaine inclus Espace d'hbergement de 0 20 Go Php4, Php5, Perl, Python, Ruby De 0 20 bases de donnes avec espace de stockage flexible de 25 Mo 1 Go De 0 200 comptes email 2 Go webmail/pop/imap Paramtrage de l'envoi de mails php Outil de cration de site inclus Outil de cration de boutique e-commerce inclus

Pour plus de renseignements : 0892 55 66 77 (0.34 /mn) ou www.amen.fr


NOMS DE DOMAINE

EMAIL

HBERGEMENT

CRATION DE SITE

- E - COMMERCE -

RFRENCEMENT

code \\ modlisation

Prsent sur le CD du numro !

BLU AGE dition 2009 : gnrer vos applications Java EE et .NET


Construit sur Eclipse 3.4, BLU AGE Edition 2009 transforme automatiquement et instantanment vos modles UML 2 (PIM) en applications JAVA EE et .Net. BLU AGE est une implmentation du MDA et outille vos dveloppements agiles.
Jean-Luc Recoussine - BLU AGE Centre Manager. partir dun modle, il est possible de gnrer lintgralit dune application bien au-del du CRUD. BLU AGE BUILD permet de gnrer en temps rel les applications, de les excuter pour les tester et de les dboguer dans le modle. Une version dvaluation de BLU AGE BUILD dition 2009 est disponible sur le CD de ce mois-ci. En guise de prise en main, nous vous proposons de tlcharger un modle exemple ladresse suivante http://www.bluage.com/programmez. Le modle UML de cette application est compos : de 2 classes strotypes " entity " : " Collaborateur " et " Civilite " places dans un package strotyp " PK_ENITY ". Chaque attribut est typ et peut tre spcialis laide dun ou plusieurs strotypes. Ces classes reprsenteront le modle des entits persistantes et peuvent tre lies entre elles par des relations. Dans notre exemple, nous avons une classe

A propos de BLU AGE Edition 2009


Pour outiller vos projets agiles, BLU AGE dans son dition 2009 propose 3 modules : BUILD, permettant de dbuguer vos modles et de tester leur excution en les transformant en applications JAVA ; DELIVER, permettant de gnrer en temps-rel vos applications vers vos Frameworks techniques; et REVERSE MODELING, vous offrant la possibilit dextraire les spcifications dapplications existantes sous forme de modles UML2.

" Contact " qui reprsente lentit du contact et une classe " Civilite " qui dfinit la civilit du contact [Fig.1]. de 2 classes Business Object (BO) drives des entits dfinies ci-dessus et places dans un package strotyp " PK_BUSINESS_OBJECT ". Ces classes sont celles qui sont manipules par lapplication. Ceci permet denrichir le modle mtier avec des lments non persists. dun service " ServiceContactCreate " dclar laide dune interface (au sens UML) et inclus dans un package strotyp " PK_SERVICE ". Ce package peut contenir autant de services que ncessaire. Ces services dfinissent les traitements mtiers dune application. Chaque service manipule des " Business Objects " (BO). Ces services sont de trois familles : - Services standards : oprations de traitements primitifs (CRUD, recherche, etc.). Ils sont strotyps : create, delete, update, find by id, etc., - Services complexes : squences de traitements primitifs incluant des conditions et des itrations. Ils sont strotyps " complex " puis dcrits dans des diagrammes de squences, - Services spcifiques : rutilisation de bibliothques dj disponibles (capital existant chez un client). Ils sont strotyps " specific ".
Fig.2

dun acteur au sens UML. Cet acteur correspond un rle disponible pour les utilisateurs de lapplication. Dans notre cas, nous avons un rle nomm " simpleUser " de uses cases inclus dans des packages UML permettant de dfinir lorganisation fonctionnelle de lapplication. Les rles dfinis plus haut sont associs aux packages par des relations de dpendance qui permettent de dterminer les droits daccs. Chaque uses cases contient un ou plusieurs diagrammes dactivit correspondant une page de lapplication. Ces diagrammes dcrivent les traitements raliss suite aux actions excutes sur la page, par exemple " clic sur sauvegarder ". Chaque diagramme dactivit est dcompos en 4 " swimlines " permettant de classifier les traitements. Le diagramme dactivit prsent ici [ Fig.2 ] dcrit laffichage de la page " creer " puis lexcution du traitement dinsertion en base suite au clic du bouton " btnSauvegarder ", c'est--dire lexcution du service " ServiceContactCreate " avec comme paramtre lobjet " myContact " instance de " ContactBO ". Une fois le service excut, la page
Fig.3

Fig.1

Figure 1 : Entits et business objects

Figure 2 : Diagramme dactivit de la page de cration

Figure 3 : Elments du modle

56

PROgrammez ! \\ Octobre 2008

code \\ modelisation
" play " est servie au client. Cette page " play " possde aussi son propre diagramme dactivit. Dans notre exemple, le diagramme dactivit est trs simple car il ny a quune seule action de type primitif (insertion en base) raliser. Toutefois, BLU AGE permet de grer des actions multiples et mme dajouter des conditions. Vous pouvez tlcharger les lments du modle ladresse http://www.bluage. com/programmez et faire copier/coller des contenus des dossiers.

CREZ VOTRE PROJET

Nous allons maintenant crer un projet sur lenvironnement BLU AGE BUILD. Aprs avoir install et excut BLU AGE (voir encadr), vous pouvez crer un projet : " file>new>other " puis slectionnez " BLU AGE Project>Project ". Cliquez ensuite sur " next ". Sur la bote de dialogue dfinissez le nom de votre projet, par exemple " leCarnet " puis cliquez sur " next ". Compltez les informations demandes : [Fig.4] - SGBD : serveur de base de donnes, - Driver : automatique, driver pour la connexion la base, - User et Password : utilisateur et mot de passe dun utilisateur de la base de donnes autoris, - Url Connexion : chane de connexion la base de donnes, remplacez le nom de la base par le nom que vous utiliserez, - hibernateHbm2DDLAuto : mode de cration des tables. Si ce champ est gal " update ", alors la premire excution de lapplication, les tables seront automatiquement cres dans la base.

Paramtrez la maquette XHTML en appliquant des tags BLU AGE afin dassocier les lments du modle la prsentation. Cette action est ralise laide de lenvironnement BLU AGE BUILD. Dans lexemple de la [Fig.5] nous avons paramtr le champ de saisie du formulaire laide du tag BLU AGE <bluage:TextField> en prcisant que ce champ permet de renseigner lattribut " Contact.nom " de linstance " myContact ". Une fois la maquette entirement paramtre, configurez la gnration. Pour cela, allez dans le menu " run>run configuration ", sur la bote de dialogue faites un clic droit sur " BLU AGE Generation Launcher ", slectionnez " new " et paramtrez les lments : [Fig.6] - Name : nom de la configuration, - Project : nom du projet sur Eclipse, - Select model : nom du modle UML disponible dans le dossier " model " du projet.

Sauvegardez en cliquant sur " Apply " puis excutez la gnration en cliquant sur " Run ". Vous pourrez voir la progression de la gnration dans une console Eclipse. Aprs quelques secondes, lapplication est gnre. 3 projets ont t ajouts au workspace Eclipse : leCarnet-entities, leCarnet-service et leCarnet-web.

BLU AGE BUILD permet de dployer les applications gnres sur un environnement Apache Tomcat 5.5 pour les tester. Faites un clic droit sur le projet " leCarnet-web ", slectionnez " run as " puis " run on server ", choisissez Apache Tomcat 5.5 Server, paramtrez le serveur (choisissez le JRE et localisez le rpertoire Tomcat). Une fois le paramtrage finalis, lapplication sexcute. Vous trouverez sur la distribution prsente sur le CD de nombreux autres exemples. Ils sont accessibles en slectionnant " Help>Cheat Sheets " puis en slectionnant " BLU AGE Tutorial ". A ladresse http://www.bluage.com/ programmez plusieurs tutoriels en ligne sont disponibles.

Installation et pr-requis
- Windows XP/2003, 2Go mmoire, disque dur disponible avec 500Mo despace. - JDK 1.6 (http://java.sun.com/javase/downloads/index.jsp) - Tomcat 5.5.25 (http://tomcat.apache.org/) - SGBD (SQL Server ou autre SGBD) - Modeleur UML permettant lexportation au format EMF 2.0 (ici nous utilisons MagicDraw 15.5, vous pouvez demander une version dvaluation par mail : magicdraw@bluage.com ou par tlphone au +33 0 1 56 05 60 91) Installation : - Double cliquez sur le .jar du rpertoire du CD. Si ceci ne fonctionne pas, faites un clic droit

Cliquez sur " finish " et le projet sera cr dans lenvironnement BLU AGE BUILD. Il contient 2 dossiers : - mockup : pour stocker lensemble des pages XHTML du modle, - model : pour stocker le modle UML au format EMF.

sur le fichier et slectionnez " ouvrir avec ", choisissez " Java Platform SE binary " (vous pouvez aussi cliquer sur " Parcourir " et slectionner " java.exe " dans le dossier sur lequel est install votre JDK 1.6). Lancement : - Excutez le raccourci " BluageDiscovery " sur votre bureau ou lancez " C:\Program Files\BLUAGEDISCOVERY\BLUAGE\eclipse\eclipse.exe ". Pour contacter le support BLU AGE : - Par tlphone : +33 1 56 05 60 91 (de 10h00 18h00) - Par e-mail : programmez@bluage.com

Fig.4

Fig.5

Fig.6

Figure 4 : Paramtrage dun projet

Figure 5 : Paramtrage de la maquette

Figure 6 : configuration de la gnration


Octobre 2008 \\ PROgrammez !

57

Le magazine de la Direction Informatique


Choisir, dployer, exploiter les softwares
Abonnez-vous au seul magazine offrant aux responsables informatiques une information et des tmoignages focaliss sur le logiciel en entreprise.
Dans chaque numro,
les tendances, les dossiers, les interviews, les tmoignages, les avis dexpert dans tous les domaines du logiciel professionnel : Les SSII, des mtiers et du recrutement ; Ladministration, les rseaux ; La scurit, la sauvegarde ; La gestion des projets, les mthodes, le dveloppement ; Les progiciels, ERP, BI et SGBD
Lactualit au quotidien : Scurit Projets et dveloppement Administration Progiciels Les Cas Clients

Prochainement : Vidos (Actualit et Cas Clients)

www.solutions-logiciels.com
OUI, je mabonne (crire en lettres capitales)
Envoyer par la poste : Solutions Logiciels, service Diffusion, 22 rue ren Boulanger, 75472 PARIS - ou par fax : 01 55 56 70 20 1 an, 6 numros : 25 au lieu de 30 , prix au numro (Tarif France mtropolitaine)
Autres destinations : CEE et Suisse : 30 - Algrie, Maroc, Tunisie : 33 , Canada : 39,50 - Dom : 38 Tom : 50
M. Titre : Mme Mlle Socit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Directeur informatique Responsable informatique Chef de projet Admin Autre . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . Fonction :

NOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Prnom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . N . . . . . . . . . . . . . . . . . . . . . . . . . . . rue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Complment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Adresse mail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

................................................................

Je joins mon rglement par chque lordre de SOLUTIONS LOGICIELS

Je souhaite rgler rception de facture

SL004

Code postal : . . . . . . . . . . . . . . . . . . . .Ville . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Editeur : K-Now sarl au cap de 8000 sige social : 6 rue Bezout, 75014 Paris

code \\ fash

ActionScript 3 et la programmation bitmap


Une des fonctionnalits les plus intressantes du lecteur Flash concerne la programmation bitmap. Cette nouvelle capacit apparue avec l'arrive du lecteur Flash 8 est rarement aborde au sein d'articles lis la programmation Flash. Nous rparons cette lacune aujourdhui !
Nous allons nous attarder au cours de cet exercice la mthode draw de la LANGAGE : actionscript classe BitmapData, et DIFFICULTE SOURCE : non dcouvrir comment celle-ci FACILE permet de gagner du temps dans nos dveloppements de tous les jours. La mthode draw permet de rasteriser n'importe quel lment vectoriel en image bitmap. Nous verrons l'intrt d'une telle mthode afin de raliser un nuancier dans lequel nous pourrons slectionner une couleur spcifique et obtenir son code hexadcimal.

APPLICATION : Flash

// cration de l'objet Bitmap var affichage:Bitmap = new Bitmap ( monNuancier ); // cration du conteneur interactif var conteneur:Sprite = new Sprite(); conteneur.addChild ( affichage ); addChild ( conteneur ); Il est intressant de noter que la classe flash.display.BitmapData n'est pas une classe interactive. Celle-ci ne peut recevoir des vnements souris, et donc dtecter la slection de l'utilisateur. Afin de rendre une image bitmap interactive, il suffit d'imbriquer celle-ci dans un conteneur interactif de type flash.display.Sprite ou flash.display.MovieClip. [Fig.3] Afin de pouvoir slectionner une couleur nous devons ajouter diffrents vnements interactifs.

DGRADONS !
Afin de raliser notre "nuancier" appel plus couramment "color picker", nous devons tout d'abord raliser un dgrad. Il serait possible de crer ce dernier par programmation mais une solution plus efficace consiste capturer sous forme d'image n'importe quel nuancier appartenant une application de manipulation de pixels, puis d'utiliser ce dgrad comme source de couleurs.[Fig.1] Pour cela, nous importons l'image reprsentant le nuancier au sein de la librairie de Flash CS3, puis nous lui associons un nom de classe par l'intermdiaire du panneau Proprits de liaison. (Clic droit sur l'image, puis Liaison). [Fig.2] En lui associant un nom de classe, nous pouvons par la suite instancier cette image. Il est important de noter qu'en ActionScript 3, toute image est assimile un objet BitmapData. Nous pouvons donc alors trs facilement accder aux pixels composant cette image par les mthodes d'accs aux pixels comme getPixel, ou getPixel32. Dans le code suivant, nous instancions l'image bitmap reprsentant le nuancier puis nous l'affichons : // cration de l'objet BitmapData var monNuancier:Nuancier = new Nuancier(0,0);
Fig.1 Fig.2

LES INTERACTIONS
La premire tape consiste couter l'enfoncement de la souris afin de dclencher l'coute des mouvements de celle-ci : // interactivit conteneur.addEventListener( MouseEvent.MOUSE_DOWN, ecouteSouris ); stage.addEventListener ( MouseEvent.MOUSE_UP, relacheSouris ); function ecouteSouris ( evt:MouseEvent ):void { trace("souris enfonce"); // nous dmarrons l'coute de l'vnement MouseEvent. MOUSE_MOVE evt.currentTarget.addEventListener ( MouseEvent.MOUSE_MOVE, selectionneCouleur ); }
Fig.3 Fig.4

Octobre 2008 \\ PROgrammez !

59

code \\ flash
function relacheSouris ( evt:MouseEvent ):void { trace("souris relche"); // lorsque la souris est relche, quel que soit l'objet en cours de survol // nous supprimons l'coute de l'vnement MouseEvent. MOUSE_MOVE conteneur.removeEventListener ( MouseEvent.MOUSE_MOVE, selectionneCouleur ); } function selectionneCouleur ( evt:MouseEvent ):void { trace("souris en mouvement"); } En testant l'application, nous pouvons remarquer les diffrents vnements lis l'interactivit souris. Nous devons prsent ajouter la logique ncessaire la slection de la couleur au sein du nuancier. Afin d'y parvenir, nous allons utiliser une mthode d'accs aux pixels nomme getPixel. Cette mthode est dfinie par la classe BitmapData et permet d'accder aux pixels composant celle-ci. Nous crons un champ texte sur la scne nomm legende_txt puis nous modifions la fonction couteur selectionneCouleur de la manire suivante : function selectionneCouleur ( evt:MouseEvent ):void { legende_txt.text = "0x"+monNuancier.getPixel ( evt.localX, evt.localY ).toString ( 16).toUpperCase(); } } function relacheSouris ( evt:MouseEvent ):void { // lorsque la souris est relche, quel que soit l'objet en cours de survol // nous supprimons l'coute de l'vnement MouseEvent. MOUSE_MOVE conteneur.removeEventListener ( MouseEvent.MOUSE_MOVE, selectionneCouleur ); } function selectionneCouleur ( evt:MouseEvent ):void { // affichage de la couleur slectionne // la mthode getPixel32 extrait la couleur au format 32 bits // la mthode toString permet d'exprimer la couleur dans une base diffrente ici hexadcimale legende_txt.text = "0x"+monNuancier.getPixel32 ( evt.loca lX, evt.localY ).toString ( 16).toUpperCase(); } La figure 4 illustre l'application. // cration de l'objet Bitmap var affichage:Bitmap = new Bitmap ( monNuancier ); // cration du conteneur intractif var conteneur:Sprite = new Sprite(); conteneur.addChild ( affichage ); addChild ( conteneur ); // interactivit conteneur.addEventListener( MouseEvent.MOUSE_DOWN, ecoute Souris ); stage.addEventListener ( MouseEvent.MOUSE_UP, relacheSouris ); function ecouteSouris ( evt:MouseEvent ):void { // nous dmarrons l'coute de l'vnement MouseEvent.MOUSE_MOVE evt.currentTarget.addEventListener ( MouseEvent.MOUSE_MOVE, selectionneCouleur );

Note : La mthode toString permet de convertir la couleur slectionne (en base 10) en base 16.
En testant notre application, nous remarquons que la couleur slectionne ne contient que les composants vert, rouge et bleu et non l'alpha. Afin d'extraire une couleur 32 bits et non 24 bits, nous devons utiliser la mthode d'accs aux pixels getPixel32 : function selectionneCouleur ( evt:MouseEvent ):void { legende_txt.text = "0x"+monNuancier.getPixel32( evt.localX, evt.localY ).toString ( 16).toUpperCase(); } Voici le code complet de notre nuancier : // cration de l'objet BitmapData var monNuancier:Nuancier = new Nuancier(0,0);

EN ATTENDANT LA SUITE
Nous avons ainsi ralis en quelques minutes un "color picker". Libre vous d'ajouter de nouvelles fonctionnalits ce dernier. Cet article avait pour but de nous familiariser avec la classe BitmapData dans un cas d'application concret. Nous nous retrouverons trs vite pour un nouvel article orient "optimisation" l'aide de la classe BitmapData. A trs bientt !

Thibault Imbert (Adobe, consultant avant-vente cra pro web)

60

PROgrammez ! \\ Octobre 2008

FORUM

dialogue et assistance www.programmez.com

code \\ java

Programmation oriente aspect avec AspectJ

Prsent sur le CD du numro !

Cet article se destine aux dveloppeurs Java expriments. Il sera galement utile aux dveloppeurs .NET mme si nous nabordons que succinctement les outils disponibles pour cet environnement. Nous allons nous intresser au concept de programmation oriente aspect ainsi qu son implmentation avec AspectJ. Nous aborderons galement les autres outils du monde Java.
Dans le monde du dveloppement logiciel, le paradigme orient objet a fait une LANGAGE : Java arrive fracassante en DIFFICULTE SOURCE : non AVANCEE apportant des concepts qui ont amlior la productivit des dveloppeurs et la maintenabilit des applications. Aujourdhui cette approche se retrouve dans tous les secteurs du dveloppement : applications dentreprise, jeux vidos, embarqu La programmation oriente aspect (POA ou AOP en anglais), tente de rpondre une problmatique que ne permet pas de couvrir la programmation par objet : la modularisation des fonctionnalits transversales des applications. On parle beaucoup de sparation des proccupations. La POA permet dapporter une rponse pragmatique en sappuyant sur les langages de programmation existants. Il ne faut pas le voir comme une nouvelle approche mais bien comme une extension de la programmation oriente objet. La sparation des proccupations permet dviter un effritement de la conception " pur objet ". Cette dviance intervient dans la phase de ralisation lorsque le dveloppeur se retrouve au pied du mur pour implmenter une fonctionnalit transversale. Il va souvent choisir le plus simple, et pas forcment le plus correct. La POA encapsule ces fonctionnalits pour faciliter le travail du dveloppeur. Pour tre un peu plus concret voici les fonctionnalits que la POA permet de simplifier et mme damliorer : messagerie applicative (log), gestion de la scurit (authentification), persistance (transaction...), cache, etc. le code mtier galement : logique et domaine. Le nombre de lignes de code est en gnral rduit lorsquun projet a recours ce paradigme.

APPLICATION : Toute

fait ce choix. Par exemple, on peut souhaiter intercepter toutes les mthodes toString(), toutes les mthodes contenant get ou set, etc. Lintroduction est une composante particulire de la POA qui permet dajouter une mthode une classe. Bien que trs proche du mcanisme dhritage, celui-ci est bien plus souple et moins contraignant. Ainsi plusieurs introductions peuvent tre effectues sur un mme objet. Lobjectif tant toujours dimplmenter une fonctionnalit transversale plutt que denrichir le modle.

LE TISSAGE DASPECT
Le tissage daspect est une tape primordiale en programmation oriente aspect. Cest elle qui permet de crer le lien entre un greffon et son point de jonction. Cette tape peut tre ralise soit la compilation soit lexcution. La plupart des outils vous laissent choisir, cependant ce critre peut influencer votre choix doutil. AspectJ ralise cette tape la compilation par dfaut.

LES IMPLMENTATIONS : XML OU ANNOTATIONS ?


En Java, la configuration passe souvent par deux possibilits : annotations ou XML ? Ceux qui ont dj travaill avec des API de persistance comme Hibernate et les EJB ont dores et dj une certaine visibilit sur la problmatique que le choix de lune des deux implmentations entrane. Malgr tout, il est ncessaire den rappeler les diffrences. Les annotations permettent lajout de proprits sur les classes Java. Ces informations complmentaires permettent dautomatiser des traitements ou dimplmenter une configuration. Elles sont disponibles depuis Java 1.5. Elles apportent une syntaxe extrmement concise qui vient directement complter le code Java. Il en rsulte une meilleure productivit et moins derreurs de la part du dveloppeur. Les outils de dveloppement modernes comme Netbeans les supportent particulirement

LES COMPOSANTS DE LA POA


Llment le plus important de laspect est son implmentation. Le morceau de code qui la reprsente est appel greffon. Lobjectif de la POA est symbolis par le greffon : le dveloppeur se focalise sur limplmentation du code sans devoir travailler sur son intgration et les dpendances entre objets et frameworks. En Java, les outils reprsentent les greffons par des mthodes. Le point de jonction est une dclaration qui prcise quel endroit doit tre " accroch " un greffon. Il existe de nombreux types de point de jonction. On peut par exemple effectuer une jonction pour une classe, pour un nom de mthode ou encore pour une signature de mthode particulire. AspectJ utilise une expression rgulire, ce qui offre une grande souplesse dutilisation. Spring a galement

Historique
Gregor Kiczales et son quipe sont lorigine des concepts de la programmation oriente aspect. Cette quipe qui travaillait au sein de la socit Xerox a dvelopp le premier langage POA : le langage D. IBM a galement investi beaucoup dans la recherche sur ce sujet, ce qui la amen au produit HyperJ qui se proccupe essentiellement de la modularit. Cette solution est cependant moins utilisable bien que plus puissante. Aujourdhui, le projet AspectJ appartient la communaut Eclipse et IBM. Depuis, de nombreuses solutions dont JBoss AOP et Spring AOP on vu le jour.

Octobre 2008 \\ PROgrammez !

61

code \\ java
bien. Avec AspectJ, les points de jonction sont dvelopps en Java, ce qui permet de les crer plus facilement. Cependant, pour certains dveloppeurs ne matrisant pas Java il peut tre plus facile dutiliser le langage XML. Dans certains cas, XML permet doffrir une meilleure configuration pour mieux couvrir les fonctionnalits de la POA. ba.setBalance(1000); // on initialise le compte 1000_ } }

PREMIER ASPECT
Nous allons crer un aspect dont le rle est de tracer les modifications du compte client. Les appels de tous les modificateurs seront affichs dans la console. import java.util.logging.Logger; import java.util.logging.Level; public aspect BankAspect { pointcut changeBalance() : call (public * BankAccount.set*(..)); before() : changeBalance() { Logger.getLogger("Bank").log(Level.INFO, "Modification du compte du client " + ((BankAccount)thisJoinPoint.getTarget()).getOwner()); } } Le plug-in Eclipse compile automatiquement le code. Vous pouvez donc excuter lapplication, les aspects sont dores et dj tisss. La vue Cross Reference permet de visualiser les mthodes qui correspondent votre point de jonction. Cela peut tre droutant dans un premier temps, mais lexcution, on constate que notre systme de logging est effectivement bien en place : 2 mai 2008 16:34:36 $1$bc65f0d INFO: Modification du 2 mai 2008 16:34:36 $1$bc65f0d INFO: Modification du BankAspectLog ajc$before$BankAspectLog compte du client null BankAspectLog ajc$before$BankAspectLog compte du client Dupont

LOUTIL ASPECTJ
Afin de mettre en pratique lapproche POA, nous allons crer une petite application de gestion de comptes en banque. Bien quun classique dans le genre, son intrt reste dactualit. Cela permettra galement ceux qui ont vu et revu le sujet de faire le comparatif avec les solutions quils avaient mis en uvre. Notre environnement de dveloppement sera Eclipse. Je vous recommande galement linstallation du plug-in AspectJ qui va nous faciliter grandement la tche. Nous crons un projet AspectJ. Nous pouvons prsent crer notre objet mtier : le compte en banque. La classe contient deux attributs : owner et balance. Le premier dfinit le propritaire du compte par une chane de caractres et le second dcrit le solde du compte en banque. Lobjet a t volontairement simplifi afin de nous focaliser rapidement sur la programmation des aspects qui vont scuriser notre application et lui apporter des fonctionnalits transversales. public class BankAccount { private String owner; private int balance; public BankAccount() { } public String getOwner() { return owner; } public void setOwner(String owner) { this.owner = owner; } public int getBalance() { return balance; } public void setBalance(int balance) { this.balance = balance; } } Voici la classe de lancement qui va se contenter pour le moment de crer un compte et dinitialiser celui-ci. public class Main { public static void main(String[] args) { BankAccount ba = new BankAccount(); ba.setOwner("Dupont"); // Le propritaire du compte est Monsieur Dupont

INJECTION DEXCEPTIONS
Nous allons maintenant ajouter une couche de scurit. Nous allons vrifier que le compte en banque est suffisamment approvisionn. On commence par crer notre exception qui sera leve en cas dopration refuse. public class OperationNotAllowedException extends Exception { } Puis nous ajoutons le greffon et le point de jonction qui correspond au modificateur setBalance : pointcut changeBalance() : Account.setBalance(Integer) Exception); execution (public void Bank throws OperationNotAllowed

before() throws OperationNotAllowedException : changeBalance() { Integer balance = ((Integer)thisJoinPoint.getArgs()[0]); if(balance.intValue() < 0) throw new OperationNotAllowedException(); }

62

PROgrammez ! \\ Octobre 2008

code \\ java
On noubliera pas de modifier la dfinition de la mthode setBalance pour prendre en compte la leve de lexception : public void setBalance(Integer balance) throws OperationNot AllowedException { this.balance = balance; } On ajoutera galement les try/catch sur notre classe lanceur : // On essaye un dcouvert try { ba.setBalance(new Integer(-250)); } catch (OperationNotAllowedException e) { e.printStackTrace(); } Lexcution de lapplication produira le rsultat suivant : 2 mai 2008 17:11:54 BankAspect ajc$before$BankAspect$1$59039054 INFO: Modification du compte du client : Dupont OperationNotAllowedException at BankAspect.ajc$before$BankAspect$2$bc65f0d(BankAspect.aj:26) at BankAccount.setBalance(BankAccount.java:32) at Main.main(Main.java:25) large. AspectJ limplmente, mais ce nest pas le cas de tous les outils. Lexemple suivant est indpendant de notre application bancaire : import java.io.File; public aspect FileIntroduction { declare parents: UneClasse implements FileInside; private File UneClasse.file; public Date UneClasse.getDate(){ return file; } public void UneClasse.setDate(Date f){ file = f; } after(): initialization(UneClasse.new(..)){ UneClasse obj = (UneClasse)thisJoinPoint.getTarget(); obj.file = new File(); } } On voit que cet aspect vient ajouter un fichier ainsi que son accesseur et son modificateur la classe UneClasse.

HANDLER
La POA permet de positionner des handlers tout endroit du code. Ainsi, il est possible de surveiller les entres sorties sur la console et il est galement possible de rcuprer les exceptions. Ceci est trs pratique pour centraliser la gestion des exceptions, ainsi on pourrait amliorer notre application bancaire en rcuprant les exceptions grce au point de jonction suivant : pointcut throwsNotAllowedException(): call(* *(..) throws *..*NotAllowedException*); Le greffon throwsNotAllowedException viendra traiter lexception et effectuer laction approprie.

HRITAGE ET COMPOSITION DASPECTS


De la mme manire que lon peut tendre un objet par le mcanisme dhritage, on peut mettre en uvre lhritage entre aspects. Etant donn quAspectJ repose sur le langage Java, il nest pas possible de raliser un hritage multiple. Le mot clef utilis est le mme que pour les classes. Laspect suivant est abstrait et ne peut donc pas tre utilis :

INTRODUCTION
Aborde en dbut darticle, lintroduction est un mcanisme qui permet linsertion dune mthode au sein dun ou plusieurs objets. Une introduction peut galement ajouter des attributs, des constructeurs ou encore des interfaces ou une classe parente. Les introductions sont donc particulirement complexes matriser tant leur spectre dutilisation est abstract aspect AbsLog { abstract pointcut toBeTraced(); Object around(): toBeTraced() { ... } }

JBoss AOP

JBoss AOP est une solution mise en uvre par la communaut JBoss, bien connue pour son serveur dapplication du mme nom. Le fonctionnement est relativement proche dAspectJ et on y retrouve lutilisation dannotations. Il existe beaucoup de frameworks AOP mais JBoss AOP est lun des seuls fournir une bibliothque daspects prts tre utiliss. Ceux-ci proviennent directement du wiki de la communaut et sont intgrs par les dveloppeurs responsables du projet. On retrouve les grands classiques : gestion de la scurit, des transactions, du cache, des communications asynchrones etc. Il est galement possible de sappuyer sur un document XML.

.NET et POA

Java et .NET sont souvent compars. Ici, nous nchapperons pas la rgle : .NET dispose galement doutils pour mettre en uvre la POA. Il semble que parmi la multitude de solutions, AspectDNG soit celle qui est la plus rpandue et la plus adapte aux applications dentreprise. Linspiration des dveloppeurs de lAPI provient directement du monde Java avec la reprise de concepts quavait instaurs AspectJ. Son objectif est cependant dtre simple dutilisation. Il permet le tissage daspects sur les versions 1.1 et 2.0 du framework .NET. NAspect est une autre solution.

Octobre 2008 \\ PROgrammez !

63

code \\ java
Laspect suivant tend laspect prcdent. On peut ajouter des fonctionnalits ou en redfinir sans limitation : aspect MyLog extends AbsLog { pointcut toBeTraced(): Command.new(..); } Lorsque plusieurs aspects sappliquent un mme objet, lordre des oprations nest pas garanti. AspectJ implmente donc la composition daspect pour pallier ce problme. Ainsi, on va dfinir un aspect tiers dont lobjectif sera dtablir lordre dutilisation des aspects. Seul celui-ci devra tre utilis pour le tissage daspects. Ici, on souhaite que lauthentification intervienne avant le logging. aspect OrdreGlobal { declare precedence: Authentication, Log; } aspect Authentication { ... } aspect Log { ... } public aspect SongCountObserver extends ObserverProtocol { declare parents : Song extends Subject; declare parents : SongPlayCounter implements Observer; pointcut titleUse(Song song) : this(song) && execution(public void Song.play()); public pointcut subjectChange(Subject subject) : titleUse(Song) && this(subject); public void updateObserver(Subject s, Observer o) { SongPlayCounter counter = (SongPlayCounter) o; counter.incrementPlays((Song) s); } private SongPlayCounter defaultCounter = new SongPlayCounter(); public void setCache(Map cache) { this.cache = cache; } abstract pointcut cachedOperation(Object key); Object around(Object key) : cachedOperation(key) { Object ret; if (cache.containsKey(key)) { ret = cache.get(key); } else { ret = proceed(key); cache.put(key,ret); } return ret; } } Cet aspect permet dillustrer limplmentation dun mcanisme de cache. Ici, laspect est abstrait tant donn quil sagit dun aspect gnrique. On ne sait pas quelle donne doit tre mise en cache. Il sera donc ncessaire dtendre cette classe pour tre mme de lutiliser. Malgr tout, lalgorithme dinsertion et de rcupration de donnes est dj implment. pointcut songCreation(Subject s) : execution(public Song.new(..)) && this(s); after(Subject s) returning : songCreation(s){ addObserver(s, defaultCounter); } }

Spring AOP
Spring permet la mise en uvre de la programmation oriente aspect grce au module Spring AOP Celui-ci, bien que moins puis. sant quAspectJ, couvre la majorit des cas dutilisation avec un certain pragmatisme. Il permet de tirer pleinement avantage du conteneur de Spring. Spring AOP effectue le tissage daspect la vole, lors de lexcution de lapplication et peut se baser soit sur des schmas XML soit sur des annotations comme le fait AspectJ. Spring utilise en interne la POA pour la gestion de la scurit, des transactions, de JMX et des accs distants.

POA ET DESIGN PATTERN


Lapproche POA offre de nouveaux horizons aux dveloppeurs. utilisation peut dsormais servir amliorer limplmentation design patterns. Bien quils nen tirent pas tous bnfice, dans tains cas lutilisation de la POA se rvle redoutable. Le cas du tern Observer est particulirement vrai. Son des cerpat-

GESTION DE CACHE, UNE BONNE PRATIQUE


De la mme manire quil existe des bonnes pratiques de conception que lon connat sous le nom de design pattern, on peut reconnatre quelques cas pour lesquels la POA se rvle particulirement efficace. JBoss AOP en implmente un certain nombre, nous allons donc regarder de plus prs limplmentation de quelques unes de ces utilisations. Implmentation du cache : public abstract aspect SimpleCaching { private Map cache;

CONCLUSION
Une fois le concept de programmation oriente aspect assimil, lutilisation dAspectJ reste relativement simple et on parvient rapidement le matriser. Il existe dautres outils. Pour les applications web, Spring peut tre une solution alternative plus simple et plus pragmatique. Rappelons simplement que la POA permet daugmenter la qualit du code et daugmenter la productivit. Elle permet galement de rduire le besoin domniscience et apporte un dcouplage entre mtier et technologies. Loc Guillois

64

PROgrammez ! \\ Octobre 2008

code \\ java

JavaSpaces et le parallel processing


On dit parfois que c'est dans les vieux pots qu'on fait les meilleures soupes. JavaSpaces n'est pas une technologie rcente mais a t rutilise pour implmenter des notions plus modernes comme le cache distribu, le clustering et le parallel processing. Elle reste une technologie intressante. La preuve.
JavaSpaces est inclus dans Jini, sor ti par Sun en 1999. Jini est bas sur LANGAGE : Java l'ide que les appareils lecDIFFICULTE SOURCE : non troniques qui nous entouMOYENNE rent (imprimantes, portables, GSM, ...) proposent un ou plusieurs services qu'ils publient afin d'tre utiliss via le rseau. Il s'agit en quelque sorte d'une SOA mais dont les services sont rendus par des quipements divers et spcifiques. Les similitudes avec RMI sont galement nombreuses. Jini a cependant rencontr un succs modr et la responsabilit de ce projet a t transfre fin 2006 Apache sous le nom River (encore en incubation). Mais Jini a fini par trouver son chemin assez rcemment, notamment grce Javaspaces qui a permis d'implmenter des notions beaucoup plus la mode comme le Data Grid ou encore le grid computing (ou grille informatique). Nous allons dans cet article dcouvrir l'API JavaSpaces, puis voir une application de la technologie dans le domaine du parallel processing.

APPLICATION : Grid

Class [] classes = new Class[]{net.jini.space.JavaSpace.class}; Name sn = new Name(spaceName); ServiceTemplate tmpl = new ServiceTemplate(null,classes,new Entry[]{sn}); // Locate the JavaSpaces service and create a JavaSpace proxy attached to it. LookupLocator locator = new LookupLocator("jini://localhost"); ServiceRegistrar sr = locator.getRegistrar(); JavaSpace space = (JavaSpace)sr.lookup(tmpl); Le plus dur est fait. Notez que pour faire le lookup, il est ncessaire de positionner un gestionnaire de scurit RMI, celui-ci aura besoin d'un fichier policy qu'il faudra passer en argument de la JVM via la proprit java.security.policy. Pour crire dans l'espace (!), c'est tout simple. Crons d'abord la classe que nous allons mettre dans l'espace. public class Message implements Entry { public String content; public Integer ID; public String toString(){ return "Message ID:" + ID + " ,Message content: " + content; } public Message(){} } Et maintenant crivons le message dans l'espace : Message msg = new Message(); msg.ID = 1; msg.content = "Bonjour le monde !"; space.write(msg, null, Lease.FOREVER); Le premier argument est bien sr l'objet, le second est la transaction dans laquelle l'appel de mthode doit avoir lieu (aucune ici), le dernier est le temps pendant lequel l'espace doit garder l'objet. Pass ce dlai, l'espace jette l'objet. Pour lire ou prendre un objet, c'est un peu plus particulier : il faut d'abord crer un objet du type que l'on recherche et renseigner les champs qui identifient cet objet de faon unique. Cet objet est appel un template : Message template = new Message(); template.ID=1; Message result = (Message)space.read(template, null, JavaSpace. NO_WAIT); Le premier argument de la mthode read est le template, le second est la transaction dans laquelle s'excute l'appel (ici aucune), le der-

DABORD, QUELQUES DFINITIONS


Un espace est un repository d'objets, partag et accessible par le rseau. Une application immdiate de cette dfinition est de permettre le partage d'objets, reprsentant un tat, entre deux machines spares et sans utiliser une base de donnes comme liant. L'API JavaSpaces se compose essentiellement de quatre mthodes : write : permet d'crire un objet dans un espace read : permet de lire un objet dans un espace take : permet de prendre un objet dans un espace notify : permet de demander la notification en cas d'ajout d'un objet dans un espace. [Fig.1] Les objets placs dans un espace doivent implmenter l'interface Entry qui n'est qu'un marqueur (pas de mthodes). Ils doivent en outre avoir un constructeur vide et ses champs doivent tre non primitifs, publics, non statiques, non transient et non finaux. La particularit est que les objets placs ne sont pas ncessairement des "value objects" et peuvent possder des mthodes. Ceci est utile, notamment pour l'excution de calculs rpartis (master-worker pattern).

EN PRATIQUE
Pour nos exemples, nous allons utiliser GigaSpaces, une implmentation Open Source. Pour cela, rendez-vous sur le site www.gigaspaces.com et tlchargez la version communautaire. La faon standard d'obtenir une rfrence sur un espace est de faire un lookup. if ( System.getSecurityManager() == null ) System.setSecurityManager(new RMISecurityManager()); //Create a template to lookup the JavaSpaces service.

Octobre 2008 \\ PROgrammez !

65

code \\ java
nier est le temps pendant lequel l'appel doit attendre si l'objet n'est pas trouv immdiatement. Pour prendre un objet, c'est la mme chose : Message template = new Message(); template.ID=1; Message result = (Message)space.take(template, null, JavaSpace.NO_WAIT); Comme vous avez pu le voir, JavaSpaces supporte les transactions, indispensable dans des environnements de production avec de nombreux accs concurrents. Le gestionnaire de transactions (Mahalo), qui tourne indpendamment de l'espace et des applications, est distribu, permettant d'avoir des transactions qui "spannent" plusieurs espaces et applications. Nous allons donc crer deux Processing Units ou PU (l'une crivant, l'autre lisant). Une PU est juste un rpertoire se trouvant dans le rpertoire Deploy de GigaSpaces et contenant les sources, un rpertoire META-INF contenant un descripteur XML Spring, un rpertoire 'lib' contenant les dpendances de votre application et un rpertoire 'shared-lib' contenant les dpendances partages par d'autres PU (ici notre classe Number). Notre premire PU est juste un InitializingBean Spring qui, aprs dmarrage, lance une tche planifie crivant dans l'espace : public void run() { try { Double val = Math.floor(Math.random()*1000); gigaSpace.write(new javaspaces.Number(val.intValue())); } catch (Exception e) { e.printStackTrace(); } } Notez que nous utilisons ici un objet GigaSpace plutt que directement JavaSpace, cet objet tant directement inject dans notre bean. Le fichier Spring est tout ce qu'il y a de plus simple (les dclarations des namespaces ont t omises) : <beans> <os-core:giga-space-context/> <os-core:space id="space" url="jini://*/*/SpacePP" /> <os-core:giga-space id="gigaSpace" space="space"/> <bean id="primeApp" class="javaspaces.PrimeApplication" /> </beans> Ce fichier dclare l'utilisation d'un espace nomm SpacePP L'objet . JavaSpace rcupr est envelopp dans un objet GigaSpace qui est inject dans notre application grce l'annotation @GigaSpaceContext(name = "gigaSpace") Ct consommateur, les choses sont identiques. Une classe utilise les capacits de notification de l'espace pour tre mise au courant de l'ajout d'un nouvel objet Number dans l'espace : public class DataProcessor{ @GigaSpaceLateContext private GigaSpace gigaSpace; @SpaceDataEvent public void processData(javaspaces.Number data) { Long div = checkPrime(data.value, 1, data.value); }

JAVASPACES POUR LE CACHE DISTRIBU


Sans faire plus d'effort, on voit rapidement un des intrts immdiat de JavaSpaces : raliser un cache distribu. D'ailleurs Gigaspaces propose une intgration transparente de ce cache avec Hibernate, permettant par l d'acclrer considrablement une application. [Fig.2]

JAVASPACES POUR LE PARALLEL PROCESSING


Mais nous allons plutt nous intresser aux capacits de parallel processing offertes. En effet, comme dit tout l'heure, les objets d'un espace peuvent possder des mthodes. Ceci permet par exemple une application de dposer des tches raliser dans un espace et de laisser d'autres processus s'excutant dans d'autres JVM de rserver ces tches et de les excuter pour par la suite placer les rsultats dans un autre espace. Nous allons dmontrer ceci en ralisant une application qui met des demandes de vrification qu'un nombre est premier ou non. [Fig.3] Dans une premire application, nous allons crire dans un espace des objets Number contenant juste le nombre analyser. L'objet Number est des plus simples : public class Number implements Entry { public Integer value; public Number(){} public Number(Integer value){ this.value = value; } } Dans une autre application, nous allons prendre les objets de l'espace et vrifier la divisibilit du nombre contenu dans l'objet. Afin de montrer que l'application peut monter en charge nous allons utiliser le data grid fourni par GigaSpaces et reposant sur JavaSpaces.
Fig.1

Fig.2

Fig.3

66

PROgrammez ! \\ Octobre 2008

code \\ java
public Long checkPrime(long val, long minRage, long maxRange) { for (long divisor=minRage; divisor<=maxRange && Thread. currentThread().isInterrupted()==false; divisor++) { if (divisor != 1 && divisor != val && val % divisor == 0) { return divisor; } } return null; } } L encore, plutt que de passer par les API JavaSpaces et ses listeners, GigaSpaces nous mche le travail en appelant une mthode de notre bean. Ceci est dclar dans le fichier Spring : <beans> <os-core:giga-space-context/> <os-core:giga-space-late-context/> <os-core:space id="space" url="jini://*/*/SpacePP" /> <os-core:local-tx-manager id="transactionManager" space="space"/> <os-core:giga-space id="gigaSpace" space="space" tx-manager ="transactionManager"/> <bean id="dataProcessor" class="DataProcessor"/> <os-events:polling-container id="dataProcessorPollingEvent Container" giga-space="gigaSpace"> <os-events:tx-support tx-manager="transactionManager"/> <os-core:template> <bean class="javaspaces.Number" /> </os-core:template> <os-events:listener> <os-events:annotation-adapter> <os-events:delegate ref="dataProcessor"/> </os-events:annotation-adapter> </os-events:listener> </os-events:polling-container> </beans> Plusieurs choses sont importantes ici. D'abord, nous dclarons l'utilisation d'un transaction manager. Ensuite, nous utilisons un polling container qui coute l'espace GigaSpace nomm SpacePP et capte transactionnellement les vnements pour un template de type Number et les envoie un delegate, en l'occurrence notre classe DataProcessor. L'utilisation de transactions permet d'viter une consommation double de certains objets.
Fig.4

Il nous faut maintenant dployer tout cela. Dans le code source, des fichiers ant sont disponibles pour faire le dploiement dans le rpertoire Deploy de GigaSpaces. Une fois cela fait, lancez gsm.bat (ou .sh) depuis le rpertoire bin de Gigaspaces. Ceci lance un manager d'espaces. Puis lancez au moins deux instances de conteneurs Gigaspaces en utilisant l'excutable gsc.bat. Les conteneurs vont s'enrler automatiquement auprs du manager. Enfin, lancez l'interface d'administration des espaces en excutant gs-ui.bat. Passez dans l'onglet Deployment de l'interface d'admin et choisissez 'Deployment > deploy application'. Slectionnez 'Enterprise Data Grid'. Dans le champ 'DataGrid Name' indiquez SpacePP slection, nez 'None' pour le champ 'cluster schema' et cliquez sur Deploy. Ceci va dmarrer un espace non rpliqu nomm SpacePP dans l'un des conteneurs. A prsent, dployez la PU crivant dans l'espace (javaspaces-demo-app) en choisissant Processing Unit dans la bote de dialogue de dploiement, puis en slectionnant la PU dans la liste droulante et en cliquant sur Deploy. Enfin, dployez la PU de consommation des demandes (javaspaces-demo-primer) de la mme faon. La console d'administration devrait maintenant ressembler ceci : [Fig.4] Dans un conteneur est dploy l'espace et la PU de traitement des nombres, et dans l'autre conteneur se trouve la PU mettant les demandes de calcul. Si tout fonctionne correctement, vous devriez voir dans la console de l'un des conteneurs le rsultat des calculs. A prsent, nous allons augmenter notre capacit de calcul : toujours dans l'onglet Deployment de la console d'administration, slectionnez dans l'arbre du 'Service Grid Network' la PU de consommation et traitement et cliquez sur le bouton 'increase' autant de fois que vous voulez. Il ne vous reste plus qu' dmarrer suffisamment d'instances de conteneurs (via le script gsc.bat) pour permettre le dploiement de ces instances de PU. A chaque dmarrage d'un nouveau conteneur, celui-ci rejoint le manager qui lui assigne une PU et la charge se rpartit naturellement entre les conteneurs. Vous pouvez prsent vous amuser couper l'un ou l'autre conteneur ou encore relocaliser les PU. Vous pouvez galement couper toutes les PU de traitement des nombres et aller dans l'onglet Spaces de la console, naviguer dans l'espace 'SpacePP > classes' et voir le nombre d'objets Number augmenter. Vous pouvez mme cliquer sur le nom de la classe et cliquer sur le bouton Query afin de voir toutes les instances actuellement dans l'espace.

ALLER PLUS LOIN


Nous avons vu comme il est simple de dployer une application de calcul rparti. Bien sr le rsultat des calculs ne fait qu'arriver dans la console mais il est tout fait possible d'crire les rsultats dans le mme espace, voire dans un autre espace. De plus, nous n'avons pas couvert ici les possibilits de fail-over : nous n'avons pas rpliqu le contenu de l'espace ni mme dupliqu le manager de conteneurs. Tout ceci est cependant possible et je vous laisse explorer.

Quelques rfrences http://java.sun.com/developer/Books/JavaSpaces/introduction.html http://www.jini.org http://ww%w.dancres.org/blitz http://incubator.apache.org/river/ Fabrice Dewasmes Blog : http://fdewasmes.free.fr Fabrice.dewasmes@gmail.com

Octobre 2008 \\ PROgrammez !

67

code \\ .net
1re partie

Piloter votre Windows Media Center avec un iPhone


Le dveloppement dapplications pour Windows Media Center (WMC) est facilit avec larrive du SDK 5.3 et ce, mme si lon sent un modle objet bien lourd derrire. Il nen reste pas moins quavec les technologies .NET il devient plus facile dexposer les fonctionnalits de Windows Media Center sous la forme de services WCF (Windows Communication Foundation).
Plus lon avance dans le temps, plus lon se rapproche de la maison numLANGAGE : .Net rique rve il y a quelques DIFFICULTE SOURCE : oui annes (pilotage des volets MOYENNE roulants, rglage du chauffage / Climatisation, ambiances lumineuses et sonores, Media Center remplaant judicieusement un magntoscope, une chane hifi, tuners hybrides, etc.). Mais quen est-il rellement pour le dveloppeur souhaitant dvelopper une application en tche de fond hberge dans WMC ? Cest ce que je me propose de vous exposer dans cet article. Vous avez dit REST ? Une architecture REST est simplement lutilisation du modle de programmation Web adapt au monde des services rpartis. Une architecture REST vient juste dcrire les lments architecturaux dun systme rparti. En voici les concepts fondamentaux : Utilisation des URIs pour lidentification des ressources HTTP et HTTPS Le ContentType et le type MIME sont utiliss pour connatre le type des ressources rcupres (image, xml, vido, etc.) Utilisation des verbes HTTP : PUT (Create), GET (Read), POST (Update), DELETE (Delete) Passage de paramtres via la syntaxe dune URL Pas dencodage SOAP Rcupration des donnes structures au format XML ou JSON La simplicit du modle, son poids plus faible en volume de donnes et la facilit de requtage en font une technologie qui malgr quelques limites (protocole, peu doutils pour linstant, etc.) se rvle trs intressante pour les nouvelles applications de type RIA notamment. Dans sa version 3.5, le Framework .NET apporte toutes les volutions ncessaires pour une implmentation transparente des architectures REST via lAssembly " System.ServiceModel.Web ". Vous avez dit Windows Media Center SDK ? WMC est en fait un conteneur dans lequel nous pouvons dvelopper des add-in avec ou sans IHM. Afin dimplmenter correctement les services, les rfrences suivantes peuvent tre ajoutes ( partir du rpertoire " c:\Windows\ehome ") : ehepg : gestion du guide des programmes ehiProxy : gestion des chanes TV notamment ehRecObj : classe LineUp sans laquelle le remplissage du guide serait impossible
Fig.3

APPLICATION : iPhone

Note : cet article suppose quelques connaissances de base sur WCF ainsi qu'une bonne connaissance du langage C#. L'exemple a t dvelopp avec VSTS 2008, le framework 3.5, WMC SDK 5.3 sur Windows Vista Ultimate US. LiPhone utilis possdait le Firmware 1.1.4.

OBJECTIF FONCTIONNEL
Lobjectif fonctionnel de cet article est de dvelopper les fonctionnalits dune tlcommande pour WMC et de les utiliser partir dun iPhone. Lexploitation de ces services via liPhone sera ralis en utilisant les possibilits de requtage offertes par Safari (et par tous les navigateurs du march), savoir lutilisation de lAPI " XmlHttpRequest " attaquant des services REST (" Representational State Transfer ").

UN PEU DE THORIE
Les points cls techniques autour de cet exemple sont : Dveloppement de services REST avec WCF Utilisation du SDK WMC 5.3 Dveloppement dun client lger en Javascript avec compatibilit Safari Mobile, Safari Windows Fig.2 et Internet Explorer
Fig.1

68

PROgrammez ! \\ Octobre 2008

code \\ .net
Microsoft.MediaCenter : classe " AddInHost ", la cl de vote du modle objet de WMC Microsoft.MediaCenter.UI : classe de base " ModelItem " dont hrite la classe " Application " Au dmarrage de ladd-in, la classe suivante est appele par WMC : [Fig.1] Linterface " IAddInModule " permet de sabonner aux appels de WMC au dmarrage de ladd-in (initialisation des variables) et son arrt (enregistrement des informations relatives ltat et libration des ressources mmoire). Limplmentation de linterface " IAddInEntryPoint " est obligatoire pour le dmarrage de lapplication via lappel de la mthode " Launch ". Le paramtre envoy par WMC la mthode " Launch " permet daccder aux services fournis dans ladd-in ainsi dvelopp. via un type numr (dcor " DataContract " et " EnumMember "). Les contrats de service Les contrats de services viennent dcrire les contrats dans le sens " Interface " du terme. Ils seront implments par la couche service et seront rendus accessibles via WCF : Le contrat de gestion de WMC : [Fig.4] Le contrat permettant de rcuprer via un service WCF la page HTML contenant linterface de la tlcommande. [Fig.5] Le Framework .NET 3.5 ajoute de nouveaux attributs positionner, rendant accessibles les services via une architecture de type REST : [Fig.6] Jai choisi dutiliser lattribut " WebInvoke " en lieu et place de " WebGet " afin de raliser les appels en HTTP/POST plutt quen HTTP/GET. En effet, les requtes HTTP/GET sont mises en cache du ct du navigateur ( requte identique). Certains contournent ce problme en greffant lURL de base un n alatoire, mais je naime pas particulirement cette manire de faire. Vous noterez aussi sur le service de rcupration du guide (" GetGuide ") : jai dfini deux surcharges de la mthode " GetGuide ", ce qui nest pas possible dun point de vue contrat de service, do lattribut " OperationContract " paramtr avec un renommage (" GetGuideByDate ") du service visible des clients Le format de la rponse est paramtr au niveau de lattribut " WebInvoke " en XML (JSON possible)

CRATION DES PROJETS


Comme toute solution oriente WCF voici les cinq tapes habituelles : 1. Cration des contrats de donnes 2. Cration des contrats de service 3. Implmentation des services 4. Cration du processus porteur 5. Dveloppement du client [Fig.2] Il ny a que quatre projets dans ma solution. En effet, mon objectif initial tait de faire hberger la page HTML directement sur lIPhone. Nativement et en ltat actuel des choses, lIPhone nest pas vu comme une unit externe sur laquelle on peut copier directement des fichiers. Il existe des solutions logicielles pour cela, mais tel ntait pas lobjectif de larticle. Plusieurs autres solutions simples soffraient donc moi : Envoyer la page HTML en copie dun mail Crer un site Web ddi cela et grer les appels Cross Domain Faire hberger ma page HTML directement dans le processus porteur WMC et grer un service WCF charg dy accder. Cest la solution retenue.

LIMPLMENTATION
Le mtier associ aux services est globalement divis en : Gestion du son Gestion du guide Gestion de la mise en veille Gestion des autres touches Gestion de lIHM Toute cette gestion est implmente dans le schma de classe suivant : [Fig.7]. La classe qui supporte limplmentation des contrats de services dfinis est " MediaCenterManagement ". La classe " Application " sert faire le lien entre les informations fournies par ladd-in MediaCenter (donc le modle objet de WMC) et la couche Services. Les structures " KEYBDINPUT ", " INPUT " et la classe " SendInputCommand " servent grer les autres commandes lies la navigation dans les menus. Enfin, la classe " ChannelEqualityComparer " servira dans les requtages Linq To Object afin de dterminer une manire de comparer les chanes TV (" Channel "). Gestion du son La classe " Application " fournit une proprit " MediaCenterEnvironment.AudioMixer " afin de grer tous les services en relation avec le
Fig.6 Fig.7

LES CONTRATS
Les contrats de donnes Pour lexemple, jai simplement reproduit un sous-ensemble du modle objet fourni par WMC sur la notion de Guide. Le Guide reprsente la liste des programmes TV associs aux chanes. Il y a deux types de contrats : Le contrat concernant le guide des programmes TV [Fig.3] Dun point de vue technique, les contrats de donnes sont rendus srialisables dans le sens WCF du terme par dcoration avec les attributs " DataContract " et " DataMember " issus de lAssembly " System.RuntimeSerialization ". Le contrat de donnes de gestion de la tlcommande permet de dcrire la liste des commandes du contrle distance acceptes
Fig.4

Fig.5

Octobre NOUVEAU les TUTORIELS sur www.programmez.com 2008 \\ PROgrammez ! 69

code \\ .net
son (Mute, VolumeUp, VolumeDown, Volume). Par exemple : public void VolumeUp() { CurrentApplication.MediaCenterEnvironment.AudioMixer.VolumeUp(); } Gestion du guide Jai cherch reprsenter le modle objet du guide des programmes de manire fidle du point de vue des classes, mais incomplte du point de vue des proprits dans le contrat de donnes : 1. Rcupration de la liste des chanes : (from chan in Guide.CurrentEPG.Channels.Distinct(new ChannelEqualityComparer()) where chan.PrimaryService != null orderby chan.Number select createChannel(chan, fromDate, toDate)).ToList(); Vous noterez lutilisation de la mthode dextension " Distinct " avec une classe " comparer " permettant de comparer les chanes. La mthode de comparaison employe est base sur le " CallSign " (nom en clair de la chane). WMC renvoie des chanes dupliques, probablement sur des frquences diffrentes cause des deux metteurs proches de chez moi, do la ncessit dun filtrage. public bool Equals(ehiProxy.Channel x, ehiProxy.Channel y) { if (x.PrimaryService == null || y.PrimaryService == null) return (x.PrimaryService == y.PrimaryService); return (x.PrimaryService.CallSign == y.PrimaryService. CallSign); } La mthode " createChannel " tant spcialise dans la cration des instances de type " Channel " de mon contrat de donnes 2. Cration de la chane private DataContracts.Channel createChannel (ehiProxy.Channel channel, DateTime fromDate, DateTime toDate) { return new DataContracts.Channel() { Id = channel.Id, Number = channel.Number, IsActive = channel.IsActive, PrimaryService = createService(channel.Primary Service), Scheduling = ( from s in channel.ShowsAt(fromDate.ToUniversalTime(), toDate.ToUniversalTime()) where s.Program != null select createScheduleEntry(s) ).ToList() }; } Les points intressants: Utilisation des initialiseurs par dfaut System.Reflection.Assembly assemb = System.Reflection.Assembly.Load("ehepg"); String s = assemb.GetType("Microsoft.Ehome.Epg.Helper.EpgFileHelper", false,true).GetProperty("CurrentEpgFile").GetValue (null, null); La valeur ainsi rcupre pour ma machine est : " C:\ProgramData\Microsoft\eHome\EPG\f1b2556dee484c7f8a3ff50ebd0acfc2.sdf " Il sagit dune base " SQLLite " dont les moyens daccs ont t dvelopps dans lassembly " ehepg.dll " (" MicroFig.8 soft.Ehome.Epg.Database ") spcifiquement par Microsoft en implmentant les interfaces ADO.NET qui vont bien : [Fig.8] Nous continuerons limplmentation et aborderons le hosting WCF le mois prochain ! En attendant amusez-vous avec iPhone et WCF et noubliez pas de regarder et tester le code source ! Frdric Colin - Bewise - frederic.colin@bewise.fr Cration de linstance du service via une mthode spcialise Le requtage des lments dun grille via lutilisation de la mthode " ShowAt " Cration de linstance dun lment de la grille via une mthode spcialise 3. Pour la cration des services, des grilles de programmes et des programmes, il ny a rien de particulier signaler Pour tout cela, il faut penser initialiser correctement le modle objet avant de pouvoir requter : Utilisation de la classe " LineUp " afin dinitialiser la liste des services et de la rcuprer Microsoft.MediaCenter.TV.Epg.Lineup lu = new Microsoft.MediaCenter.TV.Epg.Lineup(); _programs = lu.GetServiceIds(); Paramtrage du rpertoire de travail et initialisation de la grille des programmes DirectoryInfo info = new DirectoryInfo( Environment.GetFolderPath(Environment.SpecialFolder.System)); if (Directory.Exists(info.Parent.FullName + @"\ehome")) { Environment.CurrentDirectory = info.Parent.FullName + @"\ehome"; Microsoft.Ehome.Epg.Guide.Initialize(); Etc. } Si vous vous demandez o sont stockes les informations du Guide une fois tlcharges, vous pouvez rflecter lAssembly " ehepg.dll ". En poursuivant ltude minutieuse du code, il devrait tre possible de " calculer " ce chemin daccs. Toutefois, pour des raisons de facilit, jai fait un peu de " reflection " pour lafficher :

70

PROgrammez ! \\ Octobre 2008

code \\ c

OpenMPI, une librairie pour la programmation parallle distribue


MPI est une norme dfinissant une bibliothque de fonctions pour la programmation parallle. Elle permet de travailler avec des ordinateurs distants ou multi-coeurs via un mcanisme de passage de messages. Nous dcouvrons tout cela travers Open MPI, une implmentation Open Source pour systme Unix.
APPLICATION : Paralllisme

Le standard MPI ne date pas d'hier. Des LANGAGE : C experts en programmaDIFFICULTE SOURCE : oui tion parallle ont traAVANCEE vaill sur sa premire mouture MPI-1 en 1992. En 1995 des conclusions ont t tires de son utilisation et le standard a t tendu sous le nom de MPI-2 en 2003. On appelle application parallle distribue une application dont le code s'excute simultanment sur plusieurs ordinateurs. En 1992 cette approche acrobatique n'intressait essentiellement que les milieux scientifiques qui palliaient ainsi la faible puissance des machines en rpartissant les calculs effectuer sur des groupes de machines, ou clusters. Aujourd'hui, la programmation parallle trouve un intrt pour le grand public. Rien de plus facile que de s'installer un petit rseau de machines, et, surtout, toutes les machines modernes sont quipes de microprocesseurs multi-coeurs avec lesquels les implmentations de MPI peuvent pleinement s'exprimer. MPI est conu pour les langages C, C++ et Fortran. Nous travaillerons avec C. D'autre part, MPI est une librairie trs complexe comptant des centaines de fonctions. Dans cet article nous nous limiterons aux fonctions MPI1, principalement utilises en programmation MPI. Une fois que les principes de base seront assimils, le lecteur intress pourra facilement s'attaquer au moins populaire MPI-2

dont on dispose. Un communicateur est tout simplement un ensemble de processus collaborant entre eux. On a une communication point point quand un processus envoie un message un autre, que ce dernier le reoit, le traite puis retourne la rponse au premier tandis que celui-ci attend ladite rponse. On a une communication collective lorsqu'un groupe de processus est impliqu.

2 INSTALLER OPEN MPI


Il suffit de tlcharger les sources http://www.open-mpi.org/ et d'excuter la clbre combinaison de commandes: ./configure make make install # avec les droits de root Cependant, il peut tre trs intressant de taper configure --help afin d'obtenir la liste de toutes les options de compilation possibles, pour une construction aux petits oignons. Votre serviteur utilise la distribution Gentoo Linux, dont la particularit est de compiler et installer les paquetages la vole. Au moment de l'criture de cet article, le paquetage openmpi tait masqu. Le dmasquer ne pose priori aucun problme. Pour dmasquer le paquetage openmpi il faut ajouter une ligne au fichier /etc/portage/package.keywords: =sys-cluster/openmpi-1.2.6 ~x86 Ensuite dans le cas de openmpi, il est bon de surcharger la variable d'environnement USE pour compiler et installer la librairie. Voici la ligne de commande utilise par votre serviteur: USE="-threads smp romio -fortran -nocxx" emerge -v openmpi Cette ligne de commande construit openmpi pour les langages C et C++, mais pas pour Fortran. On note l'option -threads, car l'utilisation du multithreading n'a pas de sens avec MPI comme nous l'avons dit plus haut.

1 LES CONCEPTS
MPI s'articule autour de quatre concepts: les processus, les communicateurs (communicator dans la documentation en anglais), la communication point point et la communication collective. Un processus est une application qui s'excute en tant chapeaute par le runtime MPI. Du point de vue du systme d'exploitation hte, il s'agit d'un processus normal. Surtout cela ne devrait jamais tre un thread. Lancer quatre processus MPI sur un microprocesseur quatre coeurs a du sens. Dans le cas de deux ordinateurs monocoeurs en rseau, lancer un processus sur chacun a du sens. En revanche, lancer, par exemple, cinq processus sur un microprocesseur 4 coeurs n'a pas de sens. Dans un tel cas, le runtime lancerait un thread supplmentaire. Non seulement un tel thread ne fera rien gagner en terme de performances, mais le mcanisme de passage de messages reprsentera simplement un cot supplmentaire. Donc MPI doit s'utiliser intelligemment, en fonction du matriel

3 POUR SE FAIRE LA MAIN


Voici notre premier code MPI, rudimentaire mais dj instructif en ce qui concerne les rouages de MPI. /* basic.c */

Octobre 2008 \\ PROgrammez !

71

code \\ c
#include <mpi.h> #include <stdio.h> int main( int argc, char* argv[]) { int rang, p; /* Initialisation de MPI. Aucune fonction MPI ne peut tre appele avant l'appel a cette fonction */ MPI_Init(&argc,&argv); /* Obtention du nombre de processus qui excutent ce programme */ MPI_Comm_size(MPI_COMM_WORLD, &p); printf("Nombre processus: %d\n", p); /* Quel est mon numro de processus ? */ MPI_Comm_rank(MPI_COMM_WORLD,&rang); printf("Mon rang: %d\n", rang); /* Aprs l'appel a cette fonction, plus aucun appel la biliothque MPI n'est possible */ MPI_Finalize(); return 0; } On remarque que tout code MPI doit tre encadr par les appels aux API MPI_Init et MPI_Finalize. Entre ces appels nous obtenons la taille du communicateur par dfaut, autrement dit le nombre de processus instancis, puis le rang, autrement dit le numro du processus instanci. Du code MPI ne se compile pas comme du code C, on doit recourir au compilateur ddi. mpicc -Wall basic.c -o basic Autant dire que gcc est remplac par mpicc :) Une application MPI ne se lance pas non plus comme une application normale, on recourt ici un lanceur mpirun -np 4 basic Lancera 4 fois le programme basic.et produira l'affichage : Nombre processus: Mon rang: 0 Nombre processus: Mon rang: 3 Nombre processus: Mon rang: 2 Nombre processus: Mon rang: 1 4 4 4 4

4 HELLOWORLD POINT POINT


Tradition oblige, nous crivons un programme HelloWorld. Nous voulons que le processus de rang 0, dit en gnral processus root, envoie un message chacun des autres processus, ceux-ci rpondant leur tour root. Voici le code: /* helloworld.c Chaque processus non root rpond en retournant son rang */ #include <mpi.h> #include <stdio.h> #include <string.h> #define BUFFERSIZE 128 #define TAG 0 int main(int argc, char *argv[]) { char buffer[BUFFERSIZE]; char repbuffer[BUFFERSIZE]; int numprocs; int monid; int i; MPI_Status status; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&monid); /* Sparation du flux d'excution selon l'id du processus */ /* le processus 0 envoie le mme message tous les autres */ if(monid == 0) { printf("%d processus instancis\n", numprocs); for(i=1; i<numprocs; i++) { sprintf(buffer, "Hello World %d! ", i); MPI_Send(buffer, BUFFERSIZE, MPI_CHAR, i, TAG, MPI_COMM_WORLD); } /* Puis on fait une boucle pour recevoir la rponse */ /* de chacun des processus */ for(i=1;i<numprocs;i++) { MPI_Recv(buffer, BUFFERSIZE, MPI_CHAR, i, TAG, MPI_COMM_WORLD, &status); printf("%s\n", buffer); } } else { /* On attend de recevoir un message du processus 0 */ MPI_Recv(buffer, BUFFERSIZE, MPI_CHAR, 0, TAG,

Avec MPI on peut lancer des applications MPI dont le code diffre entre elles. Supposons que nous ayons des applications basic1 et basic2 mpirun -np 4 basic1 : -np 2 basic2 lancera basic1 quatre fois et basic2 deux fois. Jusqu'ici tous les processus sont lancs sur la machine locale. Nous verrons plus loin comment rpartir l'excution sur le rseau.

72

PROgrammez ! \\ Octobre 2008

code \\ c
MPI_COMM_WORLD, &status); /* puis on construit la chaine qui constitue la rponse */ sprintf(repbuffer, ", Le processus %d ", monid); strcat(repbuffer, "rpond: Programmez!\n"); strcat(buffer, repbuffer); /* Et on envoie la rponse au processus 0 */ MPI_Send(buffer, BUFFERSIZE, MPI_CHAR, 0, TAG, MPI_COMM_WORLD); } MPI_Finalize(); return 0; } On excutera ce code par exemple par la commande mpirun -np 4 helloworld Ce code est facile comprendre. Aprs obtention du nombre de processus et du rang de l'instance courante, on teste si on se trouve dans le processus root (ou 0); Si oui, on envoie, dans une boucle, un message chacun des autres processus via l'API MPI_Send, puis dans une autre boucle, on attend, via l'API MPI_Recv la rponse de chacun des processus. Voil pour le cas du processus root, dans le bloc if. Les autres processus excutent seulement le bloc else. Dans ce bloc les APIs MPI_Send et MPI_Recv sont invoques symtriquement: on commence par attendre le message provenant de root, puis on lui rpond. Nous n'entrerons pas dans le dtail des paramtres que reoivent ces APIs, ni dans le dtail des types MPI. Nous estimons que le lecteur est suffisamment averti pour puiser lui-mme ses informations dans la documentation, par exemple http://www.mpi-forum.org/docs/mpi-11-html/mpi-report.html. Nous prfrons nous concentrer sur les grandes lignes de la programmation MPI, ce qui donne dj pas mal de grain moudre :) Il est par exemple temps de faire une remarque fondamentale. Toutes les donnes des applications MOI sont dupliques, raison dune copie par processus. Ainsi en est-il du tampon baptis 'buffer' dans le code ci-dessus. C'est d'ailleurs trs logique, chaque processus disposant de son propre contexte d'excution. Les API s'occupent du conditionnement (marshalling) des donnes transmettre et de la gestion complte du mcanisme de message. Il importe encore de remarquer que les API de communication point point, telles MPI_Send et MPI_Recv, sont bloquantes. numre les htes. Nous baptisons ce fichier my_hostfile et il contient simplement deux lignes: venus soleil Moyennant quoi nous pouvons lancer notre application distribue: mpirun --hostfile my_hostfile -np 4 mpihosts : -np 1 /home/ fred/bin/mpihosts Les htes sont pris selon leur ordre d'apparition dans le fichier. Donc avec notre commande, quatre processus seront instancis sur venus, et un sur soleil. On suppose que la commande a t lance depuis le rpertoire contenant mpihosts sur venus. Il n'y a donc pas de chemin particulier spcifier. En revanche le processus sur soleil va tre lanc via ssh. C'est pourquoi il faut donner le rpertoire absolu de la localisation de l'application sur les htes distants. Il est possible de peaufiner le fichier my_hostfiles, par exemple en y indiquant le nombre de processus par hte: venus slots=4 soleil Il est encore possible d'viter la saisie d'une longue commande dans la console, au moyen d'un deuxime fichier. Baptisons celui-ci my_appfile. Il contiendra: # sur venus -np 4 ./mpihosts # sur soleil -np 1 /home/fred/bin/mpihosts Et on dmarrera alors l'application distribue tout simplement: mpirun --hostfile my_hostfile --app my_appfil

6NOTIONS DE COMMUNICATION COLLECTIVE


La partie de ping-pong que se livrent les API MPI_Send et MPI_Recv est facile apprhender intuitivement. Il n'en va pas de mme de toutes les APIs, lors du premier contact avec MPI. Nous terminerons donc cet article en exposant le fonctionnement de quelques APIs de communication collective. Nous commenons avec l'API MPI_Bcast. Avec celle-ci, le processus 0 envoie le contenu de son tampon tous les processus. Dans l'exemple ci-dessus ce contenu est l'entier 10 et chaque processus y ajoute son rang avant d'afficher le rsultat. /* Demo MPI_Bcast Le processus 0 dispatche le contenu de son buffer (ici l'entier valeur) tous les autres processus existants, y compris lui mme */ #include <mpi.h> #include <stdio.h>

5 UN HELLO WORLD RPARTI


Voici un code similaire au prcdent. Nous y avons ajout seulement un petit peu de programmation rseau Unix afin que les processus, lorsqu'ils construisent une rponse, rcuprent le nom de la machine sur laquelle ils s'excutent et intgrent ce nom dans la rponse. Le lecteur trouvera le code dans mpi_host.c sur le CD Rom ou le site. Il est maintenant temps de voir comment lancer une excution rpartie sur le rseau. Pour l'exemple nous supposons que celui-ci est constitu de deux machines, la premire, 'venus', est quipe d'un microprocesseur quatre coeurs cadencs 2.4ghz. La seconde machine, 'soleil', est quip d'un processus monocoeur galement 2.4 Ghz. Chaque coeur/processeur prsentant des performances voisines, il est intressant de lancer cinq processus, quatre sur venus et un sur soleil. Pour cela nous devons commencer par crer un fichier qui

Octobre 2008 \\ PROgrammez !

73

code \\ c
#define ROOT 0 int main(int argc, char *argv[]) { int numprocs; int monid; int valeur; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&monid); if(monid == 0) valeur = 10; MPI_Bcast(&valeur, 1, MPI_INT, ROOT, MPI_COMM_WORLD); printf("Valeur + monid: %d\n", valeur+monid); MPI_Finalize(); return 0; } Le point dlicat apprhender ici rside dans le fait que nous n'avons plus de partie de ping-pong. Tout simplement, l'appel MPI_Bcast bloque tout le monde jusqu' ce que tous les messages soient expdis, aprs quoi tout le monde reprend son excution, chacun travaillant avec son buffer. Une fois que l'on a saisi le principe, c'est tout simple. On peut dire que MPI_Bcast est une sorte de barrire par anticipation. MPI propose, ce n'est pas surprenant en programmation parallle, une barrire classique: /* Demo MPI_Barrier L'appel MPI_Barrier n'est franchi que lorsque tous les processus existants atteignent cet appel */ #include <mpi.h> #include <stdio.h> #include <unistd.h> #define ROOT 0 int main(int argc, char *argv[]) { int numprocs; int monid; int valeur; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&monid); if(monid == 0) valeur = 10; MPI_Bcast(&valeur, 1, MPI_INT, ROOT, MPI_COMM_WORLD); sleep(monid); } Ici le buffer est tout simplement la variable contenant le rang du processus. Nous demandons MPI_Reduce de faire la somme de toutes ces variables. Si nous avons quatre processus instancis, nous aurons pour rsultat: 0+1+2+3 = 6 La programmation MPI est trs vaste, souvent subtile et parfois mme ardue. Les quelques bases exposes dans cet article doivent toutefois permettre au lecteur intress de s'exprimer. Dans un prochain article nous dcouvrirons d'autres implmentations de MPI ainsi que d'autres aspects de cette librairie. Frdric Mazu - fmazue@programmez.com //MPI_Barrier(MPI_COMM_WORLD); printf("Valeur + monid: %d\n", valeur+monid); MPI_Finalize(); return 0; } Sans MPI_Barrier, l'affichage produit par cet exemple suit les valeurs de temporisation croissantes calcules d'aprs le rang de chaque processus. Enlevez le commentaire devant l'appel MPI_Barrier, recompilez et essayez. Cette fois l'affichage de tous les processus est simultan, ne se produisant qu' partir du moment o tous les processus ont atteint la barrire. En revanche l'ordre de l'affichage devient incertain... les joies de la programmation parallle ;) Regardons, pour terminer une API qui permet d'appliquer un traitement une collection de rsultat. Ces APIs sont nombreuses dans l'univers MPI. Nous considrons MPI_Reduce, qui applique une opration arithmtique: /* Demo MPI_Reduce */ #include <mpi.h> #include <stdio.h> int main(int argc, char *argv[]) { int numprocs; int monid; int result; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&monid); MPI_Reduce(&monid, &result, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD); if(monid == 0) printf("Total des rang de processus: %d\n", result); MPI_Finalize(); return 0;

74

PROgrammez ! \\ Octobre 2008

code \\ linux

Ecrire des scripts d'extensions pourNautilus


A l'origine dvelopp par la dfunte socit Eazel, Nautilus a remplac le Gnome Midnight Commander partir de Gnome 1.4.
Aujourd'hui, Nautilus est en licence GPL et il fait pleinement partie du projet GNU. LANGAGE : Script Nautilus est l'quivalent de DIFFICULTE SOURCE : oui l'Explorer de Windows. MOYENNE Comme lui, Nautilus permet non seulement d'ouvrir, copier, dplacer renommer des fichiers, mais aussi de lancer des applications. Il est donc lui aussi un shell graphique. Outil volu il permet de parcourir un rseau local, ou encore de visualiser le contenu d'un serveur FTP Mais il se distingue . de l'Explorateur Windows par ses possibilits d'extensions. Alors que sous Windows crire une extension l'Explorateur requiert une bonne dose de code COM natif, Nautilus, en plus des extensions en code natif et qui feront l'objet d'un article venir, propose la possibilit d'crire des scripts dans le langage de script de votre choix, pour en personnaliser le comportement. Avec un peu d'imagination, il est possible d'aller trs loin avec les scripts Nautilus.

APPLICATION : Gnome

2ENVIRONNEMENT D'UN SCRIPT


Lorsqu'il est excut en local, un script Nautilus dispose de quatre variables d'environnement :

Nom
NAUTILUS_SCRIPT_SELECTED_FILE_PATHS

Description
Liste des fichiers slectionns dans Nautilus au moment de l'appel du script. Le sparateur est un saut de ligne. Liste des URIs des fichiers slectionns dans Nautilus au moment de l'appel du script. Le sparateur est un saut de ligne. URI du rpertoire courant. position et taille de la fentre Nautilus courante.

NAUTILUS_SCRIPT_SELECTED_URIS

NAUTILUS_SCRIPT_CURRENT_URI NAUTILUS_SCRIPT_WINDOW_GEOMETRY

3POUR SE FAIRE LA MAIN


Commenons par un exemple tout simple pour nous informer du contenu des variables d'environnements cites ci-dessus. Pour cet exemple, nous considrons que le rpertoire de l'utilisateur comporte un sousrpertoire baptis tmp. Dans ce sous-rpertoire, nous plaons encore deux sous-rpertoires baptiss alpha et bta respectivement. Nous crivons ensuite le code de notre premier script finement baptis PremierScript. Vous le trouverez, ainsi que tous les autres exemples, sur le CD-Rom accompagnant le magazine ou sur notre site : #! /bin/bash cd ~/tmp printf "Programmez!" > debug-file echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS >> debug-file echo $NAUTILUS_SCRIPT_SELECTED_URIS >> debug-file echo $NAUTILUS_SCRIPT_CURRENT_URI >> debug-file echo $NAUTILUS_SCRIPT_WINDOW_GEOMETRY >> debug-file Le script crit simplement le contenu des variables d'environnement dans un fichier cr dans ~/tmp pour l'occasion et baptis debug-file. Ce script doit, comme nous l'avons mentionn plus haut, tre dpos dans le rpertoire ~/.gnome2/nautilus-script et les droits d'excution doivent lui tre octroys. Ds que le script est dpos, le menu contextuel de Nautilus, obtenu par un clic dans n'importe quelle fentre Nautilus, se trouve enrichi d'une entre 'Scripts', sous laquelle vous trouverez notre script. [Fig.1] Slectionnez le, il sera excut. Cependant, l'endroit o a t effectu le clic droit faisant apparatre le menu contextuel n'est pas anodin. Si vous avez cliqu dans la fentre associe au rpertoire ~/tmp mais sans toucher ni fichier ni rpertoire, le fichier debug-file contient : Programmez! file:///home/fred/tmp 745x525+149+155 L'URI file:///home/fred/tmp est celle du rpertoire explor par Nautilus au moment de l'opration. Elle est contenue dans la variable d'environnement NAUTILUS_SCRIPT_CURRENT_URI, seule Octobre 2008 \\ PROgrammez !

1 PRINCIPES DE BASE
N'importe quel utilisateur d'un systme Linux peut crire un script et l'utiliser sans devoir pour autant disposer des droits de l'administrateur. Les scripts Nautilus doivent tre dposs dans le rpertoire .gnome2 de l'utilisateur qui souhaite les utiliser. Ainsi si l'utilisateur a pour nom fred, le script que veut utiliser fred doit tre dpos dans : /home/fred/.gnome2 Ceci prsente l'avantage d'tre immdiat et facile, surtout dans le cas d'un systme avec un seul utilisateur. Sur un systme avec de nombreux utilisateurs, cela oblige copier tous les scripts que l'on veut mettre disposition dans le rpertoire .gnome2 de chaque utilisateur, ce qui deviendra vite ingrable surtout en cas de modification du code des scripts. Dans ce cas, le mieux pour l'administrateur du systme est sans doute de crer un rpertoire tel que /usr/share/nautilus-scripts, d'y dposer tous les scripts Nautilus existants et de crer selon les besoins des liens symboliques sur ces scripts dans les rpertoires .gnome2 des utilisateurs. Un script Nautilus s'crit avec n'importe quel langage ... de script. Le langage Shell est tout dsign, mais on utilisera tout aussi bien Perl, Ruby, ou Python selon ses prfrences. Un fichier de script n'a pas besoin d'avoir une extension particulire (.sh, .py etc). Il est simplement ncessaire que le fichier puisse tre excut : chmod +x le_script et qu'il soit dot d'une ligne shebang afin que le systme sache quel interprteur invoquer. Pour rappel une ligne shebang doit se situer en toute premire ligne d'un script et elle doit dbuter par #! Par exemple : #! /bin/bash ou encore #! /usr/bin/python ou, si l'on est pas certain du rpertoire d'installation de l'interprteur : #! /usr/bin/env python

75

code \\ linux
variable d'environnement (en faisant abstraction de NAUTILUS_SCRIPT_WINDOWS_GEOMETRY) initialise dans cette situation. Nous verrons plus loin comment exploiter une URI travers les fonctionnalits du Shell. Slectionnez maintenant les deux rpertoires alpha et bta et relancez le script depuis le menu contextuel de Nautilus. Maintenant, le fichier debug-file contient : Programmez! /home/fred/tmp/alpha /home/fred/tmp/beta file:///home/fred/tmp/alpha file:///home/fred/tmp/beta file:///home/fred/tmp 607x427+170+389 Cette fois nous avons en plus la liste des chemins des fichiers/rpertoires slectionns. C'est le moment de faire une remarque. Le moins que l'on puisse dire est que Nautilus est hlas peu document. Ainsi la maigre documentation que l'on peut trouver sur Internet concernant les scripts Nautilus affirme que les lments contenus par les variables d'environnement NAUTILUS_SCRIPT_SELECTED_FILE_PATHS et NAUTILUS_SCRIPT_ SELECTED_URIS sont spars par un saut de ligne. Pourquoi avonsnous ici des lments spars par des espaces ? La documentation Nautilus est-elle errone ou bien est-ce notre faute ? La documentation Nautilus est bel et bien correcte. Nous sommes simplement confronts un traquenard classique du Shell. Dans le jargon de celui-ci on dit que nous n'avons pas protg notre variable d'environnement, ce qui quivaut donner l'autorisation un remaniement du contenu de la variable. Dans le cas prsent, le Shell remplace les sauts de lignes par des espaces. Si l'on veut prserver la mise en forme initiale du contenu de la variable d'environnement, on doit protger celle-ci en l'encadrant de guillemets. Par exemple : echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" >> debug-file Le Shell est plein de subtilits... Nous concluons de tout ceci que, au moins pour la mise au point d'un script Nautilus, crire les rsultats intermdiaires dans un fichier de dbogage est une sage prcaution :)
Fig.1

Ds que Nautilus reconnat la prsence d'un script, il enrichit son menu contextuel.

for REP in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS do if [ -d "$REP" ] then echo "L'objet slectionn EST un rpertoire" >> $DEBUG gnome-terminal working-directory=$REP & #exit 0 # alors seul le premier rpertoire sera trait else echo "L'objet slectionn n'est pas un rpertoire" >> $DEBUG fi done Ce script (fichier "Console ici" sur le CD-Rom) est une bonne occasion de rviser quelques notions de base de Shell :) Nous commenons comme il se doit par le shebang. Ensuite, nous dclarons des variables d'environnement contenant le nom du rpertoire temporaire de travail et le nom du fichier de dbogage. Puis, nous crivons dans ce fichier le contenu des variables d'environnement susceptibles de nous intresser. Ensuite dans le premier bloc if, nous testons si quelque chose est slectionn dans la fentre Nautilus. Pour cela, nous examinons si la chane contenue par NAUTILUS_SCRIPT_SELECTED_FILE_PATHS est vide ou non. Pour ce test nous choisissons sagement de protger la variable, comme expliqu au paragraphe prcdent. Remarquons encore que la syntaxe Shell veut que les crochets qui encadrent le test soient suivis et prcds d'un espace respectivement. Si la chane est vide, nous lanons tout simplement le programme gnome-terminal. Le rpertoire courant du terminal sera automatiquement positionn correctement. Puis nous mettons fin l'excution du script l'aide de la commande exit. Si des lments sont slectionns dans la fentre Nautilus, le premier test choue et nous entrons alors dans la boucle for. On remarquera que cette fois nous ne protgeons pas la variable d'environnement par des guillemets, car nous voulons que le Shell remette en forme la variable en supprimant les sauts de ligne parasites qui nuiraient au bon fonctionnement du script. Le lecteur peu convaincu est invit faire un essai ;) Ensuite pour chaque lment slectionn dans la fentre nous vrifions, dans le bloc test if inclus dans la boucle for, si cet lment est ou non un rpertoire. Si c'est le cas, nous invoquons gnome-terminal en lui passant ce rpertoire en paramtre et nous n'oublions pas l'esperluette afin que le script puisse ouvrir plusieurs terminaux de suite le cas

4OUVRIR UN TERMINAL
Nous nous proposons maintenant d'crire un script capable d'ouvrir un terminal Gnome. Nous voulons que le rpertoire explor par la fentre Nautilus devienne le rpertoire courant du terminal si rien n'est slectionn dans cette fentre. Si un ou plusieurs fichiers sont slectionns, nous voulons qu'il ne se passe rien. Si un ou plusieurs rpertoires sont slectionns, nous voulons ouvrir autant de terminaux que de rpertoires, avec chacun des terminaux ayant son rpertoire courant positionn sur chacun des rpertoires slectionns. #! /bin/bash TMPDIR=~/tmp DEBUG=$TMPDIR/debug-file echo "Dbogage du script 'Console ici'" > $DEBUG echo $NAUTILUS_SCRIPT_CURRENT_URI >> $DEBUG echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS >> $DEBUG if [ -z "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" ] ; then gnome-terminal exit 0 fi

76

PROgrammez ! \\ Octobre 2008

DEVELOPPEZ VOTRE SAVOIR-FAIRE


mensuel n111 - septembre 2008

PRO grammez ! ! PRO grammez PRO grammez !


mensuel n111 - septembre 2008

Nouvelle Formule

Le magazine du dveloppement

Nouvelle Formule

Le magazine du dveloppement

Numro Spcial 10 ans ! www. programmez.com EXCLUS IF Nouvelle Les rvlations www. programmez.com EX du livr CLUSIF Formule
mensuel n112 - octobre 2008

e choc Les rvlations du livre choc

Programmez ! est le magazine du dveloppement


Langage et code, dveloppement web, carrires et mtier : Programmez !, c'est votre outil de veille technologique. Pour votre dveloppement personnel et professionnel, abonnez-vous Programmez !

www. programmez.com

Le magazine du dveloppement

Enqute

MULTI-TOUCH MULTI-TOUCH Spcial


Comment a marche ? Les outils, les technologies disponibles CoderComment a marche ? pour l'iPhone 2.0 Les outils, les Bouygues Au coeur du e-lab detechnologies disponibles Coder pour l'iPhone 2.0 Au coeur du e-lab de Bouygues

La Rvolution du La Rvolution du

langages Les Olympiques du Les favoris dveloppement Vers Microsoft 3.0 Exclusif ! ! Olympiques du ImagineCupLes projets secrets rvle dveloppement ! les nouveaux talents
ImagineCup rvle les nouveaux talents

Jeux Jeux

Vos

Lquipe The Shads, de lEpita ABC Project

Lquipe The Shads, de lEpita ABC Project

de Microsoft

Spcial PHP PHP Java ENFIN DISPONIBLE !


Le match

Eclipse - Netbeans GAGNER


300 licences 300 Choisir loutil idal !licences

Chrome et les dveloppeurs Le Google Developer Day !

Choisissez votre formule


Abonnement 1 an au magazine : 45
(au lieu de 65,45 tarif au numro) Tarif France mtropolitaine

Les nouveauts PHP 5.3 Crer son moteur

ActionScript 3 M 04319 - 111 - et5,95programmation par Crer avec OpenMP PHP F: la E votre grid computing Multicur Google Dcouvrez le Resource Mozilla composants Programmer Intgrer Google Maps et JSFcharge processeur vos curs GovernorLa Crer votre extension XUL Jeux : Et avec OpenMP aussi : M Dvelopper des jeux en Java 04319 - 111 - F: 5,95 E avec WMI pour Firefox ! Mozilla iPhone / .net Linux : Dvelopper La charge processeur Nautilus Crer votre extension XUL Piloter votre des extensions M 04319 - 112 - F: 5,95 E avec WMI pour Firefox ! Windows Media Center avec iPhone

technique

programmation par SQLMulticur Server Flash PHP et la de template en PHP 5 Google UML JavaSpaces : composants Matriser le bitmap avec et PHP : le duo d'enfer Intgrer Google Maps et JSF Programmer vos curs 2008

ENFIN DISPONIBLE !

GAGNER template en PHP 5 PHP 5.3 Les dernires versions compares Les nouveauts de Tout savoir sur Eclipse 4.0 UML et Crer AspectJ : PHP : leson moteur duo d'enfer

La programmation par aspect facile !

Printed in France - Imprim en France - BELGIQUE 6,45 - SUISSE 12 FS - LUXEMBOURG 6,45 - DOM Surf 6,90 - Canada 8,95 $ CAN - TOM 940 XPF - MAROC 50 DH

3:HIKONB=^UZ^Z]:?k@b@l@b@a; 3:HIKONB=^UZ^Z]:?k@b@l@b@a; 3:HIKONB=^UZ^Z]:?k@l@b@c@a;

11 numros par an : soit

45 *

Abonnement Intgral : 1 an au magazine + archives sur Internet et PDF : 57 Tarif France mtropolitaine Abonnement PDF / 1 an : 30 - Tarif unique
Inscription et paiement exclusivement en ligne www.programmez.com

*Tarif France mtropolitaine

ACCS ILLIMIT aux ARCHIVES du MAGAZINE pour


Cette option est rserve aux abonns pour 1 an au magazine, quel que soit le type dabonnement (co, Numrique, Etudiant). Le prix de leur abonnement normal est major de 12 (prix de lancement, identique

3 GRATUITS + Abonnement INTGRAL


Vous pouvez aussi vous abonner en ligne et trouver tous les tarifs

Numros

Abonnement Etudiant : 1 an au magazine : 39

(au lieu de 65,45 tarif au numro) Offre France mtropolitaine

pour toutes zones gographiques). Pendant la dure de leur abonnement, ils ont ainsi accs, en supplment, tous les anciens numros et articles /dossiers parus.

1 par mois !

OUI, je mabonne
PROGRAMMEZ

www.programmez.com

Abonnement 1 an au magazine : 45 (au lieu de 65,45 tarif au numro) Tarif France mtropolitaine Abonnement Intgral : 1 an au magazine + archives sur Internet et PDF : 57 Tarif France mtropolitaine Abonnement Etudiant : 1 an au magazine : 39 (au lieu de 65,45 tarif au numro) Offre France mtropolitaine
M. Mme Mlle
Entreprise :
........................................................................................

Fonction : ...................................................

Nom : ........................................................................................ Prnom :.................................................................................................................................... Adresse :


.........................................................................................................................................................................................................................................

Le renvoi du prsent bulletin implique pour le souscripteur l'acceptation pleine et entire de toutes les conditions de vente de cette offre. Conformment la loi Informatique et Liberts du 05/01/78, vous disposez d'un droit d'accs et de rectification aux donnes vous concernant. Par notre intermdiaire, vous pouvez tre amen recevoir des propositions d'autres socits ou associations. Si vous ne le souhaitez pas, il vous suffit de nous crire en nous prcisant toutes vos coordonnes.

Code postal : Tl :

...............................................

Ville :

...................................................................................................................................................................

........................................................................................

E-mail :

....................................................................................................................................

Je joins mon rglement par chque lordre de Programmez ! Je souhaite rgler rception de facture A remplir et retourner sous enveloppe affranchie : Programmez ! - Service Abonnements - 22 rue Ren Boulanger - 75472 Paris Cedex 10. abonnements.programmez@groupe-gli.com

PRO grammez !
Le magazine du dveloppement

PROG 112

Offre limite, valable jusquau 30 octobre 2008

code \\ linux
chant. Si l'objet n'est pas un rpertoire, nous le signalons simplement dans le fichier de dbogage. Pour terminer, remarquons la commande exit en commentaire dans le code. Si nous enlevons le commentaire alors le script n'ouvrira qu'un seul rpertoire mme si plusieurs sont slectionns. Cela peut tre un comportement souhait, mais le bt risque de blesser un petit peu. En effet, sauf erreur de votre serviteur, les essais montrent que Nautilus ne gre pas l'ordre de slection des lments dans la fentre et du coup, on peut se retrouver avec un terminal positionn sur le mauvais rpertoire. Le script ci-dessous ("Console ici bis" sur le CD-ROM ou le site) illustre comment travailler avec des URIs. Remarquez notamment la suppression des prfixes file:// entre les accolades dans le code. #! /bin/bash TMPDIR=~/tmp DEBUG=$TMPDIR/debug-file echo "Dbogage du script 'Console ici'bis" > $DEBUG echo $NAUTILUS_SCRIPT_CURRENT_URI >> $DEBUG echo $NAUTILUS_SCRIPT_SELECTED_URIS >> $DEBUG if [ -z "$NAUTILUS_SCRIPT_SELECTED_URIS" ] ; then gnome-terminal exit 0 fi for URIREP in $NAUTILUS_SCRIPT_SELECTED_URIS do REP=${URIREP#file://} if [ -d "$REP" ] then echo "L'objet slectionn EST un rpertoire" >> $DEBUG gnome-terminal working-directory=$REP & #exit 0 # alors seul le premier rpertoire sera trait else echo "L'objet slectionn n'est pas un rpertoire" >> $DEBUG fi done Comme nous l'avons vu dans les exemples en Shell pur, l'excution d'un script Nautilus se droule en aveugle: aucune sortie sur console. Nous avons donc besoin d'un moyen pour comprendre les raisons d'un ventuel chec d'un script crit en Python, par exemple une erreur de cl de dictionnaire. Lorsqu'il rencontre une erreur dans un script classique, Python lve une exception et imprime la trace de celle-ci sur la console. Ce que nous voulons faire est donc tout simplement d'imprimer cette trace dans notre fichier de dbogage. Pour cela, nous importons le module traceback en tout dbut de script. Puis tout le code est excut dans un bloc try. L'exemple ci-dessus, pour des raisons de simplicit comporte un petit dfaut: si le fichier debug-file lui-mme ne peut tre cr au tout dbut de l'excution, la trace de l'exception correspondante ne pourra pas tre crite dedans. Toutefois, ce dfaut mineur est ici acceptable et nous laissons les choses en l'tat dans cet article. Nous voyons ensuite comment accder aux variables d'environnement via le module os. Tel qu'il est ce script produit le mme rsultat dans debug-file que notre premier script Shell. Mais si nous changeons une ligne : debug_file.write(os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS']) en : debug_file.write(os.environ[NAUTILUS_SCRIPT_SELECTED_FILE_PATHS]) pour produire une erreur, voici ce que le fichier debug-file contient alors : Programmez! Python Traceback (most recent call last): File "/home/fred/.gnome2/nautilus-scripts/PremierScriptPython", line 16, in ? debug_file.write(os.environ[NAUTILUS_SCRIPT_SELECTED_FILE_PATHS]) NameError: name 'NAUTILUS_SCRIPT_SELECTED_FILE_PATHS' is not defined Ce qui est bien conforme nos attentes. Il est maintenant temps de voir comment envoyer un mail avec fichier attach. Toujours par souci de simplicit notre script se contente d'envoyer un mail une adresse prdfinie. Le ou les fichiers attachs seront bien videment les fichiers slectionns dans la fentre Nautilus. On suppose qu'il s'agit de fichiers de type MIME text/plain. Etoffer ce script par exemple sur la base de Tkinter afin d'offrir une interface graphique l'utilisateur pour la slection du destinataire est une formalit. Nous laissons cela la sagacit du lecteur, la programmation Tkinter sortant du cadre de cet article. La manipulation d'autres types MIME galement. #! /usr/bin/env python # -*- coding: latin-1 -*os.chdir(debug_rep) debug_file = open('debug-file', 'w+') debug_file.write('Programmez! Python\n') debug_file.write(os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS']) debug_file.write('\n') debug_file.write(os.environ['NAUTILUS_SCRIPT_SELECTED_URIS']) debug_file.write('\n') debug_file.write(os.environ['NAUTILUS_SCRIPT_CURRENT_URI']) debug_file.write('\n') debug_file.write(os.environ['NAUTILUS_SCRIPT_WINDOW_GEOMETRY']) except: traceback.print_exc(file=debug_file)

5ENVOYER UN MAIL AVEC FICHIER ATTACH


Pour varier les plaisirs, nous allons utiliser cette fois le langage Python, ce qui nous donnera l'occasion de voir comment manipuler les variables d'environnement avec lui, ainsi que les fichiers et les rpertoires. Commenons donc par crire l'quivalent de PremierScript avec Python. Le rsultat s'appelle PremierScriptPython sur le CD-Rom ou le site. #! /usr/bin/env python #! -*- coding: latin-1 -*import traceback import os # A adapter selon vos besoins debug_rep = '/home/fred/tmp'

try:

78

PROgrammez ! \\ Octobre 2008

code \\ linux
import import import import import import traceback os os.path string smtplib MimeWriter body = part.startbody("text/plain", [("charset", "iso-8859-1")]) body.write(texte) # Intgration du ou des fichier(s) attach(s) fichiers = os.environ['NAUTILUS_SCRIPT_SELECTED_FILE_PATHS'] debug_file.write(fichiers) fichiers = string.split(fichiers, '\n') debug_file.write(str(fichiers)) debug_file.write("\n") for fichier in fichiers: if os.path.isdir(fichier): continue if not os.path.isfile(fichier): continue debug_file.write('Fichier attach: ') debug_file.write("\n") debug_file.write(fichier) debug_file.write("\n") part = mime.nextpart() part.addheader("Content-Transfert-Encoding", "8bit") part.addheader("Content-Disposition", "attachment") autrebody = part.startbody("text/plain", [("name", fichier), ("filename", fichier), ("charset", "iso-8859-1")]) autrebody.write(open(fichier).read()) # on dit que c'est fini mime.lastpart() tempfile.close() # pour assurer le vidage de tout tampon ventuel # il ne reste plus qu' expdier le mail :) server = smtplib.SMTP(host) message = open(tempmailstr).read() server.sendmail(fromstr, tostr, message) server.quit() if __name__ == '__main__': try: os.chdir(debug_rep) debug_file = open('debug-file', 'w+') debug_file.write("Programmez! MailTo\n\n") SendMail() except: traceback.print_exc(file=debug_file) Ce script, pour efficace qu'il soit, ne pose pas de difficult. Sa logique est la suivante: On commence par prparer le dbogage comme dans l'exemple prcdent. Ensuite on cre les en-ttes du mail envoyer, puis le corps du mail. En soi, ce corps dfinit une partie du mail. Un mail avec fichier attach est un mail comportant, hormis les en-ttes, plusieurs parties. La premire partie est, c'est logique, le corps du mail, et chaque fichier attach constitue une autre partie. Bien remarquer que la librairie MimeWriter doit tre informe de la prsence de parties multiples : mime.startmultipartbody("mixed") Ceci fait, on boucle tout simplement sur la liste des fichiers indiqus par la variable d'environnement NAUTILUS_SCRIPT_SELECTED _FILE_PATHS et le mail est constitu. Frdric Mazu - fmazue@programmez.com

# Ci-dessous, adapter selon vos besoins: debug_rep = '/home/fred/tmp' debug_file = None host = "smtp.wanadoo.fr" fromstr = "frederic.mazue@wanadoo.fr" senderstr = "Frdric Mazu<frederic.mazue@wanadoo.fr>" subjectstr = "Expdi depuis Nautilus" tostr = "frederic.mazue@wanadoo.fr" tempmailstr = "temp-mail" # le fichier temporaire n'est pas dtruit car son contenu est instructif :) texte = """ Fred , Ceci est un message avec fichier attach, expdi par Nautilus et Python @+ Fred """ def SendMail(): # on construit le mail, d'abord on cre un objet MimeWriter # dont la sortie s'effectue dans un fichier temporaire tempfile = open(tempmailstr, 'w+') mime = MimeWriter.MimeWriter(tempfile) # # # # # puis on travaille en quatre phases - cration de l'entte du mail - dclaration d'un mail en plusieurs parties - insertion du corps du mail - attachement du ou des fichier(s)

# Cration de l'entte mime.addheader("To", tostr); mime.addheader("From", senderstr) mime.addheader("Sender", senderstr) mime.addheader("Subject", subjectstr) mime.addheader("MIME-Version", "1.0") # Dire que le mail a plusieurs parties mime.startmultipartbody("mixed") # Ajout du corps du mail part = mime.nextpart() part.addheader("Content-Transfert-Encoding", "8bit")

Octobre 2008 \\ PROgrammez Donnez votre avis sur ce numro www.programmez.com/magazine_satisfaction.php ! 79

ludique \\ programmation
[1re partie]

Devenez un petit gnie du jeu vido en Java


La programmation (de jeux) se compose de plusieurs briques. Vous apprendrez facilement vous en servir car nous les dtaillerons tape par tape. Les captures dcrans sont vos guides lorsque vous apprenez matriser ces outils importants car elles sont infaillibles. Et, comme pour la bicyclette, lorsque vous savez vous en servir, cela ne soublie pas. Si vous tes dbutant en programmation, cet article vous permettra de partir trs rapidement sur de bonnes bases.
Les briques utilises dans la cration de jeux incluent : Les instructions. Centre nvralgique et squelette de tous les jeux. Les commentaires. Ils permettent dannoter votre code pour savoir ce que fait chaque ligne. Les contrles de ux. Ils vous permettent de rpter du code. Ils sont trs pratiques pour relancer un jeu. Les variables. Elles permettent de garder une trace des scores, des noms des joueurs, des niveaux, etc. Les instructions if : Elles permettent de tester vos variables grce des conditions. Par exemple, si vous tuez un ennemi, votre score augmente. JOptionPane : Ils permettent de grer les entres et les sorties, par exemple pour afcher le score dun joueur ou pour rcuprer son nom pour la liste des scores les plus levs. Les nombres alatoires. Ils sont la base de lintelligence articielle. Pour dplacer un ennemi de manire alatoire, les nombres alatoires sont ce quil vous faut. Les pauses. Elles permettent dinuencer le rafrachissement de lcran pour que vos graphismes restent clairs et nets. Les tableaux et les ArrayList Ils servent grouper des objets similaires (ennemis, recharges, etc.) et ainsi gagner du temps. Les accs aux chiers (lecture et criture). Ils permettent de sauvegarder le jeu, ce qui est pratique lorsque votre chef arrive de manire impromptue et que vous tes en train de jouer au lieu de travailler. <nom de la classe> <nom de la variable> = new <nom de la classe>(); Dans notre classe Jeu, la mthode main ne contiendrait donc que la ligne : Jeu j = new Jeu(); Cette ligne de code excute le constructeur de la classe. Un constructeur est similaire la mthode main, ceci prs quil est appel automatiquement lorsquon cre une instance de la classe (en utilisant le code ci-dessus). Par consquent, tout le code ncessaire pour faire fonctionner le jeu doit se trouver dans le constructeur et non dans la mthode main. On programme un constructeur avec cette syntaxe : public <nom de la classe>() { // le code est ajout ici } Le code du constructeur de la classe Jeu commencerait donc ainsi :
Fig.2

PROJET : LA COURSE DU COURAGE, LA PISTE


JFrame Un JFrame est une des mthodes les plus simples pour crer une interface graphique. Il cre une fentre (similaire un JOptionPane) dune taille donne. Vous pouvez y ajouter des graphismes, des boutons, des champs de texte, des libells, etc. La Figure 1 reprsente un JFrame avant tout ajout de graphismes ou dimages. Pour crer un JFrame, ajoutez extends JFrame la n de la ligne public class... Par exemple, si votre classe sappelle Jeu, la ligne ressemblerait ceci : public class Jeu extends JFrame Modiez galement la mthode main an quelle ne contienne quune ligne de code :
Fig.1

Un JFrame vide

Quelques-unes des nombreuses couleurs disponibles

80

PROgrammez ! \\ Octobre 2008

ludique \\ programmation
public Jeu() { } Dans le constructeur, il faut ajouter ces quatre lignes de code pour crer le JFrame et en indiquer le titre et la taille : super("voici le titre"); setSize(400,400); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON _CLOSE); Vous avez cr votre toute premire interface graphique ! Il sagit dun canevas blanc auquel vous pouvez facilement ajouter des formes, des images, des boutons, des champs de texte ou tout ce que vous pouvez imaginer. Dans ce qui suit, nous expliquerons comment inclure des ennemis menaants, des hros audacieux ou des aliens dgotants. Tapez le code suivant lextrieur du constructeur, mais lintrieur de la classe : public void paint(Graphics g) { super.paint(g); } Cette mthode permet de dessiner des formes quelconques : des rectangles, des carrs, des cercles, des arcs ou mme des lettres gantes. Pour linstant, nous allons nous intresser deux commandes pour choisir une couleur et dessiner un rectangle. Pour choisir une couleur, on utilise le code suivant (il faut aussi ajouter une ligne import java.awt.*) : g.setColor(Color.<une couleur>); <une couleur> est le nom dune couleur en anglais ; NetBeans afche la liste des couleurs disponibles lorsque vous tapez "Color.". Cette liste est illustre la Figure 2. Pour dessiner un rectangle, il faut utiliser cette syntaxe :
Fig.3

g.fillRect(<x>, <y>, <largeur>, <hauteur>); <x>, <y>, <largeur> et <hauteur> sont des variables de type int. Dessinez un rectangle vert comme celui de la Figure 3, la position 100, 100, large de 100 et haut de 200. Vous savez maintenant comment tracer une piste de course simple ! Attention, il arrivera un moment o vous devrez vrier si la voiture sort des limites du rectangle. Pour anticiper cela, sauvez les points dans un objet Rectangle. Cela rendra les collisions plus faciles dtecter. Vous pourrez ensuite tracer le rectangle en rcuprant ses valeurs, comme ceci : Rectangle r1 = new Rectangle(100,100, 100,200); g.fillRect(r1.x, r1.y, r1.width, r1. height); Et, pour redessiner le JFrame, il suft dutiliser le code suivant dans votre programme : repaint(); Le code public void paint... est toujours excut au dmarrage du programme.

<type de retour> doit tre remplac par void si la mthode ne renvoie pas de rsultat. Si elle retourne un lment de type int, il doit tre remplac par int. Si elle retourne un objet de type Integer, il doit tre remplac par Integer. <type de retour> peut tre un type primitif (int, double, char, etc.) ou un objet. <nom> est le nom de la mthode. Ce nom est votre convenance, pour autant quil commence par une lettre. arguments reprsente les variables en entre de la mthode lorsquelle est appele. Ces arguments sont spars par des virgules. Si votre mthode prend deux arguments, un de type int et un de type double, vous devez crire ceci : public void exemple (int i, double d){} lintrieur de la mthode, i et d sont les noms de variables via lesquels les arguments sont accessibles. Pour renvoyer une valeur, utilisez ceci : return <variable>; <variable> doit tre du type que vous avez indiqu lorsque vous avez dclar la mthode. Pour appeler une mthode, en loccurrence la mthode exemple, il faut utiliser cette syntaxe pour passer les arguments 1 et 4.563. : exemple(1, 4.563) Si exemple renvoie une valeur de type int, vous pouvez rcuprer la valeur renvoye comme ceci : int i = exemple(1, 4.563);

Mthodes
Les mthodes contiennent du code qui peut tre excut plusieurs fois. On utilise des mthodes pour pouvoir rpter du code plus facilement. Vous pouvez appeler (cest-dire excuter) une mthode partir du constructeur ou depuis une autre mthode, mais pas depuis la mthode main. Une mthode peut prendre en entre une variable (aussi appele argument) ou renvoyer une variable, non exclusivement et non obligatoirement. Pour crer une mthode, on utilise cette syntaxe : public <type de retour> <nom> (arguments) { //code }
Fig.4

Crer le jeu
Pour crer le jeu prsent ci-dessus reportez-vous au code source sur le CD-Rom ou le site web de Programmez. La Figure 4 prsente une copie dcran de la piste complte. La suite le mois prochain.

Extrait de : Ian Cinnamon, Devenez un petit gnie des jeux vido, Pearson, 2008
Avec laimable autorisation de lditeur.

Un rectangle vert dans un JFrame

La piste complte

Octobre 2008 \\ PROgrammez !

81

livres \\
Java et Eclipse

par Franois Tonic


bien illustrs, ce livre sera vite votre bible du dveloppement web. ments de BSD puis on tape dans le dur avec linstallation, le processus de dmarrage, la sauvegarde / backup (vivement conseill). Pour les bidouilleurs de noyau, le kernel est bien entendu abord, pour savoir comment lutiliser, sen occuper. Le livre aborde tout ce qui est rseau, disque, systme de fichier, scurit. Et enfin la question existentielle : pourquoi utiliser BSD et le rendre utile. A cela on rajoute les services systmes, le systme de mise jour, le web, le mail, loptimisation du systme et que faire en cas de crash Seul vritable regret : labsence dune version sur CD/DVD de FreeBSD.

Difficult : ** Editeur : Eni ditions Auteur : Henri Laugi Prix : 39


Vous rvez de matriser le dveloppement Java avec Eclipse. Ce livre vous offre une bonne premire tape de cette comprhension. Lauteur y mle la prise en main de lIDE et du langage sur diffrents aspects : programmation objet, base de donnes, modle MVC avec Jtable. Cela permet davoir une vue gnrale des principales fonctions Eclipse, de certains plug-in.

Windows Vista (inclus SP1)


Difficult : *** Editeur : CampusPress Auteur : Michel Martin Prix : 22
Vista peut-il se rsumer en 940 pages ? La rponse est oui ! Pour connatre les arcanes du systme de Microsoft, ce livre est sans aucun doute le lieu idal : multimdia, internet, applications, mail, base de registre, Scripting, Powershell, gadget. Tout y est abord. Nous sommes loin des kits de dveloppement Windows mais ce livre gnraliste est une mine dinformations pratiques pour bien utiliser son Vista. Et cela peut tre utile. Un petit livret complte le livre et aborde exclusivement le service pack 1 du systme.

CSS
Difficult : *** Editeur : Micro Application Auteur : collectif Prix : 15
Les CSS, on en parle partout sur le web, dans le dveloppement web mais comment matriser ces feuilles de style qui sont tout sauf simples. Ce guide se propose de vous apprendre tout dabord les bases dun CSS, son architecture, son fonctionnement puis daborder le contenu (mise en page, positionnement, interaction, la hirarchie). Les auteurs continuent sur comment utiliser les liens, les formulaires, la manipulation des images et encore les fonctions denrichissement des feuilles CSS. Point apprciable : une liste de bonnes pratiques et des trucs et astuces foison. Et pour finir, le livre fournit quantit de liens pour en savoir plus en ligne !

Expression Web
Difficult : ** Editeur : Eni ditions Auteur : Louise Villeneuve Prix : 9,90
Expression Web est loutil de dveloppement web de Microsoft dans la gamme expression, il succde Front Page. Ce petit livre est avant tout un aide-mmoire pour le dveloppeur web et non un manuel de prise en main, de dveloppement. Lauteur y explique linterface de loutil, prsente lensemble des fonctions, des possibilits de lenvironnement. Utile et bien fait !

UML 2 pour lanalyse dun systme dinformation


4e dition
Difficult : *** Editeur : Dunod Auteur : collectif Prix : N.C.
Vritable guide mthodologique, ce livre explique comment utiliser UML comme support de la mthode d'analyse d'un systme d'information. La premire partie dcrit les bases mthodologiques indispensables toute dmarche d'analyse. Lemploi des diagrammes nest pas oubli dans le cadre dun SI puis on enchane sur la manipulation dUML dans la rdaction du cahier des charges du matre douvrage. Enfin, on termine par une mise en uvre avec StartUML.

Dreamweaver CS3
Difficult : *** Editeur : Eyrolles Auteur : collectif Prix : 36
En attendant de vous attaquer Dreamweaver CS4 disponible depuis peu de temps, il nest pas trop tard pour vous perfectionner en CS3 qui restera la base de la nouvelle version. Outil de dveloppement web de rfrence depuis plusieurs annes, son utilisation ncessite parfois une bonne dose de patience et de persvrance. Volumineux, louvrage est la hauteur de loutil. Les auteurs abordent lensemble des fonctionnalits de Dreamwaever : CSS, image, Framework Spry, tableaux, listes, mise en forme, javascript, intgration flash, vido, sites dynamiques, etc. Nombreux exemples et trs

Hackerteen : internet blackout,

volume 1

Difficult : ** Editeur : Oreilly Auteur : collectif Prix : 16


Que se passe-t-il sur le rseau des rseaux ? Yago, malgr lui, tombe sur une sombre affaire. Mais tout commence avec larrive de Yago la Hackerteen et une histoire de chantage contre une jeune femme sur certaines vidos puis avec larrestation de Hackerip, le directeur de cette cole informatique, accus davoir caus la chute dune douzaine de serveurs DNS et la chute dInternet. Qui se cache derrire cette machination ? Rien nest certain. Yago saura-t-il dnouer lintrigue ? En anglais.

FreeBSD 7.0
Difficult : *** Editeur : Pearson Auteur : Michael W. Lucas Prix : 49
Dans Programmez ! nous parlons peu des systmes BSD et pour tant ils sont fiables et performants. Pour ceux qui voudraient se lancer dans laventure, voici un ouvrage pour eux. Il aborde le systme FreeBSD (un des BSD du march). On revient dabord sur la gense du systme, les l-

82

PROgrammez ! \\ Octobre 2008

Acclrez votre dveloppement

Performance, Productivit, Polyvalence


NOUVELLE VERSION MAJEURE ENFIN DISPONIBLE ! Un EDI optimis pour dployer partout, avec agilit :
Dploiement sur .NET :
Services Web Assemblies WebForms ASP .NET WinForms Smart Client .NET

Dploiement sur J2EE* :


JBoss WebLogic WebSphere

Dploiement sur Pocket PC* :


Win CE Windows Mobile 5 et 6 Synchronisation avec Oracle, MSSQL, DB2, Sybase..."

support AJAX pour les WebForms

Gratuit* avec PB 11.5

Gratuit* avec PB 11.5

*Le Plug-in PowerBuilder pour Serveur d'Application et PocketBuilder ont t incorpors sans surcot dans PowerBuilder 11.5 pour encore plus de valeur ajoute

Distributeur VAD :

Dcouvrez Sybase PowerBuilder 11.5 en 15 minutes http://www.sybase.com/products/development/powerbuilder/videos Echos du Techwave : http://www.sybase.com/techwave/conference_content


(cliquez sur Modern Application Development)

Confiez vos projets un professionnel

Tel: +33 (0)1 49 97 49 09 sybase@open-way.com

Tel: +33 (0)1 41 91 96 80 europePB@sybase.com

Vous aimerez peut-être aussi