Couv 102 22/10/2007 15:40 Page 1
www.programmez.com
ProMensuel - Novembre 2007 - N°102 grammez! Programmez!LE MAGAZINE DU DÉVELOPPEMENT Rich Internet Application La révolution de l'interface web ! Les nouvelles plates-formes RIA / RDA Comprendre Silverlight, JavaFX et Flex. La sécurité est-elle assurée ? L’offensive Adobe Comment choisir ? Développer sur MacOS X ! Découvrir la programmation Mac À quoi sert Le code du JBoss Seam framework .Net dans l'univers ouvert aux développeurs Java EE ?
PHP Java E
Créer des applications Swing et graphiques dans les documents PDF 5,95 - SUISSE 12 FS - Canada 8,95 $ CAN € € avec Zend Framework Mettre en oeuvre Groovy • Développer avec Eclipse 3.3 F: - TOM 940 XPF - MAROC 50 DH - € - 102
Services Web BELGIQUE 6,45 Printed in France - Imprimé en France - - Imprimé en France Printed in France
Utiliser les annuaires UDDI Développer avec Scriptaculous LUXEMBOURG 6,45 M 04319 DOM Surf 6,90 3:HIKONB=^UZ^Z]:?a@l@a@m@a; Couv 102 22/10/2007 15:56 Page 2 03_05 102 22/10/2007 17:18 Page 3
Programmez! LE MAGAZINE DU DÉVELOPPEMENT Supplément éditorial n°102 RIA Web
Adobe AIR bêta 2 Microsoft Créez des logiciels riches, connectés à Internet. Expression Web Runtime d’exécution complet. Outil professionnel de création de site web dynamiques. O SweetDev RIA 1.0.2 Allez au-delà d’Ajax sans vous soucier de Créez plus rapidement vos applications PHP grâce N 102 Javascript ! Créez rapidement vos applications à la simplicité du framework Zend, à l’intégration SOMMAIRE ou faites évoluer vos sites JSP / Struts. d’Ajax, au support de PHP 5. .Net MacOS X itées, selon les éditeurs et présentées en anglais ou en français. itées, selon les éditeurs et présentées en anglais ILOG m Diagrammer for .Net release 4 Concevoir et publier des Environnement complet de développement diagrammes et graphiques Générer un code .Net en langage basic. Multi plate forme sur son site web. de qualité. MacOS X, Windows et Linux. ent • Les versions peuvent être li ent • Les versions peuvent être
>Actus Plongez au coeur de 4D v11 SQL m Un environnement ouvert et évolutif ...... grâce à l’adoption de nombreux standards L’actualité en bref 6 comme l’intégration native du SQL, le support de l’Unicode, la prise en charge du SVG, ainsi que le support étendu de ODBC, XML et des Web Agenda ...... 8 Services SOAP. 4D met ainsi à la disposition des développeurs tous les outils www.4d.fr nécessaires à la création de puissantes applications professionnelles. Echantillon gratuit • Ne peut être vendu séparé Echantillon gratuit • Ne peut être > Evénements CD-Rom 102 PROGRAMMEZ ! Adobe MAX 2007 : collaboratif, communication et développeurs ! ...... 10
PC Soft dévoile WinDev 12 ! ...... 14 RIA Sweetdev RIA Allez au-delà d’Ajax sans vous soucier de > SGBD Javascript ! La bibliothèque de tags Ajax permet 4D v11 SQL : utiliser le moteur SQL ...... 16 de créer rapidement vos applications ou de faire évoluer vos sites JSP / Struts. >GrosPlanMac Adobe AIR bêta 2 Découvrez la plate-forme Rich Desktop MacOS X et le développeur ...... 20 Application d’Adobe pour créer des logiciels Le développement Web sous Mac ...... 21 riches, connectés à Internet. Runtime d’exécu- MacOS X : l’OS des développeurs ? ...... 22 tion complet. Quartz : l’alternative ? ...... 24 Web Microsoft Expression Web Outil professionnel de création de sites web > Dossier Google : RIA dynamiques, basé sur les standards du web et La révolution de l’interface web ? ...... 28 les technologies Microsoft. Version complète, 60 jours Choisir une solution RIA...... 30 Les 7 technologies en présence ...... 34 Aptana IDE 1.0 Flash, Flex, AIR, dans l’univers des RIA ...... 40 Environnement de développement intégré (IDE), pour créer des sites web dynamiques. Java FX : une nouvelle manière de construire des applications Swing ...... 42
La RIA selon Microsoft : WPF – Silverlight – AJAX ...... 46 Zend Framework 1.0.2 Créez plus rapidement vos applications PHP Quelle sécurité pour les applications RIA ?...... 53 grâce à la simplicité du framework Zend, à l’inté- gration d’Ajax, au support de PHP 5. > Technique .Net Accéder au code du framework .Net avec Visual Studio 2008 ...... 55 ILOG diagrammer for .Net JBoss Seam… le fil à coudre extensible pour les architectures JEE ...... 57 Boîte à outils pour concevoir et publier des dia- grammes et graphiques de qualité sur son site web. Compatible avec ASP.Net Ajax. > Développement Web Version complète 15 jours Exploiter un site web 2.0 ...... 60 Codefluent Construire des applications MVC avec le Zend Framework ...... 63 Générer un code .Net de qualité grâce à la fabrique logicielle orientée modèle CodeFluent ! >Code Vous modélisez votre application puis la géné- rez… Version complète, 60 jours Utiliser UDDI intelligemment (1re partie)...... 67
Pourquoi faut-il s'intéresser à Groovy ? ...... 69 MacOS X Realbasic 2007 release 4 Scriptaculous : JavaScript au secours de l’ergonomie des applications web ...... 71 Environnement complet de développement en lan- Mettre en œuvre Eclipse 3.3...... 73 gage basic. Multi plate forme MacOS X, Windows Incorporez vos composants Swing et JFreeChart dans vos documents PDF...... 76 et Linux. Sur le cd-rom : version complète MacOS, durée : 15 jours, renouvelable. Liens pour téléchar- >Tempslibre gez les versions Windows et Linux Ludique ...... 80 4D v11 SQL permet de développer rapide- ment et facilement de puissantes applications Les livres du mois ...... 82 professionnelles monopostes, client/serveur et Internet riche (RIA) sur plates-formes Donnez votre avis sur ce numéro Windows et Mac. Configurations requise : Windows : Pentium III www.programmez.com/magazine_satisfaction.php Windows Vista, Windows XP. Mac OS : Mac Intel ® or PowerPC (G5 recommandé) Mac OS 10.4.5 ou +
Programmez! - N°102 3 NOVEMBRE 2007 03_05 102 22/10/2007 16:00 Page 4
Altova® XMLSpy ® 2008 – The industry standard XML development environment.
Plongez au cœur de l’intelligence XML
Avec XMLSpy®, approfondissez votre connaissance du développement XML. Nouveautés dans la version 2008: l Prise en charge des formats Microsoft® Word, Excel, et maintenant PowerPoint Open XML l Edition directe du contenu des bases de données via une fenêtre de requête pour bases de données l Evaluation XPath sur plusieurs fi chiers à la fois l Prise en charge de XInclude et XPointer
Altova® XMLSpy, l’environnement de développement XML de référence, est indispensable pour modéliser, éditer, transformer et déboguer des applications XML. Doté d’un designer graphique original de schémas, d’un générateur de code, de convertisseurs de fi chiers, de débogueurs, de profi leurs, d’une intégration totale des bases de données, d’une prise en charge XSLT, XQuery, WSDL, SOAP et d’une foule d’autres fantastiques aides et utilitaires XML, ce leader mondial dans le domaine des éditeurs XML vous permettra d’offrir une nouvelle dimension à vos projets. Vous aussi, devenez un génie de la programmation! Téléchargez XMLSpy® 2008 dès aujourd’hui: www.altova.com
XMLSpy est également disponible au sein de MissionKit™, l’offre groupée Altova déjà primée. p l
co
XMLSpy_Programmez.inddXMLSpy Programmez.indd 1 9/17/2007 3:35:26 PM 03_05 102 22/10/2007 18:33 Page 5
L’info permanente Édito EN BREF Le pouvoir de dire " ouvert " Certains sont toujours en verve pour critiquer Microsoft ou tout autre éditeur quand ils n’ou- vrent pas leurs codes. On n’entend guère de réaction quand Microsoft décide de montrer le code source de .Net aux développeurs ou quand l’OSI approuve deux licences de l’éditeur : la Public Licence et la Reciprocal Licence… Sans doute une angine blanche soudaine. Et les surprises ne s’arrêtent pas là. Depuis un peu plus de deux ans, l’éditeur tisse des accords avec JBoss, Zend, Novell, Sun, XenSource, et d’autres, pour mieux intégrer leurs tech- nologies et outils à Windows : optimisation, interopérabilité des formats, compatibilité systè- me pour la virtualisation, prise en compte des nouveaux systèmes, etc. Savez-vous qu’il existe un Monsieur " Stratégie Open Source " chez l’éditeur ? Si, si, je lui ai même serré la main ! Sam Ramji, c’est son nom, est également responsable de la stratégie plate-forme (Windows) ! La concurrence de l’open source parait être un débat aujourd’hui dépassé pour Microsoft, qui Programmez!grammez! en fait plutôt une opportunité de croissance pour son business ! J’imagine Sam Ramji dire : LE MAGAZINE DU DÉVELOPPEMENT " bon, les gars, vous avez un produit ouvert très utilisé sous Windows, comment on fait pour Rédaction : [email protected] améliorer le support de notre système dans vos outils ? " Et il pourrait ajouter " pour que les Directeur de la Rédaction : Jean Kaminsky clients continuent à utiliser Windows, et qu’on vende de nouvelles licences… ". Rédacteur en Chef : François Tonic Nous sommes là dans du pragmatisme économique ! Ont collaboré : F. Mazué, G.Delamarre, F. Remy, H. Darmet, S. Leroux, A. Vannieuwenhuyze, J. Saiz, E.Groise, F. Deshayes, Un écosystème open source autour de Windows. G. Renard, A. Crepet, F. Valenza, G. André, F. Dewasmes, Les grands projets et outils ouverts tournent sous Windows. Ce n’est pas un hasard si des J-F Lefevre, M. Vialette, W. Bories. éditeurs comme Zend ou Jboss collaborent avec Redmond pour optimiser le support, travailler Dessin : Jissey en amont sur les nouvelles versions : la base installée en Windows justifie cette approche Maquette : AJE Conseils main dans la main, qui satisfait finalement tout le monde. Publicité : Régie publicitaire, K-Now sarl Et Microsoft n’hésite pas à mobiliser des ingénieurs maison pour aider à la tâche ou tout Pour la publicité uniquement : Tél. : 01 41 77 16 03 [email protected] simplement développer des passerelles ou des pilotes d’intégration comme entre Zend Core Editeur : Go-02 sarl, 6 rue Bezout - 75014 Paris et Windows Server ou SQL Server ! Et des codeurs Firefox sont même allés à Redmond pour [email protected] - Dépôt légal : à paru- améliorer le support de Vista par le navigateur. tion - Commission paritaire : 0707K78366 - ISSN : L’écosystème open source passe aussi par les développeurs. La forge Codeplex offre déjà 1627-0908 - Imprimeur : ETC - 76198 Yvetot près de 2000 projets, des licences identiques à la GPL ou la BSD pour y mettre le code sour- Directeur de la publication : Jean-Claude Vaudecrane ce. Et cette tendance va s’accentuer. L’éditeur va ouvrir de nouveaux codes : le code frame- Ce numéro comporte un CD Rom. work .Net (même si cela reste limité à Visual Studio et en lecture seule), la future DLR de Silverlight 1.1. Abonnement : Programmez 22, rue René Boulanger, 75472 Et dès maintenant, la virtualisation mobilise de très importants efforts avec Novell et Sun. Les Paris Cedex 10 - [email protected] surprises risquent d’être nombreuses dans les prochains mois. Tél. : 01 55 56 70 55 - Fax : 01 55 56 70 20 - du lundi au jeudi Et si, finalement, Microsoft devenait un ami du monde ouvert ? Choquant, étonnant ? Oui sans de 9h30 à 12h30 et de 13h30 à 17h00, le vendredi de 9h00 doute un peu, mais Microsoft apprend vite. Et les éditeurs libres ont aussi compris que leurs à 12h00 et de 14h00 à 16h30. utilisateurs Windows ne désirent pas forcément changer de système. Business is business. Tarifs abonnement (magazine seul) : 1 an - 11 numéros France métropolitaine : 45 € - Etudiant : 39 € - CEE et J’ai demandé à Sam Ramji si Microsoft pourrait offrir demain un Windows commercial à côté Suisse : 51,83 € Algérie, Maroc, Tunisie : 55,95 € d’un " OpenWindows " gratuit … Après tout, Sun, Red Hat ou Novell ont ce type d’offre pour Canada : 64,33 € Tom : 79,61 € - Dom : 62,84 € Autres Linux/Solaris ! On m’a gentiment botté en touche sur cette hypothèse… pour le moment. pays : nous consulter. PDF : 30 € (Monde Entier) souscription en ligne. ■ François Tonic - [email protected]
Souriez PROCHAIN NUMERO avec Jissey www.programmez.com N°103 - Décembre - Parution : 30 novembre 2007 chaque semaine, un gif animé Développer Processeurs plus rapidement avec multicoeurs les composants Les derniers processeurs possèdent 2 ou 4 coeurs. Pourquoi et comment les Comment prendre en compte composants vous font-ils coder plus vite ? le multicoeur dans son code ?
XMLSpy_Programmez.indd 1 9/17/2007 3:35:26 PM 06-07 22/10/2007 17:23 Page 6
Actu EN BREF
MODÉLISATION masse, générer un projet, récupérer les métadonnées d'une base, etc.). L'utilisation de XUL/JavaScript à la place de SWT/JFace/Java ainsi que Together en édition 2007 les templates simplifie grandement le développement de générateurs de code et permet ainsi de créer rapidement des wizards adaptés aux besoins spécifiques d'une application. Parmi les fonctionnalités offertes par Akrogen, on retiendra : ensemble riche de composants XUL (tree, listbox, etc), data binding entre champs de composants et variables javascript, mise à jour de fichiers XML, properties et Java, etc. Disponible en licence GPL. Site : http://akrogen.sourceforge.net/fr/
ARCHITECTURE BEA veut révolutionner l’application L’éditeur Bea veut redonner la main aux utilisateurs. C’est dans cette optique que durant sa grand’ messe à Barcelone début octobre, l’édi- teur a dévoilé un ambitieux projet : Genesis, qui a pour but de changer la Borland a dévoilé courant octobre la nouvelle version de son outil de création d’applications. L’application est actuellement plutôt un choix modélisation, Together. Cette version prend en compte les langages de l’informatique et non du métier ou de l’utilisateur. Avec l’apparition spécifiques de domaines (ou DSL en Anglais) et tente de simplifier l’ap- de la SOA, on modifie la création d’applications. On compose des appli- proche MDD (model driven development). L’environnement supporte cations avec des services pour aboutir à une application cohérente désormais les DSL, UML, BPMN ou encore l’entity-relationship. Together mais pas forcément complète. Cette nouvelle génération d’applications 2007 inclut un DSL Toolkit pour aider les utilisateurs à créer une plate- sera composée par l’utilisateur selon ses envies, ses désirs, un peu forme neutre pour le design et capable d’adresser de multiples plates- comme aujourd’hui avec le mashup. Bea reprend à son compte le terme formes dans des domaines spécifiques. Il comprend des éditeurs " Dynamic Business Application ". On part du constat que le métier et graphiques, une transformation modèle – modèle, de la documentation les besoins métiers changent et donc qu’ il faut pouvoir adapter très ou encore des métamodèles. Cette version propose aussi : le support rapidement une application, d’où l’idée de proposer une composition .Net avec génération C# (en plus de java, C++), cela se fait à partir d’un d’applications même si le développeur reste central pour créer les nou- modèle UML, un brainstorming de notation visuel pour élaborer des veaux services. Pour que cela réussisse, il faut pouvoir disposer d’ou- idées et associer des notifications (basé sur le DSL Toolkit). Enfin, l’outil tils. Pour Bea, ces outils auront une logique SOA, car SOA est au cœur implémente le reporting BIRT. Together 2007 s’appuie sur Eclipse et se de Genesis, ainsi que les notions Web 2, sans oublier une couche de veut conforme aux spécifications MDA. BPM pour créer et gérer les processus métiers. Courant novembre, on devrait connaître le calendrier du projet Genesis. On s’attend à une GÉNÉRATION concrétisation d’ici 6 à 18 mois. La cible est uniquement l’entreprise. Car Genesis s’appuie sur l’infrastructure (que Bea fournira). Le point Une génération de code d’entrée de ces applications composées est le portail qui redevient un sous Eclipse avec Akrogen élément stratégique. C’est à partir de cette entrée que l’utilisateur verra et créera ses applications. C’est en quelque sorte du mashup évolué associé au concept de SaaS. Reste maintenant à voir concrètement le projet Genesis. Car si l’idée de remettre l’utilisateur au centre est belle, idée maintes fois reprise par les éditeurs, il faut passer du concept à la réalité et là, il y aura la maturité du marché à considérer. Il commence à peine à mettre réellement en œuvre SOA. Le mashup propose une approche similaire, fallait-il l’englober dans un nouveau concept, l’avenir nous le dira.
GÉNÉRATION Netfective passe à Eclipse ! L’éditeur Netfective Technology a dévoilé son plug-in de génération de code pour l’environnement Eclipse (3.x). Blu Age permet de générer du Akrogen est un plug-in Eclipse de génération de code orienté compo- code pour Java EE et .Net, tout en s’appuyant sur les spécifications sants. Il se base sur les wizards d'Eclipse. La présentation des pages MDA. De plus, L’outil G-Marker, permet la personnalisation du généra- des wizards est décrite en XML/XUL (au lieu de SWT/JFace) et leur teur pour des besoins spécifiques tout en garantissant une intégration logique en JavaScript (au lieu de Java). Une page d'un wizard peut être directe assurant la gestion des données de modélisation et de leur associée soit à un template (FreeMarker, Velocity, XSL) pour générer du cycle de vie. L’éditeur sera d’ailleurs partenaire de l’événement Eclipse- code, soit à un fichier ANT pour lancer une cible (générer du code en World (début novembre, Washington).
Programmez! - N°102 6 NOVEMBRE 2007 06-07 22/10/2007 16:10 Page 7 08-09 22/10/2007 17:29 Page 8
Actu EN BREF
DONNÉES STRATÉGIE Sur le CD ROM Rational fonce vers Jazz REAL SQL Serveur 2007 L’éditeur prépare activement l’arrivée de la technologie collabora- renforce les données tive Jazz. En juin dernier, Rational a dévoilé la première bêta de L’éditeur de REAL Basic, environnement de développement pour MacOS X Rational Team Concert, le premier outil maison utilisant Jazz. Il (inclus dans notre CD-Rom du mois), a dévoilé REAL SQL Server 2007. s’agit d’un portail collaboratif pour améliorer le travail en équipe, Il s’agit d’un serveur de base de données multi utilisateur / multi-plate- avec un fonctionnement temps réel pour les équipes de dévelop- pement. Il est conçu aussi pour les équipes agiles et s’intègre à forme destiné aux applications REALbasic. Cette version propose de des outils de type ClearCase ou ClearQuest. À terme, il s’agit de très nombreuses nouvelles fonctionnalités dont : livrer une gamme d’outils Concert. " La direction est d’intégrer Jazz - Encryption: REAL SQL Server supporte l'encryption AES256 des au cycle de vie " précise Danny Sabbah, directeur général. Jazz se fichiers de données. Ce niveau d'encryption est approuvé par la NSA veut ouvert, accessible en web services, avec un noyau sur lequel (U.S. National Security Agency) pour la protection des informations on basera les développeurs. L’objectif de Rational est de créer un classifiées. écosystème. Sur le serpent de mer RAD Community Edition (ver- - Nouveaux Clients: REAL SQL Server propose maintenant des accès sion gratuite de l’outil RAD), M. Sabbah a tranché la question : clients ODBC, PHP et C, rendant l'accès à REAL SQL Server simple à " pourquoi lancer quelque chose d’autre ? Le support d’Eclipse partir d'autres outils applicatifs, outils de reporting et interfaces web. suffit ". Bref, Rational ne devrait pas sortir d’outils gratuits ou très - Support Multi-core: REAL SQL Server tire avantage de tous les proces- peu chers. L’objectif de l’éditeur est de proposer des composants seurs disponibles, permettant une meilleure montée en puissance à valeur ajoutée pour pouvoir se différencier des autres éditeurs mais aussi de l’open source qui est un concurrent comme un pour les grosses bases de données. autre, surtout sur les outils dits de commodité, comme les IDE L’édition Développeur est gratuite et accessible directement via le site pour lesquels l’open source est fortement présent.Sur la future de l’éditeur. REAL Software dévoile une nouvelle tarification, dont des plate-forme 8 de Rational, la flexibilité sera un des mots d’ordre packs multi serveurs et une option de déploiement illimité. Tous les ser- notamment sur la configuration, mieux gérer le poste de dévelop- veurs commercialisés permettent un nombre de connexions illimitées. pement, avoir une intégration de la SOA, de la gouvernance, plus REAL SQL Server est disponible à l'unité au prix de 400 Euros H.T. Le transparente. La v8 devrait apparaître vers le milieu de 2008. pack de 5 serveurs est à 1 600 Euros H.T. et le pack de 10 serveurs à 2 400 Euros H.T.
AJAX Sur le SweetDev RIA : CD ROM Agenda NOVEMBRE 2 séminaires gratuits, organisés pour faciliter le développement Ajax CNIT Paris La Défense, du 13 au par Objet Direct 15 Novembre 2007 AJAX dans vos projets Web, ERP, Solutions E-ACHATS, Solu- aujourd’hui et demain : 16 tions MVI/CRM, Solutions BI, Ser- novembre à Paris, 20 novembre à veurs & Applications, Solutions Toulouse, 4 décembre à Grenoble, DEMAT’, Solutions FINANCES 13 décembre à Lyon www.infopromotion.fr Java EE 5 : évolution ou révolution de Java EE ? : 20 novembre à Toulouse Du 15 au 17 novembre www.objetdirect.com Paris web 2007 Conférences et débats pour les Objecteering 6.1 acteurs du web. Nouvelle Version www.paris-web.fr Séminaires gratuits - tour de France automne 2007 Tour de France Silverlight Microsoft Paris 15/11 – Rennes 20/11 – Lyon, jeudi 15 novembre, Marseille, Toulouse 13/11 - Lyon 22/11- mercredi 21 novembre, Paris, Sophia Antipolis 27/11 mercredi 28 novembre www.objecteering.com http://www.microsoft.com/fran- ce/events/event.aspx?Even- Le 30 Novembre 2007, Paris tID=1032350906 Hilton Tour Eiffel, Comment faciliter le développement des applications Ajax ? IDEO Tech- Journée " MD Day ", à l’initiative nologies apporte une réponse avec SweetDEV RIA, une bibliothèque de Paris la Défense, Du 21 novembre de Lyria, en partenariat AVEC Mia tags Java pour Ajax. Elle permet de rapidement créer des interfaces au 22 novembre 2007 software, Obeo, Objecteering, Objet Direct. Etat des lieux sur les riches que l’on peut rajouter à ses applications comme par exemple Forum intégration, infosecurity, stockage expo,RFID retours d'expérience de l'approche dans des pages JSP. On peut ainsi moderniser les applications Java http://www.infosecurity.com.fr/ Model-Driven - www.mdday.fr actuelles sans tout réécrire… Actuellement la version 2.2 est en cours www.integration.fr www.rfid-show.com Du 8 novembre au 4 décembre, de développement / finalisation. On bénéficie de nouveaux composants Tour de France PC Soft, comme l’accordéon, un nouveau menu, des modifications dans la docu- www.pcsoft.fr mentation, la fixation de bugs. Le projet est accessible sur sourceforge.
Donnez votreProgrammez! avis sur- N°102ce numéro8 NOVEMBRE www.programmez.com2007 08-09 22/10/2007 16:13 Page 9
Actu EN BREF Sur le CD ROM SOA COMPOSANT Parasoft équipe .Net pour la SOA Ilog sort Diagrammer pour .Net L’éditeur américain Parasoft a dévoilé son nouvel outil : SOAtest 5.5. L’éditeur français propose Diagrammer pour .Net. Il s’agit d’un outil de Cette solution vise à tester et à mieux qualifier les services pour les création de diagrammes simples et complexes que l’on intègre dans les architectures de services. Il s’intègre désormais à Visual Studio Team Win et Web Forms. On peut créer toute sorte de représentation. Il est System for Software Testers et prend en compte Windows Communica- compatible avec ASP.Net Ajax. Il dispose de trois outils d’éditions pour tion Foundation de .Net, brique de base pour la SOA chez Microsoft. construire des éditeurs de modélisation, de processus métiers et de SOAtest a pour objectif d’aider le développeur à fournir des services de diagrammes UML. Il dispose aussi qu’un SDK incluant des exemples et qualité et surtout à mieux contrôler la qualité de la SOA. On peut ainsi est accessible à tous les langages .Net. Site : www.ilog.fr vérifier les WSDL, tester l’annuaire UDDI (vérification des requêtes, test de montée en charge), utilisation de métrique pour la montée en charge. SGBD On peut même tester la sécurité contre les intrusions. Côté plate-forme, outre .Net, il supporte BEA, IBM et SoftwareAG. Pervasive renforce son SGBD embarqué L’éditeur a dévoilé la version 10 de PSQL Summit. Il s’agit d’un SGBD INTÉGRATION embarqué. Non disponible pour l’utilisateur final, cette solution vise les ISV, VAR et autres intégrateurs pour incorporer une base de données Talend lance officiellement la v2.2 embarquée de taille réduite. Cette version apporte plusieurs nouveau- L’éditeur open source d’intégration de données, Talend, vient de lancer la tés intéressantes : compatibilité avec Windows Vista (le support de Win- version 2.2 de son environnement Talend Open Studio, ainsi que d’Activi- dows Server 2008 est déjà en cours), support du 64-bit, support du ty Monitoring Consol/Personnal Edition. L’éditeur indique que 100 000 Xtreme I/O. Il s’agit d’un système d’entrée / sortie haute performance utilisateurs ont téléchargé l’outil d’intégration. La v.2 prend mieux en pour les gros débits. compte SOA, introduit de nouveaux connecteurs et assure la gestion de Sur SQL, on bénéficie d’une extension de syntaxe pour assurer une procédures stockées Oracle, SQL Server, Ingres, MySQL, DB 2. La partie meilleure compatibilité avec les applications SQL. La technologie d’Ins- monitoring. Il centralise le contrôle de l’exécution distribuée des jobs d’in- tallshield permet de migrer et déployer plus rapidement. Une version est tégration de données et permet de créer des rapports et alertes. disponible gratuitement sur le site de l’éditeur. 10-12 22/10/2007 16:15 Page 10
Événements EN BREF Adobe MAX 2007 : collaboratif, communication et développeurs ! Pour un premier essai en Europe, la conférence MAX d’Adobe a rempli ses objectifs : 4 journées intensives, mille personnes, 210 sessions et laboratoire, 2 keynotes, une dizaine d’exposants, une demi-douzaine d’annonces, des plannings produits, des surprises ! Heureusement, la ville de Barcelone assurait des soirées détente pour se reposer.
ès la première keynote, le simple RIA - RDA qui pointe son ton était donné : RIA, RDA nez. On en a déjà une première D (pour le desktop), person- preuve avec les extensions AIR nalisation du contenu au lieu dont bénéficient Dreamweaver d’un contenu et d’une interface et Flash. uniforme. Et surtout, rappeler que l’on doit placer le contenu Communication, au-dessus de tout (IL est roi) et collaboration, faire une application pour l’utili- intégrateur sateur et non pour le plaisir du Les grandes surprises eurent lieu développeur. La vidéo fut aussi dans la seconde keynote, avec la un axe central de la session démonstration de trois projets qui inaugurale. L’éditeur annonce promettent beaucoup pour 2008 : que 90 % des vidéos en ligne Pacifica, CoCoMo et Thermo. sont sous Flash ! Et pour renfor- Pacifica est l'environnement de cer, la vidéo Flash, l’éditeur voix sur IP (VoIP) de l'éditeur ! Il compte beaucoup sur le Flash permettra d'intégrer, de créer des Media Player (actuellement en applications communicantes pré-version). Il s'agit de fournir implémentant des possibilités de aux utilisateurs la possibilité de VoIP, de vidéo, etc. On bénéficie naviguer, de créer, de monter des de la haute qualité de la voix pour séquences avec une interface la le chat, on peut faire de la messa- plus intuitive possible. Le Media gerie instantanée, de la gestion Player promet beaucoup même si de présence. Le modèle de déve- maintenant il faut voir les amélio- loppement est Flex avec html, rations par rapport à Flash. Quoi flash, flex, javascript. Il fonctionne qu'il en soit, les démonstrations sous Internet Explorer et Firefox. méritent le détour. L’éditeur rap- Dans la roadmap, l'éditeur ambi- pelle qu'il supporte H264, le côté tionne de rajouter la vidéo pour le Keynote d’ouverture. video tire parti du matériel, et en chat, un véritable système P2P, le particulier du multicore ou encore d'un support multi-langue très du bonheur, la 3D sera supportée support complet de AIR ! Bref, le support du framework de puissant, des API Texte dispo- par défaut. La plate-forme AIR ne Adobe souhaite ne laisser aucun cache de Flex. nibles dans le player... Les nou- fut pas oubliée, bien au contraire. espace à Microsoft qui sort Sur la partie mobile, Flash Lite 3 veautés concerneront aussi Il s’agit pour Adobe d’étendre les actuellement sa stratégie "com- supporte la video. l'image manipulable en ActionS- applications Flex sur le desktop, munication unifiée". L'avantage cript. On disposera d'un langage tout en y apportant des fonction- d'Adobe est de s'appuyer sur des Astro est dans l’AIR pour créer des effets et des filtres nalités supplémentaires comme technologies existantes. Une bêta Concernant Flash, l’éditeur a que l'on pourra appliquer sur des le glisser-déposer, la gestion des privé devrait être déjà disponible. dévoilé le projet Astro, le Flash animations, vidéo. fichiers locaux, etc. Pour cela, le Aucune date de sortie officielle Player 10 ! La partie texte a été Il tirera parti des processeurs développeur dispose d’API. n'a été donnée (peut-être courant revue en profondeur avec l'ajout nouvelles générations, et comble A terme, c'est la fusion pure et 2008).
Programmez! - N°102 10 NOVEMBRE 2007
IN 10-12 22/10/200716:15Page11 N 12 rgamz2x8id 1 indd 21x28 Programmez 71022 IND et intégralementdesapplicationsJavaEE.NET. Avec lelogicielBLUAGE™,éditéparNETFECTIVETECHNOLOGY,lesentreprisesgénèrentautomatiquement du codesourcedesapplicationsmétierssansruntime. graphiques auformatXHTMLpourgénérerl’intégralité métiers auformatUML®/OCLetlesinterfaces BLU AGE™ interprètelesspécificationsdes processus modélisation. MDA® (ModelDrivenArchitecture)fondéesurla BLU AGE™ estuneimplémentationpragmatiquedu UML ANALYSE PACKAGEE APPLICATION XHTML MAQUETTE TECHNIQUES COMPOSANTS J2EE .NET APPLICATION GENERATOR blu
age ™ avec unemaîtrisedescoûtsaccruts.’ enjeux deladistribution.Faireplusvite,fairemieux, ‘Les directionsinformatiquesfaceauxnouveaux jeudi 15&22novembreà16:00h & GRANDEDISTRIBUTION WEBINAR MDD™ (deux webinarsparsemaine) BLU AGE™.Inscrivez-voussurwww.bluage.com Assistez gratuitementàunwebinardeprésentation www.bluage.com Toutes lesmarquescitéessontlapropriétédeleurspropriétaires respectifs BLU AGE™estunemarquedéposéeNETFECTIVETECHNOLOGY 21/0709:43:28 22/10/2007
© Eric AUDRAS - PhotoAlto 10-12 22/10/2007 16:16 Page 12
Événements EN BREF
Le second volet de la straté- finaliser le projet. Flash Next gie " communication " n’est pas réellement Flash passe par la collaboration. v11 mais plutôt un lot de fonc- Ce rôle est joué par le projet tions que l’on pourrait voir CoCoMo (pour Commun apparaître dans les futurs Collaboration Model). Il Flash. Par exemple, on peut s'appuie sur l'environne- modifier directement sur le ment Acrobat Connect tracé le déplacement des (anciennement Breeze). objets, le résultat est très L'objectif est de fournir une convaincant dans la souples- solution de collaboration se d’utilisation. D’autre part, temps réel, avec les fonc- et ce fut certainement un des tionnalités suivantes : des musts de la conférence, une messages et échanges de fonction cinématique. Par données en temps réel, une exemple, on dessine un objet communication audio vidéo en plusieurs parties. Grâce à par streaming, une gestion de mise à niveau. Autre petite surpri- Le SDK est divisé en modules et la cinématique, on peut animer en l'identité, des permissions, de la se, l'apparition du MXML Gra- chacun aura un ingénieur Adobe quelques secondes l’objet présence, la possibilité d'utiliser phics, qui peut être vu comme comme "propriétaire". Sur l'éven- comme un bras de lampe, etc. Et des documents, des media. On une réponse d'Adobe à XAML qui tualité d'avoir des sous-projets, la surtout, l’interactivité cinéma- verra les différents intervenants sert dans les outils Expression question n'est pas tranchée. Les tique reste active quand on génè- en vidéo, en audio, avec accès à Blend et Design pour créer les contributions extérieures seront re la vidéo ! Une autre de la messagerie instantanée, la interfaces. Quoi qu'il en soit, possibles mais le code devra être démonstration abordera l’utilisa- possibilité d'accéder à un tableau Adobe ne veut pas laisser de validé (ou rejeté) par le propriétai- tion de Coldfusion dans une appli- blanc collaboratif. CoCoMo s'utili- marge à Microsoft et cela le re du projet. En cas d'acceptation, cation AIR (avec présentation d’un sera dans les applications Flex via confirme. la contribution rejoindra le code nouveau tag ColdFusion dédié à un SDK. Pour le moment, aucun officiel. Enfin, Adobe restera seul AIR) et surtout, on peut gérer le agenda d'annoncé. Flex 3 en open source maître à bord pour les fonctionna- mode connecté / déconnecté. Ce On termine la partie projet avec Ce ne fut pas une réelle surprise, lités et la roadmap. Des "comit- qui peut donner une dimension une présentation de Thermo. Flex 3 est en open source. MAX a ters", comme dans les projets intéressante aux futures applica- Comme on l’a dit et redit, Thermo permis de préciser certains libres, existeront (et approuvés tions RIA / RDA. est l’outil de design RIA par excel- points. Tout d’abord, Flex 3 ne par le management d'Adobe SDK). lence ! Mais la question est de sera pas entièrement ouvert. Pour La disponibilité du code se fera Où va Adobe ? savoir si l’outil est fait pour le les sections ouvertes, on notera avec la sortie de Flex 3, c'est-à- Si 2007 fut l'année du designer, designer ou pour un rôle d’intégra- parmi les longues listes, les élé- dire début 2008. du web, de la vidéo, le coeur de teur (faisant le lien entre le code ments suivants : MXML, le compi- métier d'Adobe avec la sortie de et le graphisme) ? C'est un outil lateur ActionScript 3, les utilitaires Les possibles la Creative Suite 3, 2008, sera de création pour créer le design de visualisation de code, des futurs projets… marquée par le développement, le des applications Flex. On aboutit librairies Flex et AIR comme les Un classique de ce genre de collaboratif, et les nouvelles donc à l'offre suivante : Flex Buil- composants, les tags graphiques, conférence, montrer des projets, plates-formes et outils (Flex 3, pro- der pour le développeur, Thermo plusieurs SDK. Pour les éléments des idées de laboratoires. MAX a jets CoCoMo - Pacifica - Thermo, pour le designer. Cela ressemble fermés, on notera les binaires des dévoilé quelques travaux en cours AIR et Flash Player 10). Adobe vise quelque peu à la gamme Expres- SDK de distribution, le Core AIR qui pourront ou non voir le jour ! donc clairement aujourd’hui le sion de Microsoft, même si pour API Definition, le Core Player, Flex On débute par Flash Home for développeur pour continuer à Microsoft, on dispose de deux Builder, Flex Profiler (outil qui Mobile. Il permet de fournir un étendre la présence de Flex / outils : Blend et Design. Pour apparaît avec Flex 3)... Pour com- contenu dynamique et personnali- Flash sur le web et le desktop. À autant, Flex Builder n'est pas pliquer un peu plus les choses, sable au sein du Flash Lite. On terme, il s’agit de proposer une oublié. La prochaine version béné- ces codes ouverts et fermés peut, par exemple, personnaliser plate-forme intégrée, peut- être ficiera de nombreuses améliora- seront placés en licence Mozilla, les couleurs, les icônes, les ani- basé sur MXML. tions et nouveautés : support en licence commerciale mais il mations, implémenter une fonc- Quoi qu’il en soit les ambitions d'un runtime MXML, formatage du sera possible de mixer Mozilla tion de push (la démonstration a d’Adobe sont grandes, reste à code amélioré, un model driven UI Public Licence, LGPL et GPL. Cette montré que selon la localisation créer une communauté de dévelop- et un gros travail sur l'optimisa- partie demandera quelques préci- de l’appel, on peut afficher une peurs forte et dynamique, comme tion (notamment du compilateur). sions à la disponibilité effective image particulière…). La possibili- on peut en avoir du côté Microsoft. On utilisera un Flex UI Framework de l'ensemble. La gouvernance té semble plutôt intéressante, et le rich media bénéficiera d'une reste du seul ressort de l'éditeur. reste à voir comment Adobe va ■ François Tonic
Programmez! - N°102 12 NOVEMBRE 2007 10-12 22/10/2007 16:16 Page 13
MDD - Model Driven Development Objecteering 6 Le développement guidé par le modèle Objecteering 6 optimise MDA et UML2 pour générer un code d’un haut niveau d’expertise : il maximise la productivité et la qualité des développements en Java, C++ ou C#.
omment tirer parti au mieux de la modélisation UML à des fins de pro- C duction automatisée d’un code de qualité, maintenu en cohérence avec le modè- le ? Comment guider les développeurs dans leur modélisation et optimiser la production de code pour des architectures orientées ser- vices (SOA) s’appuyant sur des frameworks complexes ? L’approche MDA qui consiste à exploiter le modèle par des mécanismes de transformation répond précisément à ces pro- blématiques en assurant également la traça- bilité entre le code généré, le modèle dont il est issu et les exigences qui le justifient. Avec Objecteering 6, Objecteering Software met à disposition des développeurs une nouvelle génération d'outils de développement guidés par le modèle, en s'appuyant sur les dernières avancées de MDA et de UML2. Objecteering 6 Diagramme d’activité.
L’expression des besoins Objecteering la maîtrise d’œuvre fera appel aux Le maintien en cohérence des exigences, intégrée à la modélisation UML assistants UML pour le transcrire en un modèle du modèle, des diagrammes, du code Réussir l’expression des besoins de votre appli- riche des diagrammes du standard UML 2.1 pour et de la documentation cation est le point de départ fondamental pour le la précision des besoins de l’analyse. A ce stade La génération automatique de code pour les succès du développement. Objecteering 6 intègre des liens dits de traçabilité ont été automatique- cibles Java/J2EE, C# .Net, C++, Corba, Fortran la gestion des exigences avec la modélisation ment créés afin de vous assurer de la pertinence ou SQL, supportant des frameworks tels que UML. Vous démarrez dès la phase de définition de votre modélisation en regard des exigences. Spring, JSF, Struts et Hibernate ou des frame- des exigences, et poursuivez sans rupture jus- Inversement, tout enrichissement de votre works spécifiques comme les architectures qu’aux modèles d’analyse et conception. Vous modèle se traduit par un enrichissement du réfé- SOA apporte des gains substantiels en qualité pouvez ainsi obtenir un modèle des exigences rentiel que vous savez tracer vers une exigence et en productivité. La génération de documenta- complet qui vous permettra d’aborder les étapes donnée. Un document mis à jour peut alors être tion permet de fournir des documents, dédiés à d’élaboration de votre application sur des bases produit pour la maîtrise d’ouvrage. chaque type d’acteurs, pour les exigences, le solides et justifiées par les besoins. modèle et le code. Le référentiel unique est Une réelle assistance à la garant de la cohérence, de la traçabilité et de la Une meilleure communication entre la construction des modèles non redondance des informations. maîtrise d’ouvrage et la maîtrise d’œuvre Avec UML2.1 le standard de l’OMG est devenu un UML n’est pas le langage courant de la maîtrise langage riche et complet pour couvrir le besoin en d’ouvrage et le cahier des charges est le plus modélisation d’entreprise et de systèmes tech- souvent fourni sous forme d’un document tex- niques. Il est de ce fait aisé de commettre des Venez découvrir tuel. Objecteering 6 importera alors votre expres- erreurs de modélisation, et d’obtenir des Objecteering 6.1 sion de besoins et vos définitions directement modèles inconsistants. Objecteering 6 est doté Nouvelle Version ! depuis MS Word ou Open Office dans son réfé- d’un éditeur graphique UML sensitif qui assiste Tour de France en novembre rentiel d’exigences et son dictionnaire. Et si vous l’utilisateur à construire des modèles corrects Séminaires gratuits préférez la forme synthétique des tableaux et dès le début. L’audit de modèle qui vérifie en Inscrivez-vous sur matrices, Objecteering 6 vous fournit des édi- temps réel 282 règles sémantiques permet en www.objecteering.com teurs tabulaires dédiés exigences et dictionnaire outre d’assurer la cohérence du modèle dans sa ou contactez-nous au de vos termes métier. Dès l’instant où le recueil globalité, y compris dans le cadre d’un travail col- 01 30 12 16 60 des exigences est disponible dans le référentiel laboratif sur un modèle partagé.
Communiqué 14-15 22/10/2007 16:17 Page 14
Événements EN BREF PC Soft dévoile WinDev 12 ! Une des annonces majeures du mois concerne l’éditeur français PC Soft qui a dévoilé mi-octobre la version 12 de son atelier tout en un WinDev. Et WinDev 12 décide d’enfoncer le clou avec 500 améliorations et nouveautés ! Une version plus technique.
out d’abord, l’éditeur a Des données performantes beaucoup travaillé sur le La partie données subit elle aussi T compilateur just in time des améliorations. On notera un pour améliorer notablement ses assistant de réplication pour éviter performances (disponible unique- de la programmer. Et on peut main- ment sur Windows). Une simple tenant répliquer, même quand on recompilation permet de faire n’est pas connecté au serveur en fonctionner les applications v11 permanence. La base maison, sous la v12. Les divers éditeurs Hyper File autorise la sauvegarde à ont subi une refonte pour amélio- chaud sans déconnecter les utili- rer le confort de développement. sateurs… Astuce bien pratique, la On notera aussi que les icônes disponibilité de mettre en plus des fonctionnelles possèdent leurs triggers serveur. On dispose aussi raccourcis. Et pour améliorer de 14 nouveaux ordres SQL. Côté encore la productivité, WinDev html en texte en supprimant le for- un appel de BAPI (business API) Linux, un accès ODBC aux bases v12 intègre la commande vocale, matage propre à HTML (avec la qui permet l’interaction avec un de données comme DB2, Oracle, pratique pour les fonctions de prise en compte des caractères système SAP. Cela permet de gar- etc. a été implémenté. base et les manipulations dans spéciaux). HtmlVersRTF garde la der la sécurité de son environne- le projet. Le tableau de bord chef mise en forme du texte. XML n’est ment SAP et donne plus de Pour mieux tester de projets évolue en incluant une pas oublié avec XMLLit et XMLE- souplesse qu’une utilisation La qualité logicielle n’est pas vue globale et la visualisation de crit. Le premier lit une valeur dans ODBC. Cette intégration permet oubliée dans cette v12. Il est ainsi l’état d’avancement du projet le fichier XML en passant en para- aussi d’utiliser des interfaces possible de déboguer directement pour savoir précisément où l’on mètre le chemin de la valeur à créées sous WinDev à la place de le fichier exécutable .exe et plus en est. À noter que l’on dispose modifier. Le second fait la même SAP GUI. On remplace le frontal uniquement le code source ! d’un comptage précis du code chose en écriture. On peut aussi que l’utilisateur voit et utilise… D’autre part, on peut aussi débo- (nombre de lignes de code par maintenant affiner la gestion de la Du côté RAD, la refonte est enco- guer à distance une application développeur, par fonction, pour- résolution graphique en connais- re plus visible avec une modifica- fonctionnant sur un autre poste de centage de commentaires…). sant les cartes graphiques instal- tion complète du RAD et une travail (connectée par le réseau ou Le PDF continue à s’imposer dans lées sur le poste, les écrans personnalisation très poussée le web). Cela devrait faciliter la WinDev avec la possibilité d’utili- disponibles par carte graphique, la pour la génération des applica- maintenance et la traque de bugs ser un PDF comme fond de page, résolution des écrans. Ainsi, par tions. D’autre part, une applica- " vicieux ". On peut aussi enregis- pratique pour des formulaires pré- code, on peut modifier la résolu- tion générée n’a plus besoin trer un scénario de tests. Notons remplis. On peut aussi créer des tion d’un écran. Le développeur d’être régénérée quand on modi- aussi la compatibilité avec .Net 1.x, formulaires de saisie en PDF ou aura aussi le bonheur de pouvoir fie la base de données par 2, 3 et 3.5, un support amélioré de encore afficher un PDF dans un appeler directement dans son exemple. L’interface s’affine elle Java, l’ajout de fonctions Bluetooth champ image d’un état. À noter Wlangage des méthodes d’objets aussi un peu plus en proposant dans le Wlangage. WinDev Mobile que dans la prévisualisation des COM, des DLL exposant des inter- aux développeurs d’utiliser des évolue aussi notamment sur la per- états, on dispose maintenant faces C++. Le support de COM splitter, des zones répétées, des sonnalisation des écrans d’accueil d’un champ de recherche. Fonc- devrait étendre les possibilités carrousels. du mobile, la possibilité de piloter tion bienvenue, on peut aussi des applications WinDev sous Win- D’autre part, vous pouvez aussi un caméra de son mobile, de jouer créer des états ayant différentes dows. Côté image, outre la gestion choisir le type d’architecture sur des vidéos, etc. WebDev (pour le orientations dans le même état. de l’anti-aliasing, on peut générer laquelle s’appuie votre interface développement web) propose aussi du PNG (avec couche alpha pour la (par pattern). Et on peut aussi, si des nouveautés comme les menus Le langage évolue aussi transparence). cela est nécessaire, créer son Ajax. PHP est lui aussi mieux sup- WinDev utilise le langage maison : propre pattern. Plus non négli- porté avec l’ajout de nouvelles Wlangage. Comme à chaque ver- Du SAP en natif ! geable, la possibilité d’intégrer fonctions et un meilleur débogage. sion, il évolue. En v12, avec Html- Une des grosses nouveautés de l’encre numérique Ink des Que va nous réserver la v13 ? Verstexte, on récupère un contenu la v12 est l’accès natif à SAP via TabletPC… ■ F. Tonic
Recevez la NewsletterProgrammez! www.programmez.com/inscription.php- N°102 14 NOVEMBRE 2007
Pub_programmez_oct_2007_1.inddP 1 10/10/2007 13:58:18 14-15 22/10/2007 16:18 Page 15
Actu EN BREF
OUTILS Zend se met à Eclipse et travaille avec Microsoft Lors de la 3e conférence Zend, l’éditeur a prochaine version du langage. Une offre de dévoilé toute une série d’annonces impor- support allant du web jusqu’à un support télé- tantes pour la plate-forme PHP. Une des plus phonique 24 heures sur 24, 7 jours sur 7. Si le emblématique est le lancement de Zend Stu- Core est disponible gratuitement en téléchar- dio for Eclipse. Il s’agit d’un plug-in s’intégrant gement, les services optionnels sont payants dans l’IDE Eclipse pour pouvoir profiter de tous (à partir de 289 euros par an). les avantages d’Eclipse et du développement Plus que jamais, Zend renforce ses partena- PHP. Il s’appuie sur le projet Eclipse PDT riats avec IBM, Microsoft et Oracle pour amé- (orienté développement PHP). L’outil est liorer les performances PHP et son intégration. actuellement en pré-version (nom de code Côté Microsoft, on dispose désormais du Neon). Le développeur bénéficiera du support du framework Zend, des FastCGI for PHP. Il s’agit d’un add-on (en pré-version) destiné à IIS ser- outils de debug, des éditeurs HTML et wysiwig, d’un éditeur javascript, vant d’interface entre PHP et IIS. Cela doit améliorer les performances etc. La version finale est attendue pour début 2008. L’autre annonce de PHP sous le serveur Microsoft. D’autre part, Microsoft a dévoilé un concerne la sortie de Zend Core 2.5. Cette version apporte les fonc- pilote PHP pour SQL Server 2005 (en CTP). Cela permettra de faciliter tions suivantes : l’intégration de PHP et de son usage avec les bases SQL Server. On sait • Des extensions PHP 5.2.4 certifiées, des bibliothèques, des pilotes aussi que Zend Core supportera le futur Windows Server 2008, support de bases de données, le support des web services et tous les autres attendu courant 2008. Enfin, Zend et Microsoft ont dévoilé un autre pan composants nécessaires aux applications professionnelles. de leur collaboration : offrir une gestion d’identité optimale dans le Zend • Une installation simplifiée du stack complet pour applications PHP, Framework, en incluant le sign-on et CardSpace de .Net 3. comprenant le serveur web, les bases de données, les extensions et le Du côté Oracle, l’éditeur a annoncé un pilote PHP pour le SGBD Oracle, Zend Framework, avec désormais la possibilité d’un déploiement auto- OCI8, qui prend en compte Oracle 11g. Enfin, chez IBM, le développeur matique et l’intégration d’outils de gestion de système de référence. pourra mettre en œuvre IBM Mashup Starter Kit pour créer rapidement • PHP 5.2.4 sera supporté pendant 2 ans à partir de l’introduction de la des mashup. Ce kit utilise Zend Core et Zend Framework. Retrouvez nos nouveautés sur oreilly.fr !
Nouveau catalogue ! Recevez-le sur simple demande via notre site. Ouvrages en vente sur www.oreilly.fr et en librairie. L’informatique à la source www.oreilly.fr
Pub_programmez_oct_2007_1.inddPub programmez oct 2007 1 indd 1 10/10/2007 13:58:18 16-19 22/10/2007 16:18 Page 16
Sur le CD ROM SGBD EN BREF 4D v11 SQL : utiliser le moteur SQL Le cœur de la nouvelle version 4D v11 SQL est basé sur un nouveau moteur de base de données permettant aux développeurs de répondre aux besoins des entreprises les plus exigeantes. 4D fournit un environnement ouvert et évolutif grâce à l'adoption de nombreux standards comme le SQL, le SVG, l'Unicode, ainsi que l'ODBC, le XML et les Web Services.
’une des plus importantes nouveautés proposées par construire que les séquences de recherches en 4D traditionnel. Cela cette nouvelle version est la prise en charge du langage rend également la conception de recherches dynamiques plus simple. L SQL au cœur du moteur de la base de données. Ce Pour obtenir la liste des villes et le chiffre d'affaires par ville, pour les moteur SQL totalement intégré à 4D est globalement conforme clients dont le chiffre d'affaires est supérieur à la moyenne : à la norme SQL92 (ou SQL-2), avec toutefois certaines diffé- rences liées à des implémentations spécifiques. SELECT VILLE, SUM(CHIFFRE_AFFAIRE) FROM CLIENT WHERE CHIFFRE_AFFAIRE > (SELECT AVG(CHIFFRE_AFFAIRE) FROM CLIENT) Le langage SQL GROUP BY VILLE ; Le SQL (Structured Query Language) est un langage standard utilisé pour créer, supprimer, mettre à jour, trier et rechercher des informations stoc- Il est aussi possible de créer des requêtes paramétrées afin de rendre kées dans une base de données (Oracle, MySQL, sqllite, Ingres, les requêtes complètement dynamiques. Nous verrons d’ailleurs Postgres, Sybase ou même Access, FoxPro, Paradox... et aujourd’hui 4D). quelques exemples un peu plus tard. La cohabitation du langage 4D et Le SQL n’est pas en soi un système de gestion de données, c’est à la fois SQL permet de choisir au gré des besoins l'une, l'autre ou les deux une composante intégrée de ce système, un langage et une interface de méthodes de recherche dans la base de données. communication. Si le SQL n'est jamais parvenu à s'établir comme un lan- gage standard entièrement portable, il n'en est pas moins devenu un lan- gage raisonnablement universel. Le code SQL utilisé pour interroger une base Oracle peut ne pas être directement utilisable sur une base mySQL sans une adaptation préalable. En revanche les adaptations sont mineures et épargnent au développeur une réécriture complète. Un des atouts majeurs de SQL est donc d'être connu par un grand nombre de développeurs. Pour créer une table Client dans 4D, Oracle, mySQL … :
CREATE TABLE CLIENT Accès aux données et méthodes ( 4D à travers SQL CLIENT_ID INT32, Il est possible de faire référence NOM VARCHAR(30), PRENOM VARCHAR(30), à tout type d’expression 4D valide NATIONALITE VARCHAR(5), (variable, champ, tableau, expres- CONSTRAINT PK_CLIENT_ID PRIMARY KEY ( CLIENT_ID ) sion...) au sein des clauses ) WHERE et INTO des expressions Contrairement à d’autres moteurs de bases de don- SQL. nées, l’interprétation est complète. La table est dispo- Une option autorise l’exécution nible et éditable directement depuis l’interface de 4D. d’une méthode projet par le moteur SQL de 4D. Elle est désé- Atouts pour les développeurs lectionnée par défaut, ce qui professionnels signifie que, sauf autorisation L’apport du SQL pour le développeur va du très explicite, les méthodes projet de simple (la possibilité de construire facilement des 4D sont protégées et ne peuvent recherches complexes) au très puissant (la possibi- pas être appelées par le moteur lité de développer une application capable de fonc- SQL de 4D. Cette propriété s’ap- tionner indifféremment en monoposte, en plique à toutes les requêtes SQL multiposte et en client d'un serveur SQL tiers). internes et externes. Une méthode peut être appelée Les recherches de différentes manières : via le Les commandes SQL sont bâties en texte, ce qui permet une construc- code SQL, par des commandes ODBC, avec la commande CHERCHER tion "à la volée" grâce aux commandes de manipulation de chaînes de PAR SQL ou encore avec la commande SQL EXECUTE IMMEDIATE. caractère. Les recherches complexes sont beaucoup plus faciles à Voici la syntaxe à utiliser : {fn Programmez! - N°102 16 NOVEMBRE 2007 16-19 22/10/2007 16:20 Page 17 SGBD EN BREF tat_méthode_4D>}. Il est possible également de contrôler les requêtes Le moteur SQL de 4D externes adressées au serveur SQL en utilisant la gestion interne des L’architecture multi-base est implémentée au niveau du serveur SQL de utilisateurs et groupes de 4D. Ce contrôle est effectué au niveau du 4D. 4D v11 SQL propose son propre serveur SQL, ce qui signifie que les type d’action autorisé et de l’utilisateur ayant effectué la requête. requêtes SQL peuvent être aiguillées soit vers un serveur SQL externe soit vers le moteur SQL de 4D. Les liens entre les tables TOUT SELECTIONNER ([prefs]) La souplesse de SQL per- Si ([prefs]moteur="4DLocal") met d’étendre les possibi- UTILISER BASE INTERNE lités des liens Sinon automatiques de 4D et de UTILISER BASE EXTERNE ([prefs]moteur;[prefs]login;[prefs]password) gérer directement des cri- Fin de si tères de recherche com- plexes. Grâce également à l’implémentation des commandes DDL (Data Defini- SQL permet de faire direc- tion Language) dans le serveur SQL de 4D v11, vous pouvez directe- tement une jointure sur ment intervenir sur la structure de votre base et la manipuler. trois tables, même si la jointure comporte une L’interface 4D relation calculée : 4D v11 SQL permet de placer les résultats d'une requête directement dans une listbox. 4D créera automatiquement les colonnes et les lignes TABLEAU TEXTE ($client;0) TABLEAU TEXTE ($regions;0) nécessaires pour afficher les données reçues. Debut SQL SELECT CLIENT.NOM, REGION.NOM FROM CLIENT, DEPARTEMENT, REGION SELECT * FROM CLIENT WHERE ( DEPARTEMENT.CP=SUBSTRING (CLIENT.CP,1,2) INTO :maListBox; AND REGION.REGION_ID = DEPARTEMENT.REGION_ID ) INTO (:$clients, :$regions); Fin SQL Les transactions imbriquées Les ordres COMMIT et ROLLBACK sont implémentés dans le SQL de 4D. Vous démarrez une transaction avec START TRANSACTION et la validez avec l’ordre COMMIT ou l’annulez avec l’ordre ROLLBACK. Les mécanismes des transactions 4D, intégrées au moteur de la base de données, sont également utilisables. Il est possible d’imbriquer des transac- tions jusqu’à 32767 niveaux ! La définition d'une listbox dans le formulaire facilite la mise en place d'une Ouverture sur 4D au travers de SQL interface claire. ODBC L'adoption du langage SQL permet de rendre 4D accessible à travers Debut SQL ODBC sans forcément passer par 4D serveur. En un seul clic, ou une SELECT CLIENT_ID, CONCAT(CONCAT(NOM, ' '), PRENOM), VILLE seule commande du langage, les données de votre application deviennent FROM CLIENT accessibles à une immense gamme de produits du marché. Il devient aisé INTO :maListBox; depuis Excel de lire des données dans votre système de facturation. Il est Fin SQL dorénavant facile de laisser vos clients créer un mailing à partir de Word. L'analyse de données graphiques avec Crystal Reports est maintenant à la portée de vos utilisateurs sans avoir à programmer des exports spéci- fiques pour chaque projet. Ecrire du SQL dans 4D Dans son implémentation la plus directe, le langage SQL a été inclus au langage 4D. L’accès aux enregistrements s’effectue dans un bloc Début Mieux encore : maintenant 2 moteurs 4D peuvent communiquer via ODBC ! SQL … Fin SQL. Il est d’ailleurs possible de déboguer lors de son exécution Programmez! - N°102 17 NOVEMBRE 2007 16-19 22/10/2007 16:20 Page 18 SGBD EN BREF Les commandes ODBC intégrées peuvent également se connecter au le code SQL encapsulé dans ce bloc. Vous pouvez ainsi déboguer simulta- moteur SQL de 4D. nément votre code SQL et votre code 4D dans le même environnement. TABLEAU TEXTE (atNoms;0) ODBC LOGIN ( SQL_Internal ) ODBC EXECUTER ( "SELECT NOM FROM CLIENT WHERE NOM LIKE 'A%' "; atNoms) ODBC CHARGER ENREGISTREMENT ( ODBC Tous les enregistrements ) ODBC LOGOUT Conclusion L'arrivée de SQL est une nouvelle étape dans une longue succession d'enri- chissements techniques implémentés dans 4D v11 SQL pour accroître la productivité des développeurs. C’est pourquoi ce premier article est entière- ment consacré au tout nouveau moteur SQL de 4D. Cependant, la prise en charge du SQL dans 4D v11 est loin d’être la seule nouveauté proposée dans ce dernier opus. Pour essayer d’en faire le tour, nous aborderons dans un prochain article les technologies standard et modernes utilisables avec Par le langage SQL, il est possible de créer une nouvelle sélection en 4D v11 (Web 2.0, Flex, Ajax, Web Services, SOAP, etc.). Nous verrons aussi passant une requête directement à 4D. prochainement comment développer rapidement et efficacement vos appli- cations professionnelles. CHERCHER PAR SQL ( [CLIENT] ; " NOM LIKE 'A%' " ) ■ Jacques Lefevre 4D crée l’événement avec l’iPhone ! 4D v11 SQL veut encore aller plus loin en s’attaquant aux technologies portables comme l’iPhone ou le PDA. Rien n’arrête décidément l’éditeur français de logiciels de développement ! Surtout que l’iPhone à l’heure actuelle ne supporte ni Flash ni applications externes. 4D a développé une application en ligne Web Une démonstration iPhone en des données pouvaient être modifiés : 2.0 utilisable avec l’iPhone. Nous avons voulu direct sur l’Apple Expo - Les totaux exprimés en euros, dollars, Yen… comprendre et tester pour vous cette dernière Une des démonstrations à laquelle nous - Affichage du pourcentage de réalisation innovation. Pour relever ce défi 4D n’avait avons assisté permettait de construire et de des objectifs d’autres solutions que de s’appuyer sur les visualiser à la volée des reportings de vente. - Affichage du chiffre d'affaires des commer- possibilités offertes par l’iPhone et de fonc- Les commerciaux pouvaient consulter sur ciaux tionner en mode connecté. Le produit 4D Web leur appareil mobile (iPhone ou PDA) l'en- - Changement de couleur selon l'objectif réa- 2.0 Pack disponible depuis début 2007 rem- semble de leurs fiches clients (coordonnées, lisé par commercial plit élégamment ces fonctions. Dans ce pack, historique clients) ainsi que leur catalogue les développeurs disposent de 4D Ajax Fra- produits. mework, un moyen rapide et facile pour Le directeur commercial pouvait accéder aux construire des applications publiables direc- ventes régionales de ses commerciaux sur tement sur le Web. Conçu pour permettre son iPhone grâce au tableau de bord de 4D d'écrire du code simple et fiable, 4D Web 2.0 Ajax Framework. Les différents rapports de Pack augmente la productivité des développe- vente ont pu être créés par simples clics et ments grâce à son serveur Web intégré, ses toutes ces informations ont été instantané- outils d'administration et sa bibliothèque ment publiées sur l’iPhone ou le PDA. JavaScript. C’est là où 4D se démarque de ses concurrents car il permet de faire fonc- Dialogue d’authentification tionner ses applications aussi bien sur les Le dialogue des paramétrages d'authentifi- systèmes les plus ouverts que sur les sys- cation permet de définir les accès et autori- tèmes les plus propriétaires en s’exécutant sations aux données. dans le contexte du navigateur. Et surtout, 4D sait adapter son produit aux systèmes d’ex- L’affichage des informations Nous avons été impressionnés par la rapidi- ploitation embarqués en déployant des appli- est interactif té de mise en place de cette application et cations de reporting répondant notamment Les ventes ont été classées par région selon par son ergonomie dans la visualisation des aux besoins des personnes itinérantes. les critères choisis. L’affichage et le format données. Programmez! - N°102 18 NOVEMBRE 2007 ,QWH 16-19 22/10/2007 16:20 Page 19 3(16(= 3$5$//(/( 1RXYHOOHV(GLWLRQVGHV&RPSLODWHXUV,QWHO&HW)RUWUDQ /DQRXYHOOHYHUVLRQRIIUHOHPHLOOHXUVXSSRUWSRXUFUpHUGHVDSSOLFDWLRQVPXOWL WKUHDGVXU:LQGRZV /LQX[ HW0$&26 ;6HXOHVOHVpGLWLRQVSURIHVVLRQQHOOHV GHVFRPSLODWHXUV,QWHOSURSRVHQWO·pWHQGXHG·RSWLPLVDWLRQVDYDQFpHVHWGH FDSDFLWpVPXOWLWKHDGLQJTXLLQFOXHQWODYHFWRULVDWLRQO·DXWRSDUDOpOOLVDWLRQ 2SHQ03 UpFXSHUDWLRQDQWLFLSpHVGHVGRQQpHVGpURXODJHVGHERXFOHVHWOHV ELEOLRWKqTXHVKDXWHPHQWRSWLPLVpHVGHFRQVWUXFWLRQGHEORFVGHWKUHDGLQJGH WUDLWHPHQWPDWKpPDWLTXHVHWGHPXOWLPpGLD /·(GLWLRQGX&RPSLODWHXU,QWHO3URIHVVLRQQHOOHHVWIRXUQLHDYHFGHV ELEOLRWKqTXHVTXLYRXVSHUPHWWHQWGHFRQFHYRLUGHVWKUHDGVGqVOHSUHPLHUMRXU /HV$3,VGHVELEOLRWKqTXHVWLHQQHQWFRPSWHFRQWLQXHOOHPHQWGHVpYROXWLRQVGHV ´'·LFLDQVXQ SURFHVVHXUVSDUGHVPLVHVjMRXU SURJUDPPHXUTXLQH /HVFRPSLODWHXUVHWELEOLRWKqTXHVVRQWIDLWVOHVXQVSRXUOHVDXWUHV SHQVHSDV¶SDUDOOqOH· /HV&RPSLODWHXUV,QWHO&HW)RUWUDQSDUDOOpOLVHQWDXWRPDWLTXHPHQWYRWUHFRGHHW QHVHUDSOXVXQ O·RSWLPLVHQWHQSHUIRUPDQFHVSRXUSURÀWHUDXPLHXGHVDUFKLWHFWXUHVPXOWLFRHXU SURJUDPPHXUµ /·,QWHO0DWK.HUQHO/LEUDU\PHWjYRWUHGLVSRVLWLRQGHVIRQFWLRQVPDWKpPDWLTXHVPXOWL WKUHDGpHVTXLVXUSDVVHQWOHVSHUIRUPDQFHVGHFRGHVFRPSLOpVLQGLYLGXHOOHPHQWDLQVLTXHFHOOHV -DPHV5HLQGHUV G·DXWUHVELEOLRWKqTXHV (YDQJpOLVWHHQ&KHIGHV /HV,QWHO,QWHJUDWHG3HUIRUPDQFH3ULPLWLYHV &VHXOHPHQW LQFRUSRUHQWGHVIRQFWLRQV 2XWLOV/RJLFLHOV,QWHO KDXWHPHQWRSWLPLVpHVTXLDFFpOqUHQWOHGpYHORSSHPHQWGXWUDLWHPHQWGHPpGLDGHFU\SWRJUDSKLH HWGXVLJQDO /HV,QWHO7KUHDGLQJ%XLOGLQJ%ORFNV &VHXOHPHQW UHJURXSHQWGHVURXWLQHVYpULÀpHV HWDIÀQpHVSRXUVLPSOLÀHUOHGpYHORSSHPHQWG·DSOLFDWLRQVPXOWLWKUHDGUREXVWHVHWFDSDEOHVGH PRQWHUHQFKDUJH )$,7(6/(3$668,9$17 0LFUR6LJPD $//<6 7UDQVWHF6$5/ 7HO 7pO 7pO )D[ )D[ )D[ ZZZPLFURVLJPDIULQWHO ZZZDOO\VVRIWFRP ZZZWUDQVWHFFOXVWHUFRP LQWHO#PLFURVLJPDIU DOO\V#DOO\VVRIWFRP FFHQWHU#WUDQVWHFGH 5,70(,QIRUPDWLTXH 626'HYHORSHUV 7HO2 7HO )D[ )D[ ZZZULWPHFRP ZZZVRVGHYHORSHUVFRPLQWHOKWP LQIR#ULWPHFRP LQIRV#VRVGHYHORSHUVFRP ,QWHO&RUSRUDWLRQ,QWHOOHORJR,QWHOOHDSDKHDGHWOHORJR,QWHOOHDSDKHDGVRQWGHVPDUTXHVRXGHVPDUTXHVGpSRVpHVGH,QWHO &RUSRUDWLRQRXGHVHVÀOLDOHVDX[(WDWV8QLVG·$PpULTXHHWDXWUHVSD\V7RXVGURLWVUpVHUYpV ,QWHO3XE3URJLQGG 20-21 22/10/2007 16:21 Page 20 Gros Plan EN BREF MacOS X et le développeur Le Mac est redevenu, grâce à MacOS X et dernièrement avec le passage aux processeurs Intel, une plate-forme attrayante. Même si le marché du développement Mac demeure restreint, notamment en entreprise, avec les bonnes ventes des Mac Intel, l’arrivée du iPhone et de MacOS X 10.5, la situation tendrait à s’améliorer. Encore faut-il convaincre les entreprises d’utiliser plus souvent du Mac… La plate-forme Mac intéresse de plus en plus de développeurs, y compris les développeurs Windows ou Linux. our Zend, éditeur de solutions PHP, MacOS X représente 10 afin de préparer les applications % de son marché, pour 4D, éditeur du SGBD éponyme, cette à son arrivée. MacOS X 10.5 P part se situe à environ 25 % et presque la moitié pour son (alias Leopard) introduit, outre serveur. De nombreux outils de développement sont disponibles de nouvelles API, les nouveaux sous le système pommé : Eclipse, NetBeans, JBuilder, outils de développement, dont Dreamweaver, Mono. Et de plus en plus d’outils ouverts sont por- le très attendu Xcode 3.0, sans tés. Apple livre en standard plusieurs langages : Python, Ruby… oublier la mise à niveau du lan- Cependant, il y a un manque d’outils de qualité logicielle, de cycle gage Objective-C, le support de vie et peu de grands SGBD sont élargi du 64-bit, la possibilité disponibles. Bref, l’outillage est bon de créer des snapshots mais pourrait mieux faire ! rapidement. Pourtant, le Mac devient réellement Dans ce dossier spécial un poste de développement comme Mac / MacOS X, nous un autre. Le passage aux proces- allons vous dévoiler le seurs Intel ouvre de nouvelles pers- monde des développeurs pectives. L’arrivée de la MacOS X, les outils, les technologies, et finalement, pourquoi le virtualisation, avec par exemple Mac Intel devient une plate-forme de développement intéressante ! VMware Fusion ou Parallels, transfor- ■ François Tonic me radicalement le visage du Mac et facilite le développement multi-plate- forme. BootCamp d’Apple a aussi DERNIÈRE MINUTE ouvert la voie au développement Win- dows ou Linux, en dur… D’ici à ce - MacOS X Programmation (Dunod) par que les développeurs .Net codent à Etienne Vautherin : découvrez le développe- partir d’un Mac Intel, il y a un pas ment MacOS X (et notamment Leopard) aisément franchissable ! avec les différentes librairies, les outils dis- Apple aide aussi les développeurs à ponibles. Un ouvrage qui deviendra vite une concevoir des applications MacOS X. Pour cela, le programme ADC référence ! (Apple Developer Connection) permet d’accéder à de nombreuses - MacOS X 10.5 : c’est officiel, MacOS X 10.5 alias Leopard est ressources : pré-versions des outils, documentations, disponibilité disponible depuis le 26 octobre… Préparez vos machines ! des systèmes, accès à des conférences et surtout accès aux API, librairies et outils. Un premier niveau est gratuit pour accéder aux - Programmer pour iPhone : Apple l’a confirmé. Un SDK sera dis- librairies et documentations (ainsi que le téléchargement des outils) ponible pour les développeurs en février 2008. Cette annonce mais pour l’accès aux outils et systèmes, il faut payer 499 ou 3 499 devrait créer une communauté active et nombreuse. Prends aussi dollars pour le programme Select ou Premier (pour les étudiants, 99 en compte le développement sur iPod Touch. dollars). Leopard était par exemple disponible depuis plusieurs mois Programmez! - N°102 20 NOVEMBRE 2007 20-21 22/10/2007 16:22 Page 21 MAC RETOUR D’EXPÉRIENCE Le développement Web sous Mac Le Mac en tant que plate-forme de développement Web ? C’est non seulement possible, mais c’est aussi très efficace grâce à ses origines Unix et à quelques excellents outils. Retour d’expérience sur le développement de plusieurs sites professionnels depuis Mac OS X. oder, installer, adminis- gamme de développement web trer, réparer... il faut être Adobe (Dreamweaver, etc...). Du C un véritable homme- côté des client FTP, l’excellent orchestre lorsqu’il s’agit d’assu- Transmit domine, mais Captain rer une activité sur le web et FTP (gratuit) ou CyberDuck (gratuit) qu’on est une minuscule structu- sont aussi très populaires. Après re. C’est le cas de LesNouvelles avoir longtemps utilisé le couple .net, qui édite le site éponyme TextWrangler + Transmit pour nos ainsi que SecurityNewsletter.com développements web, nous avons et StorageNews letter.com. Le toutefois récemment migré sous point commun de ces sites : tous Coda, un outil de développement ont été entièrement créés sur un web commercial proposé par Panic Mac, ainsi que le CMS multi-site (éditeur de Transmit). Outre ses qui anime ces derniers. Quant à nombreuses fonctionnalités inté- ▲ leurs serveurs dédiés, ils sont Une vue de l'éditeur grées (éditeur de texte basé sur graphique de CSS aussi administrés quotidienne- (mais on peut tout SubEthaEdit, moteur FTP de Trans- ment depuis un Mac. aussi bien éditer le mit, éditeur visuel de CSS et Le Mac offre un cocktail idéal de CSS en mode texte) même des ouvrages de référence technologies et d’outils pour assu- HTML, PHP, Javascript et CSS), rer à la fois le développement c’est surtout la facilité d’organisa- web, le travail photographique La "page d'accueil" tion du travail qu’il permet qui de▲ Coda, qui permet professionnel, la production de de sélectionner le pro- nous a fait adopter Coda. L’envi- contenu rédactionnel et une activi- jet sur lequel travailler. ronnement offre une vue “par pro- té bureautique quotidienne. C’est jet”, chaque site étant entièrement pour cela qu’il a été choisi comme cun étant contenu dans un réper- suite. Seule manque la base de intégré en une fenêtre. Outre les plate-forme unique pour LesNou- toire dédié. données MySQL (hormis dans la outils de développement, cette velles.net. Hormis l’hébergement Afin d’y accéder plus simplement, version server de MacOS). Mais dernière présente à tout moment des serveurs de production (sous il est également utile d’éditer le des binaires OSX et un installateur l'arborescence locale et distante Linux Debian), Mac OS X est en fichier /private/etc/hosts et d’as- dédié sont disponibles sur le site du site. Chaque fichier modifié en mesure d’assurer quasi-native- socier chaque site virtuel à un nom de l’éditeur et leur installation ne local est étiqueté comme tel par ment toutes les facettes de domaine local. Il suffit pour demande que quelques instants. Coda. Lorsque tout fonctionne cor- de l’activité. cela d’y ajouter une ligne sur le rectement en local, un simple bou- modèle “127.0.0.1 mon-site” (ou Une question d’outils ton permet d’uploader sur le Les briques essentielles “mon-site” est le ServerName Une fois la plate-forme opération- serveur de production l’ensemble d’une plate-forme web donné dans la configuration nelle, il reste à développer. Les des fichiers modifiés en une seule Grâce à ses origines unixiennes, d’Apache pour ce projet, et non le outils indispensables seront au opération, via SFTP. Enfin, Coda Mac OS X offre d’emblée les nom de son répertoire, qui est lui minimum un éditeur de texte et un mémorise tous les fichiers ouverts briques nécessaires au développe- défini par la directive Document client FTP afin de mettre à jour les d’une session à l’autre (et la liste ment web LAMP : le serveur Root). Chaque site sera désormais serveurs de production. Il s’agit des fichiers modifiés et pas enco- Apache y est intégré, ainsi que accessible en tapant son nom d’une question hautement subjec- re mis en ligne), permettant de PHP. Il suffit à cette étape de modi- dans la barre d’adresse du tive. Le Mac dispose de bons édi- retrouver immédiatement son envi- fier la configuration d’Apache (/pri- navigateur. teurs de textes (TextMate, la ronnement de travail. vate/etc/httpd/httpd.conf) afin Le Mac intègre également un outil référence, mais aussi SubEthaE- Ces seules fonctions nous ont fait d’activer le support des sites vir- CVS (sur le DVD XCode), le sup- dit, BBEdit, ou sa version gratuite gagner beaucoup de temps lors de tuels via la directive VirtualHost. port WebDAV dans Apache et bien TextWrangler, entre autres), d’un nos développements. Cela permet de travailler sur plu- entendu SSH, qui s’avérera essen- excellent éditeur CSS visuel ■ Jérôme Saiz sieurs projets simultanément, cha- tiel à notre plate-forme par la (CSSEdit) et bien entendu de la lesNouvelles.net Programmez! - N°102 21 NOVEMBRE 2007 22-27 22/10/2007 16:23 Page 22 Gros Plan MAC MacOS X : l’OS des développeurs ? Les développeurs MacOS X existent. Nous avons posé quelques questions à l’un d’entre eux : Yann Bizeul. Il code intensivement avec les librairies Cocoa d’Apple. Que pense-t-il de MacOS X ? Programmez ! : pensez-vous que qui remonte le temps, on sait tout le marché du développement de suite que l'on est dans le nou- sous MacOS X évolue dans le vel outil de sauvegarde, TimeMa- bon sens ? La demande de déve- chine, et on sait comment loppement est-elle bonne ? l'utiliser. Ce n'est pas du gadget : Yann Bizeul : Je ces API, bien utilisées améliorent crois que le vraiment l'ergonomie et le confort marché du de l'utilisateur. De plus, Apple développement fournit plein d'exemples de code, sur Mac suit accessibles à tous, la communau- une courbe té est très active, c'est difficile de parallèle à celle de la part de mar- se retrouver tout seul. En ce qui ché d’Apple. Et je crois aussi que concerne Xcode, ma foi on trouve- celle-ci ne peut aller qu'en s'amé- ra toujours des insatisfaits. liorant. Je constate autour de moi P ! : Considérez-vous MacOS X et ment voyez-vous les évolutions Certes Xcode n'est pas parfait, un nombre incroyable de per- le Mac en général comme un bon de Leopard, de XCode et du lan- peut-être n’a-t-il pas autant de sonnes rapidement séduites par poste de développement ? gage Objective C ? fonctionnalités qu’Eclipse ou notre plate-forme, et qui swit- Y.B. : J'avais essayé de dévelop- Y.B. : J'ai l'impression que sous d'autres IDE, mais il s'améliore, chent sans regret, d'autant plus per sous Mac OS 9 à l'époque, Tiger, Apple entretenait un décala- chaque version majeure apporte que le passage à Intel les rassure mais je n'avais jamais réussi à en ge entre sa manière de program- son lot de nouveautés et réduit un malgré tout sur la possibilité de comprendre la logique et j'avais mer une application, et les peu l'écart. Personnellement faire fonctionner leurs applica- finalement abandonné. Puis est possibilités offertes aux program- j'adore. Et le fait qu’Apple fournis- tions historiques qui ne seraient arrivé Mac OS X, structuré autour meurs. Il fallait souvent bidouiller se un IDE gratuitement, que cet pas portées sur Mac OS X. Le d'un langage de programmation pour obtenir un comportement IDE soit celui-là même avec lequel développement n'étant pas ma objet, je m’y suis tout de suite similaire à ce que proposait Apple les ingénieurs de la pomme tra- source de revenus principale, je retrouvé. Mon expérience de la à ses utilisateurs. J'ai aujourd'hui vaillent, c'est déjà énorme et un n'ai peut-être pas une vision réa- programmation avant, cela se le sentiment qu’Apple essaye de gage de qualité. En ce qui concer- liste de la situation, mais j'aime résumait au basic, et aussi à une réduire ce "gap" et ceci nous per- ne Objective-C, c'est un peu la croire que vu le peu de program- bonne maîtrise de langage de mettra de fournir des applications même chose, les choses évoluent meurs Mac en France et le poten- script type PHP, Bash, etc. Je n'ai cohérentes à l'utilisateur. Tout le lentement, mais elles évoluent, je tiel de la demande à venir, l'avenir pas vraiment eu de difficulté à monde a déjà parlé de CoreAnima- trouve que c'était déjà un excel- s'annonce plutôt bien. démarrer. Je crois qu'on retrouve tion, une des grandes nouveautés lent langage. J'attends de voir ce tout l'esprit Apple dans la pro- de Leopard, je crois qu’au delà de que le nouveau Garbage Collector P ! : Le passage PowerPC à Intel grammation Mac : intuitif, simple l'effet "waow" ce sont ce genre donnera : beaucoup de program- fut-il un souci pour vous et vos et rapide. D'autant plus qu’Apple d'outils qui font que le Mac est meurs sont inquiets à ce sujet, codes ? nous pré-mâche de plus en plus aujourd'hui ce qu'il est : une mais j'ai confiance, les Y.B. : Personnellement, ce fut un de travail avec des frameworks plate-forme enviée, ou l'aspect (nouvelles ?) applications Apple vrai bonheur, tout s'est passé toujours plus complets. graphique de l'OS non seulement elles-mêmes devraient en bénéfi- comme dans les démos ! Une ne gâche rien à l'ergonomie, mais cier, c'est aussi une sécurité. case à cocher, on compile, et P ! : Apple prépare Leopard et sert au contraire à améliorer ce "Voilà !". Occasionnellement j'ai une sérieuse évolution de ses que certains appellent "l'expé- Pour en savoir plus : dû me frotter à des soucis de byte outils de développements. Apple rience utilisateur" (User experien- http://projects.tynsoe.org/ ordering, mais tout cela est très propose-t-il suffisamment au ce) : ces petits rien qui font que bien documenté et se manifeste développeur (documentations, lorsque qu'on se retrouve dans Propos recueillis par dans des cas spécifiques. outils, exemples, etc.) ? Com- l'espace avec la fenêtre courante ■ François Tonic L’informationreste sadre 180 mm large x permanente12 mm de haut • L’actu quotidienne • La newsletter hebdo wwwProgrammez!.programmez.com- N°102 22 NOVEMBRE 2007 22-27 22/10/2007 16:25 Page 23 22-27 22/10/2007 16:26 Page 24 Gros Plan Quartz, l’alternative ? Pendant que tous les regards convergent vers cette nouvelle bataille des technologies vectorielles qui s’amorce entre Adobe Air et Microsoft Silverlight, il existe une technologie alternative dont l’origine remonte à presque 20 ans et qui mériterait toute nos attentions : Quartz. i on regarde l’architecture met pourtant de réaliser des opé- de Mac OS X, on identifie Quartz Extreme rations complexes. D’autant plus S le composant " Core Avec Quartz Extreme, Apple a survitaminé Quartz à l’Open GL. Ainsi toutes que vous pouvez développer vos Image " de la couche " Graphics les opérations d’affichages, même 2D, sont directement confiées aux pro- propres patchs, repoussant ainsi cesseurs des cartes 3D. On est très proche de la solution retenue par and Media ". C’est ici que cohabi- Microsoft pour l’affichage des fenêtres du mode Aero de Vista. Cela va per- les frontières du possible. tent Quartz et Open GL, le premier mettre aux développeurs de repousser les limites de quartz. Il faut s’attendre Les compositions ainsi prenant officiellement en charge à un nouveau bond dans le design et l’ergonomie des applications sous Mac. construites peuvent être directe- la 2D et le deuxième la 3D. Mais ment utilisées en tant qu’écran de ce découpage est de plus en plus veille par exemple, ou être trans- artificiel puisque l’avenir est au formées en une application auto- mariage des deux éléments. nome. Pour les manipuler via du Quartz a deux fonctions essen- code dans une application Cocoa tielles : il suffit d’utiliser le contrôle gra- - Le moteur d’affichage 2D s’ap- phique QCView. Il va servir de puyant sur les spécifications PDF conteneur hébergeant votre com- - Un environnement de gestion position. On peut également les des fenêtres offrant des ser- intégrer dans une page Web via vices avancés tels que : le Win- un tag Programmez! - N°102 24 NOVEMBRE 2007 22-27 22/10/2007 16:26 Page 25 MAC dropons un Custom View dans notre fenêtre et prenons soin dans l’inspec- modèle 100% objet de Cocoa. Commençons par créer une application teur d’indiquer que la " Custom Class " est notre classe MaVueQuartz. Carbon C++ avec XCode. Lançons Interface Builder (double click sur Maintenant, il nous reste à implémenter notre vue. La première chose à Main.nib) puis ajoutons à notre fenêtre un HIView (Human Interface faire est d’obtenir le contexte graphique. Nous utilisons currentContext qui View) qui va nous permettre d’implémenter notre rendu Quartz. permet d’obtenir l’instance NSGraphicsContext associée au thread cou- L’élément clef est de bien noter la signature et le code que vous attri- rant. Pour dessiner, nous avons besoin d’un contexte graphique spécifique buez à notre vue : nous devons les utiliser dans notre code afin d’obte- à la plate-forme, ce que nous obtenons avec graphicsPort. nir une référence à notre HIView. CGContextRef monContext = [[NSGraphicsContext currentContext] graphicsPort]; HIViewRef myHIView; static const HIViewID myHIViewID = { 123, 'mVue'}; Maintenant, créons un rectangle blanc. Nous utiliserons CGContextSe- (HIViewGetRoot(myMainWindow), myHIViewID, &myHIView); tRGBFillColor pour choisir la couleur du pinceau, puis CGContextFillRect pour peindre le rectangle plein. Pour la couleur rouge, pas de classique Maintenant que nous tenons notre vue, nous pouvons ajouter son event 255,0,0 mais un 1,0,0. En effet, les composantes couleurs sont définies handler pour prendre la main sur son affichage (Draw). par des float en Cocoa, perfection Apple oblige ! Il faut également ajouter une quatrième composante obligatoire à toute couleur : la transparence. static const EventTypeSpec myHIViewSpec[] = {kEventClassControl, kEventControlDraw }; CGContextSetRGBFillColor (myContext, 1, 0, 0, 1); CGContextFillRect (myContext, CGRectMake (0, 0, 200, 100)); err = InstallEventHandler (GetControlEventTarget (myHIView), NewEventHandlerUPP (MyDrawEventHandler), Donc voici notre application Cocoa complète : GetEventTypeCount (myHIViewSpec), @implementation MonApplicationQuartz &myHIViewSpec, (void *) myHIView, - (id)initWithFrame:(NSRect)frameRect NULL); { self = [super initWithFrame:frameRect]; Puis il nous reste à implémenter notre handler dans lequel nous pou- return self; vons récupérer la référence à notre HIView grâce à GetEventParameter. } OSStatus MyDrawEventHandler (EventHandlerCallRef myHandler, - (void)drawRect:(NSRect)rect EventRef event, void *userData) { { CGContextRef monContext = [[NSGraphicsContext OSStatus status = noErr; currentContext]graphicsPort]; CGContextRef myContext; CGContextSetRGBFillColor (monContext, 1, 0, 0, 1); HIRect bounds; CGContextFillRect (monContext, CGRectMake (0, 0, 200, 100)); CGContextSetRGBFillColor (monContext, 0, 0, 1, 0.5); status = GetEventParameter (event, CGContextFillEllipseInRect(monContext, CGRectMake(0,0,200,200)); kEventParamCGContextRef, } typeCGContextRef, NULL, @end sizeof (CGContextRef), NULL, C’est minimaliste, mais avec Objective C &myContext); et Cocoa quelques lignes de code et ça require_noerr(status, CantGetGraphicsContext); fonctionne. HIViewGetBounds ((HIViewRef) userData, &bounds); require_noerr(status, CantGetBoundingRectangle); En Carbon CGContextSetRGBFillColor (myContext, 1, 0, 0, 1); Avec Carbon les choses se compliquent CGContextFillRect (myContext, CGRectMake(0, 0, 200, 100 )); car on doit se conformer à un modèle CGContextSetRGBFillColor (myContext, 0, 0, 1, .5); procédural bien moins séduisant que le CGContextFillEllipseInRect(myContext, CGRectMake(0,0,200,200)); FORUM Programmez! dialogue- N°102 et assistance25 NOVEMBRE 2007www.programmez.com 22-27 22/10/2007 16:26 Page 26 Gros Plan MAC CantGetGraphicsContext: vont permettre de définir les étapes de votre animation vont donc se CantGetBoundingRectangle: trouver entre ces deux valeurs. return status; } monAnim = [[NSAnimation alloc] initWithDuration:5.0 animationCurve: NSAnimationEaseInOut]; [monAnim setFrameRate:24.0]; Et voila! Nous remarquons que le dessin [monAnim setAnimationBlockingMode:NSAnimationNonblocking]; est inversé par rapport à celui obtenu en Cocoa. En effet, le HIView place l’origine [monAnim addProgressMark:progMarks[1]]; en haut à gauche, alors qu’il est norma- [monAnim addProgressMark:progMarks[2.5]]; lement en bas à gauche en Quartz. Pro- [monAnim addProgressMark:progMarks[4]]; blème vite corrigé avec : Pendant le déroulement de l’animation, à chaque fois qu’un marqueur CGContextTranslateCTM (myContext, 0, bounds.size.height); est atteint, le message didReachProgressMark sera envoyé par l’ani- CGContextScaleCTM (myContext, 1.0, -1.0); mation. A vous d’y associer un délégué pour réaliser l’opération souhai- tée pour cette étape. Utiliser le PDF Créer directement le PDF est très simple puisqu’il suffit de manipuler un - (void)animation:(NSAnimation *)animation contexte graphique PDF au lieu du contexte graphique écran traditionnel. didReachProgressMark:(NSAnimationProgress)progress Nous allons donc cette fois-ci peindre directement dans un fichier PDF. { if (animation == monAnim) NSString *monPdf = [NSHomeDirectory() stringByAppendingPath { Component: // Modifier par exemple la taille et la couleur du bouton selon l’étape @"test.pdf"]; de l’animation NSURL *urlDeMonPdf = [NSURL fileURLWithPath: monPdf]; } CGRect rectPdf = CGRectMake(0.0, 0.0, 600.0, 800.0); } CGContextRef mContext = CGPDFContextCreateWithURL((CFURLRef) urlDeMonPdf, &rectPdf, NULL); Ici c’est un usage très basique de l’API d’animation. Généralement on va créer plusieurs classes héritant de NSAnimation qui permettent de Maintenant nous pouvons procéder à notre opération graphique, définir les différentes animations élémentaires. Puis on va combiner comme précédemment, en utilisant ce contexte graphique. ces animations pour en construire de plus complexes. Par exemple on Pour utiliser du PDF dans notre code Quartz c’est beaucoup plus compli- peut déclencher une seconde animation quand la première atteint une qué. S’il s’agit d’afficher par des vignettes des pages du document PDF certaine étape : dans votre application, on peut obtenir une image d’une de ces pages [animSecondaire startWhenAnimation:animPrimaire reachesProgress:2.5]; en utilisant CGDataProviderCreateWithFilename qui nous permettra à partir du CGDataProvided de créer une Image. Par contre, si vous souhaitez manipuler le contenu du PDF, il faut utiliser Conclusion un CGPDFDocument qui s’obtient grâce à CGPDFDocumentCreateWith- Sur le plan programmatique Quartz n’a pas à rougir face à ses concur- Provider. Mais gardez en tête qu’un document PDF est un document fini rents directs. Et il bénéficie d’un retour d’expérience solide grâce à prêt à être imprimé, c'est-à-dire qu’il contient des pages rectangulaires Next (20 ans déjà !) et aux nombreuses applications Mac OS X qui font à taille fixe dans lesquelles vous trouverez du contenu. Si vous cherchez le succès d’Apple (iLife, iPhoto…). Apple donne des leçons d’ergono- à exploiter des templates vectoriels contenant juste votre magnifique mie et de design au reste de l’industrie informatique depuis des décen- bouton en relief, par exemple, vous devez vous pencher plutôt vers la nies, et ce n’est pas prêt de s’arrêter. manipulation d’EPS (Encapsuled Postscript). Cependant, il reste encore un effort à faire pour Apple avant d’atteindre le niveau d’outillage que fournissent Adobe ou Microsoft. Si le dévelop- Faire des animations peur va pouvoir assouvir ses ambitions avec les possibilités surpre- Si les applications Apple sont aussi agréables à utiliser, c’est souvent nantes de Quartz, il va commencer à déchanter lorsqu’il s’agira de grâce aux animations savamment étudiées qui rendent l’interface utili- travailler en étroite collaboration avec le graphiste. On ne dispose pas sateur si naturelle à l’emploi. Ceux qui ont manipulé un iPhone savent aujourd’hui d’outils permettant de construire les éléments facilement de quoi je veux parler. manipulables par le développeur Quartz, comme des styles graphiques Les animations reposent sur l’objet NSAnimation qui va vous permettre ou des story board d’animation. Mais avec l’arrivée du "Core Anima- de définir la vitesse (nombre de mises à jour par seconde), la durée, la tion" inclus dans Leopard, tout peut changer ! dynamique de l’animation (linéaire, accélération puis décélération) et le mode d’interaction avec l’utilisateur. ■ Eric GROISE Une animation démarre à 0.0 pour se terminer à 1.0, les marqueurs qui Responsable produit chez OCTO Technology 0800 667 307 Programmez! - N°102 26 NOVEMBRE 2007 22-27 22/10/2007 16:27 Page 27 NetAdvantage® for ASP.NET Dashboard WebGrid™ and WebGauge™ in a PDF report NetAdvantage for ASP.NET 2007 Vol. 3 La boite à outils exceptionnelle pour la conception et le développement de vos interfaces utilisateur. Exportez en format PDF ou XPS - Notre nouveau Document Exporting Engine vous permet WebGauge are trademarks of Infragistics, Inc. All other or registered the respective property thei Copyright 1996-2007 Infragistics, Inc. All rights reserved. the Infragistics logo and NetAdvantage are registered de fournir des rapports imprimables pour les graphiques et grilles ASP.NET Des tableaux de bord professionnels - Nos graphiques exceptionnels en 2D et 3D et gauges raffinés pour ASP.NET éliminent le besoin d'une autre solution pour vos graphiques Intégration améliorée pour Excel® - Nouvelles fonctionnalités Import/Export vous permettent d'exporter des images, des lignes/colonnes fixes, des rangées cachées, formules et headers/footers. Exportez et créez des documents Excel avec le titre du document, auteur et catégorie Design Once, Style Everywhere - pour vos applications Windows Forms et ASP.NET grâce à NetAdvantage. Créez rapidement et appliquez vos normes à travers les contrôles ou applications Des applications de haute performance - Nos contrôles ASP.NET & AJAX pour moteur de trademarks of Infragistics, Inc. Application Styling, WebGrid and recherche sont essentiels pour des applications Web 2.0 agiles ou pour les composants r owners. WebPart dans SharePoint® Pour de plus amples informations: infragistics.com/aspnet [email protected] 0800 667 307 WINDOWS FORMS ASP.NET WPF JSF grids scheduling charting toolbars navigation menus listbars trees tabs explorer bars editors 28-54 22/10/2007 16:27 Page 28 Dossier Rich Internet Application La révolution de l’interface Web ? Le Web bénéficie enfin d’interfaces dynamiques et proches du Desktop. Web 2.0 déjà dépassé ? Oui ! Il faut désormais parler de RIA lobalement, tout le monde est d’ac- cord sur ce qu’est une application pour Rich Internet Application. Depuis un peu plus d’un an, G RIA. Une application internet riche. nous assistons à un incroyable buzz autour de cette notion. Quand on parle de RIA, on parle essentielle- ment d’interface. En effet, la RIA a pour focus Mais finalement, à quoi correspond exactement ce terme ? d’offrir une expérience utilisateur, une inter- La question est loin d’être anodine, tant sa définition peut face proche de ce que l’on peut avoir sur le varier d’un éditeur à l’autre. Une chose est certaine, quelle poste de travail. Bref, l’interface RIA se veut aussi riche visuellement et ergonomique que soit la définition, avec les RIA, nous sommes clairement qu’une application Windows, MacOS X. Elle dans une nouvelle génération d’applications web, au-delà est aussi interactive, animée, dynamique. Les sites Web 2 avaient ouvert la voie, tout de ce que l’on peut connaître avec le web 2.0. Dans ce comme Flash, mais RIA va plus loin. C’est grand dossier RIA, nous allons vous donner les clés incontestablement le successeur de la notion techniques et stratégiques pour comprendre et décrypter de " web 2 " même si les fondements de l’ap- plication (en dehors de l’interface) restent cette vague de fond ! web 2. Parfois, on trouve pour RIA la défini- Programmez! - N°102 28 NOVEMBRE 2007 28-54 22/10/2007 16:28 Page 29 RIA tion suivante : Rich Interactive ments. Il faudra attendre les pre- Application. Mais fondamen- mières réalisations sérieuses talement, cela ne change pas pour voir comment cela peut se grand-chose. En RIA, on reste comporter. dans le navigateur, l’applica- Comme nous a confié François tion s’exécutant à l’intérieur. Lufeaux, l’idéal sera d’avoir une D’autre part, il nécessite un application " multi modal " ! plug-in compatible avec le navigateur utilisé. Connecté – déconnecté : le réel avenir ? Des plates-formes plus Il y a quelques mois, nous avions ou moins matures beaucoup parlé des applications Ajax web connectées / déconnectées Et le monde se bouscule pour selon la vision de Google, avec avoir droit de cité dans le mar- Google Gears. Il s’agit d’une API ché prometteur de la RIA : Flash / Flex, Silver- nible sous Linux), pour étendre l’universalité que l’on implémente dans son code pour gérer light, JavaFX, et tout simplement Ajax. Si pour de la plate-forme Microsoft. un fonctionnement local lorsque l’application Ajax, les solutions commencent à être À cela s’ajoute la solution de Sun : JavaFX. Si n’est plus connectée au réseau. On peut alors matures, elles demeurent toutefois sous- cette solution 100 % Java paraît intéressante, continuer à travailler, à sauvegarder. Lorsque outillées et le manque de spécifications stan- il faut demeurer prudent à cause du manque le réseau revient, l’application synchronise les dard pour unifier un peu l’ensemble cause un d’outils et surtout d’une trop grande jeunesse. données, les documents. Si cela peut intéres- réel souci, surtout que les frameworks Ajax ne Il faudra voir comment évolue la solution dans ser les applications RIA, cette technique reste manquent pas. " le développeur est un peu les prochains mois. marginale, surtout en dehors d’Ajax. Il faut que noyé, il est difficile de faire un choix " explique ce modèle puisse s’épanouir et montrer les Jean-François Lufeaux (Directeur Marketing RDA : entre indépendance et fusion scénarios d’utilisation. Ideo Technologies). Et malgré les initiatives de Dans le mouvement RIA, les RDA (Rich Desk- type OpenAjax, qui tardent à proposer du top Application) ne sont pas en reste ! WPF de La RIA mobile : oui, mais quand ? concret, la situation ne semble pas vouloir .Net 3.0 a ouvert les hostilités avec XUL / XUL Jusqu’à présent, la RIA se limite principale- bouger. " On observe une lente montée en Runner et Adobe Air. Nous sommes là dans un ment à nos postes de travail. Mais les éditeurs puissance des outils, les éditeurs qui suppor- contexte hors navigateur, s’appuyant sur un travaillent activement à fournir une déclinaison tent Ajax manquent d’universalité. Ajax n’est runtime pour s’exécuter. Bien plus puissantes mobile de leurs plates-formes RIA (ne parlons pas porté par de grands éditeurs, la commu- que les applications RIA, les applications RDA même pas de RDA, tout du moins à court nauté, éclatée, manque par conséquent de autorisent une exploitation des technologies terme). La mobilité pose un problème de sup- cohésion " remarque Stéphane Moreau (ingé- locales, tout en minimisant leur taille. port universel à cause de la multiplicité des nieur d’études chez Micropole-Univers). Cependant, il nous paraît difficile de garder modèles de téléphones, de smartphone, de isolé RIA et RDA. La logique voudrait qu’il y ait PDA, de systèmes. Adobe travaille à rendre le Adobe, Microsoft et Sun une fusion entre les deux plates-formes. plus universel son Flash Lite afin de pouvoir La seule plate-forme RIA aujourd’hui éprouvée D’ores et déjà le mouvement est en cours. utiliser une application Flex sans ce soucier du est Flex d’Adobe. Mais là encore, sa montée Ainsi, une application Flex peut s’exécuter sur modèle, du système. " Sur le mobile, c’est un en puissance a été longue. C’est seulement Air. Silverlight 1.1 avec le support de .Net offri- challenge. On doit créer une couche d’abstrac- avec la version 2 que Flex a pu montrer sa véri- ra une meilleure intégration avec la partie tion, car ce n’est pas homogène. L’objectif est table puissance et la v3, en cours de dévelop- desktop. Cependant, il n’y a pas de miracle à d’arriver à la puissance du player Flash 9 ! " pement, devrait asseoir la technologie attendre. Le contexte d’exécution étant diffé- selon Michael Chaize. Aucun délai annoncé d’Adobe. Surtout depuis l’apparition de la rent, les fonctionnalités disponibles diffèrent. mais l’espoir est d’y arriver à court terme (6-8 plate-forme RDA, Air. Cependant, l’arrivée de " C’est un prolongement naturel, même si on mois). Là se pose le problème de l’interface et Silverlight de Microsoft, en version finale 1.0 sort du navigateur. On développe en Flex, le de son adaptation, de la navigation, des res- depuis cet été, marque le début d’une guerre code peut être réutilisé dans l’environnement sources nécessaires. Pourra-t-on embarquer qui promet d’être implacable. Si Flex profite de Air. Il faut adapter son code, l’étendre. Sinon dans une même application le code et l’interfa- l’omniprésence du player Flash, Silverlight arri- cela n’aura aucun intérêt ! Mais on peut ce pour le navigateur, le mobile et le desktop ? ve avec de nouveaux outils Web et de design n’avoir qu’un seul code pour les deux plates- Microsoft rencontre aussi le même problème et le savoir-faire de Microsoft. Mais ce sera formes ", précise Michael Chaize d’Adobe. Et avec son Silverlight Mobile, toujours en déve- surtout avec la version 1.1, et le support de oui, pourquoi exécuter une application RIA en loppement. JavaFX prend bien en compte le .Net et des langages dynamiques, que Silver- RDA si cela n’apporte aucun avantage fonc- mobile mais il est un acteur marginal à l’heure light va véritablement affronter Flex. D’autre tionnel ? Il faut donc coder pour chaque cible actuel. part, il faudra attendre la disponibilité du pro- d’exécution et embarquer dans une seule jet Moonlight (un Silverlight open source dispo- application le code pour les deux environne- ■ François Tonic Programmez! - N°102 29 NOVEMBRE 2007 28-54 22/10/2007 16:29 Page 30 Dossier RIA Choisir une solution RIA Comme l’indique un article apparu sur Ajaxian(1) et datant déjà de plus de six mois, le panel de solutions permettant de réaliser des applications AJAX/RIA est pléthorique : à l’époque, plus de 210 outils étaient proposés, soit 80 de plus que l’année précédente. Et le phénomène n’est pas prêt de s’arrêter. onfronté à un tel bouillon de culture, le chef de projet, le directeur de pro- C jet, le responsable informatique sont désemparés : comment choisir LA solution qui convient le mieux, quels sont les critères qui doivent guider leur choix, quels sont les risques qu’ils prennent. Se reconnaître dans le foisonnement RIA Où en est le RIA aujourd’hui ? Pour simplifier, nous pouvons considérer qu’il existe deux branches principales : AJAX et les technologies " applet-like " : • AJAX est la branche la plus prospère, elle repose sur les capacités intrinsèques des navigateurs du marché : langage JavaScript, communication http asynchrone. Ce principe fondateur se décline sur le marché en une myriade de solutions et d’architectures. Nous y reviendrons. • Les technologies " applet-like " sont celles qui utilisent le navigateur comme hôte d’un works JavaScript (Dojo, Ext, YahooUI, lopper. C’est ce que nous verrons dans la système qui vient s’y incruster, mais qui lui Script.aculo.us/ prototype) peut entrer dans deuxième partie de cet article. est en fait exogène. Il s’agit donc d’une cette stratégie. Le Google Web Toolkit pré- solution de type " client lourd " qui avance sente une solution originale – et efficace – Les technologies " applet-like " masquée : les capacités du navigateur sont pour construire des applications de ce type. Historiquement, le premier système de ce type peu ou pas utilisées. • L’autre stratégie consiste à confier une par- est l’applet Java. Flash en représente le tie importante de la logique IHM au serveur. meilleur aboutissement (et aujourd’hui le plus Comprendre AJAX La partie cliente, généralement constituée utilisé). Microsoft avec Silverlight complète AJAX n’est pas un produit, c’est une idée. Une d’une armature HTML enrichie de nombreux l’offre. JavaFX - comme cela est expliqué dans idée qui s’incarne aujourd’hui de façon extrê- réflexes JavaScript, n’assure que des fonc- un autre article de ce numéro – n’est qu’une mement variée. On peut néanmoins dégager tions d’animation avancée (menus, arbres, manière simplifiée de produire des applets deux grandes stratégies : glisser-déposer). Elle contient peu ou pas Java. • Une stratégie de type essentiellement d’intelligence fonctionnelle. Cette stratégie Bien que les plates-formes techniques soient " client/serveur ". La partie cliente est marie généralement AJAX avec un framework différentes (Java, .NET, flash), les offres implémentée en JavaScript. La partie ser- Web classique comme ASP.NET, Struts, JSF, " applet-like " présentent beaucoup de simili- veur utilise une des plates-formes les plus PHP, RubyOnRails. C’est pourquoi j’ai appelé tudes : courantes du marché : Java, .NET, PHP, etc. cette stratégie : " AJAX hybride " dans la • Elles utilisent toutes un système déclaratif Toute l’IHM (présentation, logique) est suite de cet article. de construction d’interface (mxml pour hébergée par le navigateur. Le serveur n’exé- Il n’existe pas de meilleure stratégie AJAX : flex/flash, xaml pour Silverlight, JSON-like cute que les points de service dont le client l’AJAX total n’est pas intrinsèquement supé- pour JavaFX). a besoin. Il s’agit donc d’une stratégie rieur ou inférieur à l’AJAX hybride, tout dépend • Elles permettent toutes de lier des proprié- " AJAX Total ". L’utilisation directe de frame- de critères spécifiques à l’application à déve- tés d’objets avec les propriétés des widgets, (1) http://ajaxian.com/archives/210-ajax-frameworks-and-counting Programmez! - N°102 30 NOVEMBRE 2007 28-54 22/10/2007 16:29 Page 31 SweetDEV RIA 2.2 Piochez dans nos tags Ajax pour développer vos interfaces Web 2.0! SweetDEV RIA est une bibliothèque de composants Open Source prêts à l’emploi, dédiée au développement des applications Web “riches” sur les plateformes J2EE. - Tags lib SweetDEV RIA + Datagrid Glisser/déplacer de colonnes, tri multi- + Treeview colonnes, cases à cocher, pagination, scrolling horizontal,contenus multiples + Tabpanel dans les cellules, gestion de préférences... + Window docking Gérer des composants “Window” au sein d’une structure “Layout” pour définir des Window + IHM comparables à celles de Netvibes™ ou iGoogle™. + Calendar + Menu Les + de SweetDEV RIA : + Combobox • Un projet Open Source • Un support technique en France + Collapse content • Le développement de composants sur mesure • Une expertise en architecture et ergonomie + Excel export • Des formations + Zone Open Source Ajax Web 2.0 J2EE Licence Apache 2 Téléchargez SweetDEV RIA sur : www.ideotechnologies.com 28-54 22/10/2007 16:30 Page 32 Dossier solutions RIA offrent des mécanismes per- mettant d’éviter les deux problèmes majeurs de la sécurité RIA : le " XSS " et le " SQL Injection ". D’autres n’offrent rien. Faire un choix pertinent Choisir une solution RIA c’est donc autant connaître les avantages et inconvénients des diverses solutions proposées par le marché que de connaître les priorités qu’il faut consi- dérer et qui sont elles, très spécifiques au pro- jet ou à l’entreprise. Dans cet article nous allons considérer quelques solutions, parmi les plus connues : • Les frameworks JavaScript ont comme avan- tage de proposer une liberté maximale au développeur qui veut virtuellement faire ce qu’il veut. Cette liberté se paie au prix fort : l’outillage reste rustique, ubiquité, robustes- se et sécurité sont entièrement à sa charge. • JavaServer Faces (JSF) avec une extension AJAX (comme a4jsf ou ICEFaces) est la solu- tion reine de type " AJAX hybride " dans le la synchronisation étant ensuite automati- fonctions d’ergonomie très avancées ou/et monde Java. Elle possède tous les avan- quement assurée par le système. très originales. tages et les inconvénients des solutions • Elles offrent toutes l’intégration des appels • La productivité. Le développement RIA n’est hybrides : productivité (avec Seam), ubiqui- à un serveur via des Web Services. pas forcément plus coûteux qu’un dévelop- té, sécurité et robustesse. Les aspects ergo- Malgré l’hétérogénéité des plates-formes tech- pement Web classique : certaines solutions nomie et performances sont moins niques sous-jacentes, ces similitudes font que " AJAX hybride " en particulier peuvent profi- favorisés. La prise en compte de l’existant les réflexes acquis sur une plate-forme peu- ter d’un outillage ou de frameworks remar- n’a de sens que s’il est JSF. vent être reconduits sur une autre. Les cas quables (Visual Studio, Seam). • Le Google Web Toolkit est une solution de d’utilisation et les architectures adaptées sont • La performance. Les solutions " AJAX hybri- type " AJAX total " qui favorise les aspects les mêmes. Un développeur Flex/Flash peut de " ont tendance à multiplier les échanges performances, ubiquité, robustesse et sécu- devenir, par exemple, un développeur Silver- avec le serveur. Les solutions " AJAX total " rité grâce à un ingénieux système de déve- light ou JavaFX compétent après une phase ou " applet-like " exigent, elles, davantage loppement en Java (et non en JavaScript), d’apprentissage réduite. du navigateur client, qui n’est pas toujours puis de compilation en JavaScript. La princi- capable de faire face. pale limite de cette solution est la relative Les vraies questions • La prise en compte de l’existant. La techno- complexité de l’intégration client/serveur. La Avant de choisir une solution, il est indispen- logie déjà utilisée peut induire quelle exten- pérennité paraît garantie. sable de savoir de quoi nous avons vraiment sion AJAX doit être utilisée. Autre sujet : la • ASP.NET AJAX présente des caractéris- besoin et quelles sont nos priorités. Selon le réutilisation des compétences disponibles. Il tiques proches de JSF avec une extension type d’application, l’audience visée, le modèle est plus facile de passer de ASP.NET à AJAX : C’est l’extension naturelle d’ASP.NET économique, ces critères changent. Or ce sont ASP.NET AJAX, que d’utiliser le Google Web WebForms (dont il n’est en fait qu’une exten- eux qui conditionnent la validité d’un choix. Fai- Toolkit. sion). C’est une solution remarquablement sons un tour rapide de ces critères : • L’ubiquité. C’est la capacité d’une solution à outillée par Visual Studio. La prise en comp- • La pérennité. Si quelques solutions se déga- s’adapter aux différents environnements te d’un existant ASP.NET est très aisée. gent aujourd’hui du lot, il est encore bien trop clients : les principaux navigateurs du mar- • Flex est la solution de type " applet like " la tôt pour savoir qui finalement l’emportera. ché ou les divers systèmes d’exploitation. plus populaire. Elle en a tous les avantages, Même les produits soutenus par les plus Les surprises sont fréquentes. qui sont les mêmes que ceux d’une architec- grands ne sont pas à l’abri des caprices du • La robustesse. La fiabilité d’un logiciel repo- ture " AJAX total ". Le seul point faible est marché. se surtout sur la qualité de son code. Mais l’intégration client/serveur, nettement • L’ergonomie. Les solutions " AJAX hybride " cette qualité dépend aussi des facilités moins pratique que ce que propose permettent de fluidifier les manipulations uti- offertes par la plate-forme RIA utilisée. JSF/Seam ou ASP.NET AJAX. lisateur courantes (menus, onglets saisie • La sécurité. Sur Internet, c’est une question • Silverlight est la solution " applet like " du assistée, arbres, tables de données), les essentielle. Dans un intranet, la question monde .NET. Elle reprend le principe de solutions " AJAX Total " offrent en plus des est généralement moins sensible. Certaines construction déclarative de l’IHM popularisé par Programmez! - N°102 32 NOVEMBRE 2007 28-54 22/10/2007 16:30 Page 33 RIA Flex. L’ubiquité est encore assez limitée. L’ou- Tableau 1 tillage, avec Visual Studio, reste le point fort. • JavaFX est la solution " applet like " du monde Java. Les avantages et limites sont ceux rencontrés pour Silverlight, avec moins de crédibilité et de maturité. La correspondance entre ces différentes solu- tions et les critères décrits plus haut est don- née dans le tableau n°1. Définissons maintenant quelques catégories d’applications types, parmi celles qui sont le plus souvent rencontrées : • L’extension d’une application Web existan- te de manipulation de données (saisie, resti- tution, statistiques). Il s’agit d’une application classique que l’on veut faire évo- luer (nouvelles fonctionnalités) ou dont on veut améliorer partiellement l’ergonomie (quelques écrans critiques). La plate-forme technique existe et cela contraint forcément le choix de la solution RIA qui doit être gref- Tableau 2 fée (ASP.NET AJAX pour une application .NET par exemple). Une réponse " AJAX hybride " est adaptée. • Le développement complet d’une application RIA de manipulation de données pour un environnement particulier (une entreprise par exemple). Les besoins ergonomiques sont généralement très classiques, supportés par n’importe quelle solution RIA. Un niveau acceptable de performance suffit : le nombre d’utilisateurs est limité. La plate-forme clien- te étant connue, l’ubiquité n’est pas indis- pensable. L’aspect le plus crucial est souvent la productivité car l’application est constituée d’un nombre important d’écrans. Ici aussi, une solution " AJAX hybride " a plus de chance de donner satisfaction. • Le développement complet d’un progiciel de des internautes, dont on ne maîtrise ni le La correspondance entre les besoins de ces dif- manipulation de données. Il s’agit donc d’un nombre, ni les plates-formes (forcément férents types d’applications et les critères besoin spécifique aux éditeurs. Ce type d’ap- variées). Nous sommes sur Internet : la décrits plus haut est donnée dans le tableau n°2. plication est une variante du précédent avec sécurité doit être traitée avec soin. Une solu- des contraintes particulières : la plate-forme tion " applet-like " est indiquée. Nous pou- Conclusion cliente n’étant pas connue, l’ubiquité rede- vons aussi envisager une solution de type Une étude du marché des solutions RIA doit vient une priorité. Le nombre d’utilisateurs " AJAX Total ". être mise en perspective par rapport à des pouvant être extrêmement variable, l’aspect • La création d’un portail Web 2.0, c'est-à-dire besoins pour être pertinente. On découvre performance doit être considéré avec soin. un site offrant des outils dont l’ergonomie est alors que LA solution se hissant au-dessus de Dans ce cas, tous types de solution RIA doi- très avancée, originale, utilisant fréquem- toutes les autres n’existe pas (encore ?). Cer- vent être étudiés. ment des images, des graphismes et des tains outils gagnent aujourd’hui en popularité • Le rajout sur un portail Web classique de mécanismes comme le glisser-déposer. L’as- et rien n’interdit de penser que les limites quelques mécanismes RIA. Il s’agit donc de pect ergonomique devient primordial. Ubiquité, qu’ils présentent encore ne seront pas dépas- faire un lifting d’un portail existant en ren- performances et sécurité gardent leur carac- sées demain. Mais nous n’en sommes pas là dant sa manipulation plus fluide. La prise en tère essentiel pour les raisons décrites dans aujourd’hui. compte de l’existant est essentielle. Le pro- le cas d’un portail Web classique. Une solu- blème des performances et l’ubiquité sont tion " AJAX Total " - ou pourquoi pas " Applet ■ Henri DARMET très aiguës : la population visée est celle like " paraît la plus pertinente. Directeur Technique - Objet Direct / Homsys Group Recevez la NewsletterProgrammez! www.programmez.com/inscription.php- N°102 33 NOVEMBRE 2007 28-54 22/10/2007 16:32 Page 34 Dossier RIA Les 7 technologies en présence Les Rich Internet Applications sont apparues dès 2002, lorsque Macromedia a publié un papier mettant en avant cette évolution d’applications Web. Depuis, certaines technologies sont arrivées, d’autres se sont adaptées pour permettre de proposer une réelle innovation sur Internet. omment reconnaître une RIA ? Elles sont parfois difficiles à cerner, mais C proposent tout de même les caracté- ristiques suivantes : - Une interface dite riche : forcément plus ergo- nomique, et proposant des contrôles plus avancés. - Un contenu média plus poussé : de la vidéo, de l’audio, de la 2D et même de la 3D. - Des technologies centrées sur l’interface : en séparant la description de cette dernière (via une grammaire XML la plupart du temps) et en offrant les outils graphiques pour l’alimenter. Ainsi, au fur et à mesure des années et notam- ment grâce à l’explosion du Web 2.0, les acteurs se sont positionnés pour proposer chacun leur technologie permettant de créer des RIA. À noter, trois des principaux acteurs du Web présents sur ce domaine : Microsoft l’omniprésent mais également le dernier arrivé ; Adobe, profitant de l’expertise de Macromedia ; et Mozilla, qui propose son alternative libre et respectueuse des standards. Découvrons donc certaines de ces technologies. Adobe Flex Adobe Flex est un ensemble d'outils incluant un framework de développement d'applica- tions en Flash, c’est-à-dire que tout ce qui est fait avec Flex peut l’être avec Flash, mais plus rapidement. Cette technologie est basée sur un langage XML de description : le MXML (pour Macromedia XML). Toutes les actions représentant le comportement de l’ap- plication sont décrites grâce au langage orien- té objet, l’ActionScript 3. Le code est ensuite compilé et un swf est généré. Flex est composé de plusieurs éléments : le comporte de nombreux points forts : le déve- définis, permettant la création d’interface SDK qui est en fait le compilateur, complète- loppement est très rapide grâce à son IDE et avec une liberté totale, et donc avec richesse. ment gratuit et open source ; Flex Builder, l'en- son système WYSIWYG de drag&drop des vironnement de développement basé sur composants Flash, comme les accordéons ou Silverlight Eclipse, disponible en plug-in ou en version les sliders, qui permettent d'enrichir les possi- Silverlight est l'arme RIA de stand-alone ; Flex Charting pour produire des bilités. L’Action Script 3, langage objet à mi- Microsoft. Cette technologie a graphiques et LiveCycle Data Services qui chemin entre le Java et le C# offre de été présentée lors du MIX 07 à forme un ensemble de briques fournissant nombreuses possibilités et une extension Las Vegas. Certains le qualifient de Flash killer divers services vers le serveur. Cette solution complète de l'ensemble des composants pré- tant ses qualités ont impressionné, notam- Programmez! - N°102 34 NOVEMBRE 2007 28-54 22/10/2007 16:32 Page 35 Perforce Gestion rapide de configuration logicielle (GCL) La fonctionalité Folder Diff, un atout de productivité du système de GCL Perforce. Folder Diff est un outil interactif d’affichage en juxtaposition permettant de comparer l’état de deux groupes de fichiers. À l’aide de Folder Diff, on peut rapidement déterminer les différences entre les fichiers situés dans des dossiers, des branches, des étiquettes ou sur votre disque local. Cette fonction est particulièrement utile lorsque vous devez réaliser des fusions de codes complexes. De plus, si vous travaillez deconnecter, Folder Diff facilite la synchronisation des données avec celles du serveur Perforce lorsque Folder Diff de Perforce vous vous connectez de nouveau au réseau. Folder Diff n’est qu’un des nombreux atouts de productivité offerts par le système de GCL Perforce. Téléchargez sans conditions une copie gratuite de Perforce sur www.perforce.com. Vous bénéficiez d’une assistance technique gratuite pendant votre période d’évaluation. 28-54 22/10/2007 16:33 Page 36 Dossier ment dans le domaine de la vidéo. Silverlight est un plug-in multi système d'exploitation (Windows, Mac OS X) et multi navigateur (IE, Firefox, Safari); permettant d'offrir de nou- velles expériences aux utilisateurs. Microsoft ne cesse de rappeler que leur offre permet de créer des expériences, terme répété et assez explicite. Le développement avec Silverlight peut se résumer en trois points : tout d'abord, la des- cription de l'interface qui est écrite en XAML, une grammaire XML comme on en trouve main- tenant dans quasiment chaque technologie d'interface. Ensuite, et c'est certainement l'un des points forts de Silverlight, une gamme d'outils pour créer des applications riches : Microsoft Expression et Visual Studio. Ces outils permettent donc de facilement créer des applications, mais surtout de personnaliser les interfaces pour offrir de vraies expériences adaptées. Le troisième point concerne la niveau du taux de pénétration. À noter que la mettant l’exécution de code Java sur des sup- couche plus applicative et métier d'une appli- plate-forme mobile est toujours en développe- ports mobiles tels que les PDA. Le mobile cation. Il faut savoir que Silverlight 1.1 (version ment. étant l’un des marchés les plus prometteurs, alpha) intègre la DLR (Dynamic Language cet avancement est forcément très straté- Runtime), c’est-à-dire une machine virtuelle JavaFX gique. JavaFX Script se rapproche plus des .NET dans laquelle on peut utiliser des lan- JavaFX est la RIA de Sun. En bénéficiant d’une technologies RIA précédemment citées, du fait gages dynamiques tels que Ruby ou Python, ce large communauté de développeurs grâce à qu’il s’agit d’un langage de script pouvant qui permet ainsi de créer des applications utili- Java, Sun a voulu les conserver et les emme- décrire une interface.Il y a une grosse diffé- sables avec Silverlight. ner vers un développement plus simple d’inter- rence : il ne s’agit pas là d’une grammaire Les points forts de Silverlight sont nombreux. faces, ce qui n’était pas le plus évident XML, mais d’un langage plus déclaratif décri- Il y a un gros potentiel dans ce petit plug-in qui auparavant. Ainsi JavaFX (anciennement vant tout de même une interface, statique- permet par exemple de diffuser de la vidéo nommé projet F3) a vu le jour : il s’agit d’une ment typé et compilé pour la plate-forme Java. Haute Définition. De plus, Microsoft est dans suite de produits et de technologies autour de Bien que cette séparation soit très intéressan- une phase d'ouverture et le fait que Silverlight Java pour permettre aux développeurs exis- te pour toute personne souhaitant facilement fonctionne sur Mac et sur Linux (via le projet tants de faire leurs propres applications créer et maintenir son interface, les résultats Moonlight) est significatif. Toutefois le plug-in riches. Il en existe pour le moment deux de cette technologie, trop récente pour être devra se faire une place dans un domaine déjà briques : JavaFX Mobile et JavaFX Script. jugée, sont encore peu visibles. écrasé par le Flash Player, notamment au JavaFX Mobile est en fait une plate-forme per- OpenLaszlo Tableau récapitulatif OpenLaszlo est une plate-forme de développe- Flex Silverlight OpenLaszlo JavaFX SOFTEAM Formation 2007 : ment d'applications riches, en open source. NOS BEST SELLERS Langages ActionScript 3 Javascript, Ruby, LZX Ses applications sont développées via une MXML Perl, etc. XAML Javascript JavaFX Script solution qui produit, à partir du même code Outils Flex Builder Visual Studio Expression Editeur texte Eclipse Creative Suite 3 (Windows uniquement) NetBeans source, une application en DHTML (HTML, CSS Environnement Flash Player Silverlight Flash Player et Javascript) ou Flash. d'exécution moteur HTML Java Comme de nombreuses technologies riches, Plates-formes Windows Windows Windows Windows le principe d'OpenLaszlo est de décrire des supportées Mac OS X Mac OS X Mac OS X Mac OS X interfaces via un langage basé sur une gram- Linux Linux Linux Linux maire XML, appelé le LZX, et un langage de Open source Oui, SDK uniquement Non Oui Oui, licence GNU/GPL script pour décrire les actions et événements, Version actuelle Flex 2.0.1, Flex 3 bêta 2 Silverlight 1.0, OpenLaszlo 4.0.5 N.A. Silverlight 1.1 alpha en l’occurrence le Javascript. Le serveur Lasz- Tarifs (TTC) SDK gratuit Expression Studio lo peut être utilisé pour compiler directement Flex Builder 2 : à partir (4 logiciels) : 799€ Gratuit Gratuit le code et fournir une application dynamique- Q i & 4499 de 537€, réduction car Expression (à l’unité) : ment. Ce serveur est basé sur la technologie sortie prochaine de Flex 3 de 399€ à 699€ Visual Studio : à partir Java. Tout cela présente certains avantages, de 305€ HT comme la non-dépendance à un système d'ex- Programmez! - N°102 36 NOVEMBRE 2007 28-54 22/10/2007 16:33 Page 37 RIA ploitation. Il n'existe pas réellement d'outil évidemment utilisable via Eclipse. Les outils des calendriers, etc.) vers le bureau. En se pour développer en LZX. Le code source peut graphiques utilisés pour ces RIA représentent basant sur des extensions de ces mêmes donc être écrit avec votre éditeur de textes également un certain coût : difficile toutefois technologies, les RIA proposent donc de favori, puis compilé avec le SDK d'OpenLaszlo de les compter dans la mesure où ils peuvent déployer vos applications directement sur disponible gratuitement. Il possède plusieurs servir pour d’autres tâches (on pense par votre bureau, en faisant abstraction du naviga- atouts : multi plate-forme et simple de prise en exemple à Photoshop). Il existe bien évidem- teur. Tout cela permet forcément de profiter de main grâce à une grammaire XML. Les applica- ment des formations diverses pour apprendre plus de puissance pour les applications sans tions créées ont une vraie richesse et l'on ces technologies, données par des orga- pour autant s’affranchir des avantages de retrouve tous les nouveaux comportements : nismes agréés pour la plupart. Les tarifs sont l’Internet. Ce qui va nous amener à parler des drag'n'drop, menus déroulants, effets, etc. vraiment variables, et des formations d’une RDA, pour Rich Desktop Applications. Depuis sa version 4, OpenLaszlo semblerait semaine environ sont proposées. Elles per- vouloir s'ouvrir vers d'autres plates-formes mettent une bonne prise en main des Les plates-formes comme les mobiles et en ne proposant pas concepts importants. Il faut savoir que la cour- de RDA (Rich Desktop seulement une compilation en Flash mais be d’apprentissage est plutôt rapide pour Application) aussi en DHTML. Le coût de développement toute personne ayant un minimum de bagage Adobe Air d’une RIA est bien évidemment variable en en HTML et/ou objet, de par l’utilisation d’une Air est assez difficile à cerner à première vue. fonction d’un très grand nombre de para- grammaire XML pour décrire l’interface et de Techniquement, il s'agit d'un environnement mètres. Néanmoins, il est toujours possible de langages objets pour aller plus loin (l’Action d'exécution multi plate-forme. Pour faire plus mettre en avant certains points. En premier, Script se rapprochant par exemple du Java). simple, il s'agit en fait d'un lecteur universel per- les technologies pour réaliser ce type d’appli- On constate donc que les technologies devien- mettant donc de lire du Flash, de l'HTML et des cations sont gratuites, ce sont les outils de nent de plus en plus nombreuses et surtout documents PDF à travers une application exécu- développement qui peuvent être payants. matures. Nous n’avons pas parlé de toutes les table sur Windows comme sur Mac ou Linux. Leurs prix sont très variables, en fonction des technologies existantes, mais il faut savoir Encore en développement, Air est disponible sur nombreuses offres proposées par Adobe et qu’il y a de plus en plus de possibilités. Cette le lab d'Adobe, pour une sortie programmée Microsoft. Concernant OpenLaszlo, il n’existe évolution se traduit notamment par un nou- début 2008. La principale différence avec un pas d’IDE officiel, d’où cette absence de prix. veau phénomène : le désir de déporter les simple Flash Player est que les applications Air JavaFX se basant sur du Java, est donc bien applications Internet (comme des clients mail, ne sont pas lues à l'intérieur même d'un naviga- SOA est devenu en peu de temps le mot clé Soyez prêts des développements logiciels. SOA n’est toutefois qu’une nouvelle façon de faire qui s’appuie sur un pour les nouvelles ensemble de technologies existantes : UML, J2EE, .Net, XML, etc. Maîtriser SOA implique ainsi de maîtriser ces technologies pour les associer efficacement au sein d’une nouvelle approche. SOFTEAM, forte de son expérience en Méthodologie, Architecture et Développement, architectures SOA! a construit un cursus complet de formation SOA qui vous permet de débuter dès les phases amont, de poursuivre en architecture, et d’aller jusqu’à la réalisation dans le langage de votre choix. Cartographie Méthodologie SOFTEAM Formation 2007 : SELLERS Urbanisation pour SOA NOS BEST BPM Méthodologie UML pour la maîtrise d’ouvrage 2 j Portail Analyse et conception avec UML 4 j Architecture SOA Méthodologie pour SOA 2 j EAI UML SOA SOA Architecture SOA 2 j SOA SOA Développement de Web Services en Java 3 j XML Architecture SOA Développement de Web Services en C# 3 j Architecture et intégration : la synthèse 3 j XML et Web Services Patterns Programmation orientée objet avec Java 4 j WebServices WebServices Développement d’applications JEE 5 5 j Frameworks J2EE en J2EE Développement d’applications JEE 5 Front End 4 j .NET Développement d’applications JEE 5 Back End avec EJB 3 3 j WebServices Maîtrise du framework (Struts / JSF / Spring) 3 j en .Net Développement d’applications .NET / C# 4 j Quinte&sens • 4499 Quinte&sens Calendrier complet Tél. : 01 53 96 84 00 - Fax : 01 53 96 84 01 et inscriptions en ligne Paris : 21 avenue Victor Hugo - 75016 www.softeam.fr Rennes - Nantes - Sophia Antipolis 28-54 22/10/2007 16:34 Page 38 Dossier RIA teur mais directement sur votre bureau, choix de la technologie lorsqu’il s’agit de tout en conservant l'avantage d'être multi développer une application riche. Il faut plate-forme. On pourrait donc croire qu'Air bien savoir tout d’abord qu’il n’y a pas est un nouveau navigateur, plus orienté de solution idéale, mais uniquement sur Flash. Que nenni ! L'environnement des avantages pour certaines d’entre d'exécution peut-être intégré à même elles en fonction de nombreux para- l'application, et donc il n'y a rien d'autre à mètres. Ainsi, les applications Flex pour- télécharger que l'application en elle- ront toucher une cible large, via le taux même. Elle offrira également de nom- de pénétration du Flash Player 9 (plus breux autres avantages, au-delà de ceux de 93%), alors que Silverlight concerne que propose déjà Flash, comme une inter- plutôt certains marchés de niches, du action avec les fichiers, une intégration fait de son plug-in encore frais et donc native au système d’exploitation, l’embarque- XUL/XULRunner peu déployé sur Internet. Open Laszlo est une ment d’une base de données (SQLite), etc. Au XUL est un langage de description d'interfaces bonne alternative de par sa double capacité à niveau du développement, les outils seront exac- graphiques, basé sur le XML. Couplé avec le produire du Flash et du DHTML : néanmoins, tement les mêmes que ceux utilisés pour déve- XULRunner, environnement d’exécution multi sa communauté moins importante et l’absen- lopper des applications Flex : une syntaxe plate-forme, il forme un couple permettant de ce d’un environnement de développement MXML, le langage Action Script 3, LiveCycle Data créer des RDA. C'est un projet mené par la fon- solide peuvent en éloigner certains. À noter Services, etc. Les seuls ajouts seront donc des dation Mozilla. XUL est donc un langage de que chaque acteur a bien compris l’importan- composants centrés sur les avantages cités ci- description d'interface, utilisé par exemple ce de l’interopérabilité entre les OS et les dessus et des extensions à Flex. La lecture du pour décrire Firefox. Il est très respectueux des navigateurs, et Microsoft proposera donc Sil- HTML se fait grâce au moteur de rendu de Safari : standards W3C et bien évidemment open sour- verlight sur les trois principales plates-formes : WebKit. En déportant les applications Internet ce. Le XUL est donc un fichier XML interprété Windows, Mac OS et Linux (via Moonlight). Le sur le bureau, Adobe propose aux développeurs par le moteur de rendu : XULRunner. Le langa- taux d’apprentissage peut également devenir Web d’exprimer tout leur potentiel et leur créativi- ge d'interaction utilisé derrière XUL est le un élément important au moment du choix : té pour créer des applications plus puissantes et Javascript. Un simple éditeur de texte suffit à en permettant aux développeurs de réutiliser avec un autre objectif. Pas encore sorti en ver- écrire les fichiers XUL qui ne sont que du XML. des langages déjà connus, Silverlight aura une sion définitive, Air se fait déjà remarquer par des Malheureusement, il n’existe pas de réel envi- courbe d’apprentissage forcément plus rapide applications comme celle d’eBay. ronnement de développement (malgré que des développeurs Flex qui devront quelques essais, notamment basés sur Eclip- apprendre le langage ActionScript, auparavant WPF se). C’est l’un des points faibles pour ce pro- destiné aux spécialistes de Flash. Microsoft Windows Presentation Foundation (WPF) est la jet, sur lequel Mozilla ne peut consacrer pourrait également prendre le dessus pour nouvelle couche présentation de Windows. beaucoup d’effectif, préférant se concentrer ses capacités à facilement encoder et mettre WPF est en version finale depuis fin 2006, en sur le développement de Firefox. XUL produit en ligne des vidéos de haute définition, ce qui même temps que Windows Vista. L'intérêt de des interfaces graphiques très complètes a valu une belle publicité à Silverlight lors de WPF est de séparer toute la partie interface du comme on peut le voir avec Joost, permettant sa présentation en mai dernier. À l’heure reste de l’application. Microsoft parle d'expé- de regarder la TV via Internet ou SongBird, un actuelle, Adobe a pris toutefois une avance rience utilisateur : proposer des outils simples lecteur multimédia nouvelle génération à la non négligeable du fait de son expérience à utiliser, mettant en relation la complexité des iTunes. Entièrement gratuit et soutenu par la dans les domaines graphiques (Flash, Photo- logiques métiers et l'ergonomie désirée par fondation Mozilla, XUL permet de créer des shop, Dreamweaver, etc.) alors que Microsoft les designers. Partie intégrante de .NET 3.0, clients riches déjà très utilisés. Il propose de vient seulement d’arriver sur ce domaine. La WPF nécessite ce framework pour fonctionner. nombreux avantages, mais soulève tout de même remarque pourrait être faite pour Sun Microsoft propose ainsi de créer des applica- même certaines interrogations : XUL arrivera-t- qui arrive avec une solution relativement tions riches de bureau (RDA). Elles ne sont dis- il à sortir son épingle du jeu chez Mozilla qui se jeune. Bien que les applications riches (Inter- ponibles que sur la plate-forme Windows. Les concentre sur son produit phare : Firefox ? net ou de bureau) soient encore récentes, la outils utilisés pour développer ce genre d’ap- vitesse d’évolution d’Internet force les déve- plications sont les mêmes que Silverlight : Peut-on choisir ? loppeurs et les décideurs à s’intéresser à ces Microsoft Expression et Visual Studio. Les Grâce au désir croissant des utilisateurs technologies qui feront certainement partie points forts de WPF sont nombreux. Il profite d’être toujours connectés, sont apparues ces de l’avenir des applications. de la diffusion de Vista pour se faire la part applications hybrides, à cheval entre Internet belle parmi les prochaines applications de et les applications plus classiques de votre ■ Fabien Deshayes bureau. Qui plus est, WPF bénéficie ainsi de la bureau. Leur avenir reste confus mais le fait Consultant RIA pour la société Tangane beauté graphique de DirectX (pour la 3D par de proposer à des développeurs Web de créer (www.tangane.com) et rédacteur du blog " Du exemple), du framework .NET déjà très utilisé des applications plus puissantes et hors du client riche à un Internet riche " et du langage objet C# (entre autres), c’est-à- navigateur attirera forcément la curiosité. Bien (www.fdeshayes.net). dire des valeurs sûres. évidemment, on peut se poser la question du [email protected] Programmez! - N°102 38 NOVEMBRE 2007 P 28-54 22/10/2007 16:34 Page 39 InfoPro la collection pour les pros de l’informatique NOUVEAUTÉ à paraître le 14 novembre 9782100513673 • +0-gX^\j 9782100511419 • ))+gX^\j 39 ` Jean-Luc Deleage 9782100512621 25 ` Annick Fron • )//gX^\j 32 ` Pascal Grojean Médéric Morel Guillaume Plouin NOUVEAUTÉ à paraître le 14 novembre NOUVEAUTÉ à paraître le 14 novembre Retrouvez 9782100515684 • )//gX^\j notre JEU CONCOURS 9782100500765 • 37 ` Chantal Morley ),-gX^\j et la liste des libraires Jean Hugues 29 ` Etienne Vautherin Bernard Leblanc participant Olivier Hugues à l’opération sur MAOGANI 071009 www.dunod.com Pub Programmez 210x285.indd 1 15/10/07 15:21:38 28-54 22/10/2007 16:34 Page 40 Dossier Flash, Flex, Air, dans l’univers des RIA La présence de plus en plus grande d’Adobe dans le domaine des RIA est incontestable. Néanmoins entre Flash, Flex et Air il est difficile d’identifier le produit le mieux adapté à la création d’une interface cliente riche. Cet article a pour but de vous décrire à travers les trois produits cités précédemment, la mise en place d’un composant simple communé- ment appelé " Menu accordéon " . Flash Flash est souvent associé à la réalisation d’animations graphiques mais il dispose également de composants pouvant être utilisés dans la réali- sation d’interfaces cliente riches. Lors de la création d’un nouveau projet, on constate aisément que Flash n’est à première vue pas conçu pour réaliser des IHM, car on note la présence de " time line " qui ont pour objectif de définir la succession des actions dans le temps. Ces successions sont par contre très utili- sées dans le domaine graphique (marche d’un personnage, rebond d’une balle…). Voyons comment implémenter notre menu accordéon. Activation des composants La première chose à faire est d’activer la vue des composants Fig. 2 : Création des layers et mise en place du composant "Accordion" de Flash. Pour ce faire, il suffit de se placer dans le menu " Windows > Déve- menu_flash.createChild(View, "CONT3", {label:"Conteneur C"}); loppement Panel " et d’activer l’option " Components " (Fig.1). Création des layers // ------CREATION DES SOUS MENUS ---- Nous allons créer deux layers. Le //- Conteneur A premier va contenir le code Action var s1:Object = menu_flash.CONT1.createChild(Label, "sousMenu1",{_x:10, _y:10}); Script et le second le composant s1.text = "Sous Menu A1"; " Accordion " ces layers seront var s2:Object = menu_flash.CONT1.createChild(Label, "sousMenu2",{_x:10, _y:30}); Fig. 1 : Vue des composants de Flash nommés respectivement s2.text = "Sous Menu A2"; " Action_Script " et " Composant " Une fois, ces deux layers créés, il suffit de sélectionner celui devant //- Conteneur B contenir le menu et d’y placer le composant " Accordion " via un " glis- var s3:Object = menu_flash.CONT2.createChild(Label, "sousMenu3",{_x:10, _y:10}); ser-déplacer ". La dernière étape consiste à éditer les propriétés du s3.text = "Sous Menu B1"; composant en lui attribuant le nom de " menu_flash " (Fig.2). var s4:Object = menu_flash.CONT2.createChild(Label, "sousMenu4",{_x:10, _y:30}); s4.text = "Sous Menu B2"; Le code La phase finale revient à la mise en place du code qui sera fait entièrement en langage action script. Pour cela, il convient de se placer sur le layer //- Conteneur C " Action_Script " et dans la partie " Action " de saisir le code suivant : var s5:Object = menu_flash.CONT3.createChild(Label, "sousMenu5",{_x:10, _y:10}); s5.text = "Sous Menu C1"; import mx.core.View; var s6:Object = menu_flash.CONT3.createChild(Label, "sousMenu6",{_x:10, _y:30}); import mx.controls.Label; s6.text = "Sous Menu C2"; // ----- CREATION DES CONTENEURS ---- Avant l’exécution de ce code, veillez à avoir ajouté le composant " Label " menu_flash.createChild(View, "CONT1", {label:"Conteneur A"}); à la librairie du projet. Pour cela, activez la vue " Library " dans le menu menu_flash.createChild(View, "CONT2", {label:"Conteneur B"}); " Windows ". Sélectionnez le layer " Composant ", y placer un compo- Programmez! - N°102 40 NOVEMBRE 2007 28-54 22/10/2007 17:15 Page 41 RIA Fig. 4 : Menu accordéon avec Flex Fig. 3 : Menu accordéon avec Flash sant label pour le supprimer ensuite. Vous pouvez à présent exécuter le code pour voir apparaître le résultat représenté par la figure 3. Flex Notre composant est à présent implémenté et le projet peut être testé Mise en place du composant (Figure 4). Commençons par créer un nouveau projet Flex à l’aide de l’outil Flex Builder. Une fois ce projet créé, il faut nous placer en mode design et AIR insérer le composant " Accordion " situé dans la catégorie " Navigator " AIR est un runtime (Adobe Integrated Runtime) permettant d’exécuter en via un " glisser-déplacer " ligne ou hors ligne des applications développées en Flash, Flex, HTML… par conséquent, AIR doit être considéré comme un moyen de distribution Le code d’applications et non un outil de développement d’applications RIA. Flex, possède un langage nommé MXML permettant le design des com- posants ne laissant qu’à Action Script la partie traitement des données. Et les données ? C’est donc en MXML que nous allons configurer notre composant. Pour Flash et Flex étant utilisés par la partie cliente, il leurs est impossible de cela, il faut se placer en mode Code et saisir les lignes suivantes : communiquer directement avec la couche de données. Pour établir une communication, il faut user d’un second langage qui servira de passerelle entre les données et l’application RIA. Ce type de passerelle peut éventuel- Que faut il en conclure ? EMPLOI : offres & Programmez!interviews- N°102 de recruteurs41 NOVEMBRE 2007 www.programmez.com 28-54 22/10/2007 16:35 Page 42 Dossier RIA JavaFX : une nouvelle manière de construire des applications Swing Annoncé en fanfare lors du dernier JavaOne (mai 2007), JavaFX a suscité, depuis, moult commentaires, une controverse sur sa pertinence et quelques espoirs. JavaFX a été présenté comme l’alternative Java aux solutions Flex d’Adobe ou Silverlight de Microsoft. En moins abouti. D’où la controverse. ette vision de JavaFX n’est que partiellement juste : JavaFX n’est pas à proprement parler une solution RIA, c’est-à-dire un C outil pour projeter des appliquettes sur un navigateur client, à l’instar de Flex/Flash. Fondamentalement, JavaFX est un nouvel outil pour construire des applications Swing. Quelles qu’elles soient. JavaFX est une gamme d’outils qui est destinée à s’enrichir dans les mois et années qui viennent. Aujourd’hui, il y a deux outils dans la gamme : • Un langage de scripting (JavaFX Script) avec son environnement de développement associé (plug-in Eclipse ou Netbeans) • Un système logiciel pour matériel mobile (comme un téléphone por- table) capable d’exécuter des applications Java et donc JavaFX Script. Cet article ne traitera que de JavaFX Script, qui est l’outil censé être la solution RIA de la plate-forme Java et à ce titre, concurrente d’Adobe Flex/Flash et Sliverlight. JavaFX Script est un interpréteur. A partir d’un fichier source JavaFX (extension .fx), cet interpréteur construit une inter- face homme machine (IHM) basée sur Swing et lance son exécution. L’originalité de JavaFX est que le style de programmation proposé est déclaratif et non impératif : l’IHM à construire est décrite (à l’instar de ce qui est fait classiquement en HTML par exemple) alors que tradition- nellement, une application Swing est spécifiée comme une suite d’ins- tructions à exécuter. Cette démarche n’est pas nouvelle. Elle est au cœur de Flex et de Silverlight. Avec Flex ou Silverlight, l’interface à JButton button = new JButton("Click here"); construire est décrite en utilisant un format basé sur XML. Ce sera button.addActionListener(new ActionListener() { MXML dans le cas de Flex et XAML dans le cas de Silverlight. JavaFX uti- ActionBean actionBean = new ActionBean(); lise un format dérivé de JSON, mais le principe reste identique. public void actionPerformed(ActionEvent evt) { actionBean.doIt(); La programmation déclarative } Illustrons ce nouveau paradigme de programmation par un exemple : Com- }); mençons, en utilisant JavaFX, par créer une frame contenant un bouton : JFrame frame = new JFrame(); var myBean = new ActionBean(); Frame { frame.getRootPane().setLayout(new BorderLayout()); content: Button { frame.getRootPane().add(button); text: "Click here" frame.pack(); action: operation() { frame.setVisible(true); myBean.doIt(); } } } } visible: true } Au-delà de la simplification de l’écriture en JavaFX, ce qu’il convient de Créons le même frame en utilisant directement Swing : noter est la différence d’approche. Avec JavaFX, on décrit ce que l’on désire obtenir et non comment on l’obtient. La programmation impérati- public class MiniGui { ve ne perd pas tous ses droits. Mais elle reste confinée à l’implémenta- tion de réflexes, comme " l’opération " qui sera exécutée lorsque le public static void main(String argv[]) { bouton est cliqué. Programmez! - N°102 42 NOVEMBRE 2007 28-54 22/10/2007 16:35 Page 43 28-54 22/10/2007 17:16 Page 44 Dossier }, TextField { value: bind myModel.lastName columns: 10 } ] } visible: true } Dans l’exemple qui précède, nous avons défini une fenêtre contenant deux champs de saisie. Ces deux champs sont liés aux deux propriétés du même bean " MyModel ". Ces deux propriétés sont toutes les deux liées avec le titre de la fenêtre (notez au passage l’utilisation des guille- mets et des accolades pour intégrer la valeur de ces deux propriétés). Dès que la saisie d’un champ est validée (en passant au suivant par exemple) le titre de la fenêtre est automatiquement mis à jour. La magie du binding Les possibilités offertes par ce mécanisme sont nouvelles, originales et La programmation déclarative est une idée intéressante, mais qui n’ap- demandent un savoir- faire encore peu répandu. Je ne peux résister à porterait qu’un avantage mineur au développeur si elle ne comportait présenter ici un exemple d’implémentation du " glisser-déposer " (drag pas un mécanisme qui établisse une correspondance entre des don- and drop) réalisé à l’aide de quelques " binding " adroitement placés. nées et les widgets qui les présentent à l’utilisateur. Ce mécanisme est Cet exemple est extrait du " JavaFX Script 2D Graphics Tutorial " : le " binding ". Un binding est un lien entre un attribut d’un artefact gra- phique (le contenu d’un champ de saisie, le titre d’une fenêtre mais Group { aussi la couleur de fond d’un panel, etc.) et une propriété d’un objet (un content: JavaBean par exemple). Ce lien implique une synchronisation automa- [Line { tique entre l’attribut et la propriété. Si nous avons, par exemple, un x1: bind x1 champ de saisie lié à la propriété name du bean myBean : y1: bind y1 x2: bind x2 TextField { y2: bind y2 value: bind myBean.name stroke: bind stroke }, strokeWidth: 2 }, Lorsqu’un utilisateur saisit dans le champ textuel un nouveau nom, ce Circle { nom sera automatiquement reporté dans la propriété " name " de cx: bind x1 " myBean ". Inversement, si pour une autre raison, la propriété " name " cy: bind y1 est modifiée, sa nouvelle valeur est automatiquement affichée par le radius: 5 champ de saisie. Il est possible de lier une propriété à plusieurs attri- onMouseDragged: operation(e:CanvasMouseEvent) { buts et obtenir ainsi des chaînes de synchronisations : x1 += e.localDragTranslation.x; y1 += e.localDragTranslation.y; import javafx.ui.*; } }, class MyModel { Circle { attribute firstName: String; cx: bind x2 attribute lastName: String; cy: bind y2 } radius: 5 onMouseDragged: operation(e:CanvasMouseEvent) { var myModel = new MyModel; x2 += e.localDragTranslation.x; y2 += e.localDragTranslation.y; Frame { } title: bind "{myModel.firstName} {myModel.lastName}" }] content: FlowPanel { } content: [ TextField { Un groupe rassemble un trait et deux cercles dont les centres sont value: bind myModel.firstName situés à chaque extrémité du trait. Les extrémités du trait et les centres columns: 10 du cercle sont liés à 4 valeurs (x1 y1 x2 y2) définies par ailleurs dans le Programmez! - N°102 44 NOVEMBRE 2007 28-54 22/10/2007 16:36 Page 45 RIA fichier " .fx ". A chaque cercle, un réflexe est défini lorsqu’un événe- stroke: darkblue ment souris de type " déplacement " est reçu. Cet événement modifie }, les valeurs liées au centre du cercle, pour les faire correspondre à l’em- … placement actuel de la souris. Du fait des binding, cette mise à jour Button { entraîne automatiquement la mise à jour des coordonnées du centre du text: "Width" cercle ainsi que celles d’une extrémité du trait. L’utilisateur a l’impres- action: operation() { sion de déplacer le trait à l’aide d’un cercle qui sert de poignée. Le tour width = [0..200] dur 1000; est joué. } }, Une richesse à concrétiser JavaFX Script propose d’ores et déjà un langage complet pour décrire Quand on appuie sur le bouton, un réflexe est déclenché qui modifie la des constructions (graphiques ou données) d’une part et pour implé- largeur du rectangle en la faisant passer de la valeur 0 à la valeur 200 menter des réflexes d’autres part. Il est clairement orienté objet avec la en 1 seconde (1000 millisecondes). possibilité de définir des classes. L’héritage est proposé, y compris mul- Dans le monde rude du RIA, la place de l’outillage est prépondérante : tiple, ce que Java ne permet pas ! La quasi-totalité des instructions de qu’est ce que JavaFX peut opposer aux redoutables FlexBuilder et contrôle sont présentes (if, while, for, foreach, try…catch). JavaFX implé- VisualStudio de ses concurrents ? Sur les IDE Java les plus connus, pas mente une logique de collections très souples, servies par de nom- grand-chose encore. Il existe bien des plug-in pour Eclipse et NetBeans, breuses constructions syntaxiques. En voici une illustration, tirée de mais ni l’un ni l’autre n’offrent encore de vue WYSIWYG de la page JFX. " Learning JavaFX Script " : Cela devrait être rapidement corrigé. Aujourd’hui, c’est ailleurs qu’il faut chercher les premiers vrais composeurs d’application JavaFX. Prenez var x = [1,2,3]; le temps, par exemple, de jouer avec un outil plein de promesses : JFX- insert 10 into x; // yields [1,2,3,10] Builder. Il est disponible via JavaWeb Start sur le site : insert 12 before x[1]; // yields [1,12,2,3,10] http://www.reportmill.com/jfx/ delete x[. == 12]; // yields [1,2,3,10] delete x[. >= 3]; // yields [1,2] Perspectives insert 5 after x[. == 1]; // yields [1,5,2]; JavaFX est un produit finalement mal connu : il est présenté un peu par- insert 13 as first into x; // yields [13, 1, 5, 2]; tout sur le Web comme une solution RIA, mais c’est en fait une nouvelle delete x; // clears the array and yields [] solution pour construire des applications Swing, qu’elles soient RIA ou non. D’ailleurs, qu’est-ce qu’une application Swing RIA ? C’est une Sont aussi proposés, un mécanisme puissant de formatage, la possibi- application graphique qui s’exécute sur une applet. Oui : les applets qui lité d’armer des réflexes sur mise à jour d’un attribut ou d’une collec- accompagnent Java depuis le tout début, celles-là même qui ont été tion, ou encore d’exécuter un traitement en tâche de fond. tant décriées et qui reviennent aujourd’hui à l’honneur grâce à l’expé- JavaFX autorise aussi la création et la manipulation d’objets Java. Il rience – beaucoup plus réussie – de Flash. existe bien entendu quelques restrictions dont la plus sérieuse est que La solution Java pour faire du RIA rassemble donc plusieurs technolo- ces objets ne peuvent être atteints par le mécanisme de " binding ". gies dont JavaFX n’est qu’une composante, d’ailleurs facultative : on C’est une fonctionnalité précieuse qui ouvre à JavaFX d’immenses pos- peut continuer à programmer des applets en utilisant directement sibilités. En premier lieu, la communication avec un serveur, Java EE, Java/Swing. RMI ou Web Service est immédiatement disponible. On peut, bien L’intérêt de JavaFX est donc à la fois ailleurs et plus large. Je pense entendu, mélanger des instructions JavaFX et des appels à des qu’aujourd’hui toute équipe qui développe une application graphique méthodes d’objets Java au sein d’un même traitement JavaFX (i.e. ope- basée sur Swing devrait s’intéresser à JavaFX : la programmation décla- ration). L’intégration des deux mondes est très naturelle. rative, le mécanisme de " binding " et le langage de scripting proposé, La bibliothèque des objets proposés par JavaFX est d’ores et déjà très bien intégré au reste de la plate-forme Java, sont de nature à amé- conséquente : outre les Frames, TextField et Buttons déjà présentés, on liorer considérablement la productivité. y trouve les panels, les tables, des arbres, des onglets, les labels, les De façon logique, l’avenir de JavaFX n’est pas lié au devenir de Java en cases à cocher et boutons radio, les curseurs, etc. tant que plate-forme RIA. JavaFX est une nouvelle brique qui vient Mais ce n’est pas tout : une importante partie de Java 2D est disponible accompagner les bibliothèques et outils Java pour fabriquer des applica- sous la forme d’objets spécifiques de type ligne, cercle, rectangle, tions riches et partagera le destin de cette plate-forme sur ce créneau. images. L’exemple du " glisser-déposer " vu plus haut en est une illus- tration. Une instruction spécifique appelée " dur " permet de créer faci- lement des animations comme en témoigne la snippet suivante : ■ Henri DARMET Directeur Technique attribute width: Number; Objet Direct / Homsys Group … Objet Direct, filiale à 100% de Homsys Group est une Rect { société de conseil, de services et de formation, spécialisée sur les technologies objet et Web. Conseil en méthodologie, width: bind width en architecture et en urbanisation du SI, développement applicatif, édition et height: bind height distribution de logiciels. www.objetdirect.com Programmez! - N°102 45 NOVEMBRE 2007 28-54 22/10/2007 16:36 Page 46 Dossier RIA La RIA selon Microsoft : WPF, Silverlight, AJAX Alors que Silverlight 1.0 est disponible en version finale et que sort Silverlight 1.1 en version Alpha, cet article vous propose de faire un tour par la pratique de l’offre RIA de Microsoft. es applications riches diffusées par l’intermédiaire d’un naviga- La gestion des médias teur sont de plus en plus courantes. On les reconnaît le plus sou- Xaml est profondément orienté L vent car elles présentent des interfaces très évoluées. Elles multimédia, Le MediaElement regorgent de multimédias, d’animations de look and Feel sexy. Je vous nous permet de visionner et invite, dans cet article, à faire un tour d’horizon des technologies Web manipuler des Vidéos comme le avancées proposées par Microsoft. Au programme nous aurons bien montre l’exemple suivant : sûr ASP.NET AJAX mais surtout Silverlight 1.0 et 1.1 en passant par les applications XBAP. XAML : un langage descriptif au centre des RIA de Les formats acceptés sont : Microsoft - Windows media video (wmv), Au centre de l’offre RIA de Microsoft se trouve un nouveau langage de - Windows media audio (wma), développement : le XAML. Cet acronyme signifiant eXtensible Applica- - Et certains types de mp3. tion Marckup Language définit un langage descriptif basé sur des tags La gestion de vidéo est très simple en WPF et Silverlight ; c’est la raison qui s’écrit comme du XML. pour laquelle beaucoup d’exemples sont présentés. L’exemple XAML ci-dessous présente un rectangle (instancie un objet Rectangle) dont le contenu est un dégradé du blanc au Vert Gestion des transformations : Les transformations ont pour objectif de modifier le comportement d’un On peut voir le résultat à l’exécution SkewTransform C’est une transformation qui met en oblique un objet. ci-contre. MatrixTransform Chaque élément 2D peut être représenté Le premier élément important est de par une matrice. Nous pouvons alors créer comprendre que xaml est un langage, nous-mêmes des transformations en les ainsi lorsqu’on écrit : appliquant directement sur la matrice de l’objet. Programmez! - N°102 46 NOVEMBRE 2007 28-54 22/10/2007 18:00 Page 47 28-54 22/10/2007 16:37 Page 48 Dossier Ensuite, nous lui appliquons des position toute la puissance de WPF : Moteur de databinding performant, transformations : une translation, du multimédia, des contrôles utilisateurs riches et nombreux et même une rotation pour le faire tourner de la 3D ! Je vous propose de regarder en détail de quoi est constituée d’un angle de 20°, un agrandisse- une application xbap à travers une application 3D. ment de 2 et enfin un Skew de 2. Le résultat est le suivant : Création d’une application xbap Pour créer une application XBAP, il suffit de choisir le modèle de projet La gestion des animations XAML nous fournit un support d’animation, autrement dit un modèle objet (n’oublions pas qu’écrire du XAML c’est coder !) destiné à animer et interagir dynamiquement avec les objets instanciés. Par exemple, faire tourner en boucle notre rectangle. Le " Storyboard " permet de définir, créer et paramétrer une animation. Pour cela nous avons besoin d’un déclencheur appelé " trigger " qui lancera l’animation. Dans l’exemple ci-dessous, nous animons la propriété " Opacity " du rec- tangle créé précédemment. Une fois cette étape passée, on se trouve face à une application WPF Maintenant que nous avons compris ce qu’est XAML et ce qu’il met, en partie, à notre disposition, je vous propose d’étudier les technologies qui en tirent parti, à commencer par WPF. Windows Presentation Foundation Met en quoi WPF peut – il être RIA ? En fait, il est possible de réaliser des applications WPF hébergées par internet explorer (et uniquement internet explorer). Ces projets portent le nom d’ XBAP pour Xaml Brow- ser Application. Je vous propose dans cette partie de voir comment cette technologie nous permet de profiter de la puissance de WPF et de la souplesse d’internet. Les Xaml Application Browser Les XBAP sont donc des applications WPF hébergées par un Browser. La 3D sur le Web par l’exemple Aujourd’hui, seul internet explorer permet de les exécuter. Il nécessite Un des avantages de l’utilisation des applications Xbap est que toute la aussi l’installation du Framework 3.0 minimum sur le poste de travail puissance de WPF est accessible à savoir, le moteur de binding mais pour être exécuté. Une fois ces prérequis pris, nous avons à notre dis- aussi la 3D. Je ne m’étendrai pas sur la création 3D dans cet article. Programmez! - N°102 48 NOVEMBRE 2007 28-54 22/10/2007 16:37 Page 49 RIA Afin de l’illustrer, je vous propose de Silverlight et son contexte d’exécution créer une pyramide en trois dimen- Silverlight s’exécute via un browser sur le poste de travail client, ce n’est sions que nous ferons tourner à l’ai- donc pas une application serveur comme celles développées en de d’un " slider ". ASP.NET. Toute application Silverlight est embarquée dans une page Web La première étape est la création de hôte qui affiche une zone (un Enfin, regardons l’interactivité en donnant la possibilité à l’utilisateur de La création d’application Silverlight notre application RIA de faire tourner la pyramide. Pour cela, nous Comment créer une application silverlight ? Nous ne revenons pas sur créons un " slider " nommé " sliderRotate ". les outils mais il y a évidemment, plusieurs possibilités selon votre rôle, designer, développeur et selon la version. Pour le développeur l’outil roi Ainsi nous avons une application Web mettant en jeu WPF, de la 3D mais aussi des mécanismes avancés et performants comme le Data- binding. Regardons désormais comment développer des applications Web multi browser. Silverlight Dans le cas de Silverlight 1.1 Alpha, la création d’un projet Silverlight Silverlight est une technologie multi-plate-forme, multi navigateur, per- passe par le nœud " Silverlight " de la fenêtre de création de projet et le mettant de développer des applications riches orientées multimédia. choix du modèle de projet " Silverlight Project " comme présenté page Il existe, bien entendu, des éléments communs aux versions 1.0 et 1.2. suivante. Elles sont toutes les deux basées sur XAML pour définir l’interface visuelle. Elles sont hébergées par plusieurs navigateurs, à savoir : Inter- Le déploiement d’application Silverlight net Explorer, Firefox, Safari et récemment le support de Linux (via le pro- Pour comprendre comment déployer une application Silverlight, il faut jet moonlight). Elles nécessitent l’installation d’un plug-in. d’abord comprendre de quoi elle est composée lors de sa compilation. POUR FAIRE VOTRE MAGAZINE IDÉAL ! Programmez! - N°102 49 NOVEMBRE 2007 Grande Enquête Utilisateurs 2007 www.programmez.com/enquetes.php 28-54 22/10/2007 16:37 Page 50 Dossier RIA Silverlight 1.0 Silverlight 1.0 possède les caractéristiques suivantes : - Support du XAML - Support du JavaScript Un seul modèle de projet est disponible : " Silverlight JavaScript Applica- tion " par défaut ; ce dernier crée des fichiers détaillés ci-dessous : La compilation d’une application Silverlight produit une dll qui représen- te le code nécessaire à l’exécution de l’application (quelle que soit la Nom du fichier Contenu du fichier version aujourd’hui). Une application Silverlight se compose donc d’une Scene.Xaml Fichier Xaml contenant le visuel de notre application Silverlight page HTML, de fichiers JavaScript, utilisés pour l’interaction entre la Scene.Xaml.js Fichier Javascript contenant le code des interactions entre les utilisateurs et l’application page Web et le plug-in, et des fichiers XAML. Le déploiement se fera Default.html Page Web hébergeant l’application donc sur un site Web (dont l’URL pointera sur la page HTML hébergeant Default.html.js Initialisation et paramétrage du plug-in Silverlight notre application) qui contiendra un répertoire contenant la dll compilée, Silverlight.js Fichier de création du plug-in Silverlight ainsi que les fichiers HTML, JavaScript et XAML nécessaires à la bonne exécution du site Web. Maintenant que nous avons vu comment créer et L’interactivité entre l’utilisateur et l’application est entièrement basée déployer une application Silverlight je vous propose de créer un player sur Javascript et sera codée dans le fichier Scene.Xaml.js. Détaillons vidéo qui nous permettra de mettre en évidence les caractéristiques de maintenant le fichier Scenen.xaml du Player chacune des versions 1.0 et 1.1. Le fichier XAML du player Outre la création du MediaElement que nous avons vue, regardons com- ment créer les boutons qui pilotent notre Player. Ces derniers se compo- sent de Rectangle et d’un texte. Le tout, affiché dans un canvas, comme le montre le code suivant : Programmez! - N°102 50 NOVEMBRE 2007 28-54 22/10/2007 16:38 Page 51 INDISPENSABLE! Hors-Série .Net www.programmez.com ProProOctobre 2007 - Hors-Série grammez!grammez! LE MAGAZINE DU DÉVELOPPEMENT 100% Pratique ! BienBien démarrerdémarrer lala programmationprogrammation .Net.Net Les outils, les frameworks, nos conseils, les formations Mobilité. Bureautique. Développer Développer avec des applications Office 2007 Windows Mobile avec le SGBD. Compact Le databinding Framework de Windows Système. Et aussi : Gérer les E/S l'actualité et en .Net les nouveautés de l'univers .Net, des interviews, des cas clients… M 02104 - 8 H - F: 4,95 E - RD 3:HIKMLA=YUY^ZZ:?a@k@a@s@f; Printed in France - Imprimé en France - BELGIQUE 6,45 € - SUISSE 12 FS - LUXEMBOURG 6,45 € - Canada 8,95 $ CAN - DOM Surf 6,90 € - TOM 940 XPF - MAROC 50 DH Actuellement dans les kiosques Demandez-le à votre marchand de journaux 28-54 22/10/2007 16:39 Page 52 Dossier Ce qui est intéressant, c’est la manière dont les utilisateurs vont pou- Code behind voir déclencher des actions ici sur les boutons, l’évènement MouseLeft- Comme nous l’avons dit, la version Silverlight 1.1 est basée sur du code ButtonUp, sera levé et il appellera la méthode JavaScript " DoPlay ". behind pour toute interaction entre l’utilisateur et l’application. Ainsi le click du bouton " Play_Click " de notre Player est le suivant : Javascript Comme nous l’avons dit, cette version est entièrement basée sur le public void Play_Click(object sender, EventArgs e) JavaScript pour toute interaction entre l’utilisateur et l’application. Ainsi, { le script du bouton Play de notre Player réagissant au click de l’utilisa- teur, est le suivant : video = this.FindName("Video") as MediaElement; if (video == null) function DoPlay(sender, eventArgs) throw new ArgumentException("Video is not found"); { var theHost = document.getElementById("SilverlightControl"); video.Play(); var theMedia = theHost.content.findName("Video"); } theMedia.Play(); } La première chose réalisée est la récupération du contrôle MediaElement dans la variable " Video " sur lequel nous appelons la méthode Play. La première chose réalisée par ce script est la récupération du contrôle à partir duquel nous récupérons l’objet MediaElement référencé par son Web 2.0 et ASP.NET AJAX nom " Video " et sur lequel nous appelons la méthode Play. Dans cette partie, nous allons vous présenter le Framework AJAX de Microsoft. Nous n’entrerons pas dans le détail et je vous renvoie vers le Silverlight 1.1 N°99 de Programmez ! Pour le très bon dossier Web 2.0 incluant AJAX. Silverlight 1.1 possède les caractéristiques suivantes : ASP.NET AJAX est une couche supplémentaire à ASP.NET, on parle d’ex- - Support du XAML (et donc des animations etc.) tension AJAX pour ASP.NET. Cette technologie s’appuie donc sur les - Support du code behind (C#, VB.NET aujourd’hui) outils actuels de la gamme Visual studio. ASP.NET AJAX est composé de Il reste des limitations aujourd’hui à cette version comme la faible liste 3 modules principaux : de contrôle disponible, le non-support du databinding. Néanmoins, nous - Des extensions serveurs : elles vont prendre en charge les fonctionna- en sommes à la version Alpha et Microsoft a annoncé le support de ces lités AJAX dans les pages ASPX côté serveur points techniques dans les versions à venir. Deux modèles de projet - Des contrôles qui encapsulent des comportements AJAX pour dynami- sont disponibles : " Silverlight Project " et " Silverlight Class Library ". ser une page, on parle des contrôles AJAX Toolkit Les projets " Silverlight Project " créent par défaut le contenu suivant : - Microsoft AJAX Library : Une bibliothèque de scripts JavaScript pour prendre en charge AJAX côté client (manipulation de XMLHttpRequest, Nom du fichier Contenu du fichier JSON, DOM, etc.) Page.xaml Fichier Xaml contenant le visuel de notre application Silverlight L’objectif d’AJAX est d’ajouter du dynamisme dans les pages. Contrai- Page.xaml.cs Fichier contenant le code behind pour l’interaction utilisateur rement à Silverlight les applications ASP.NET AJAX sont des applications TestPage.html Page web hébergeant l’application serveurs plus que clientes. TestPage.html.js Initialisation et paramétrage du plug-in Silverlight Du point de vue du code je dirais que deux contrôles sont essentiels à Silverlight.js Fichier de création du plug-in Silverlight connaître de tout développeur ASP.NET : - L’update panel : panel permettant d’ajaxifier votre application avec peu d’effort L’interactivité entre l’utilisateur et l’application peut être basée sur du - L’update progress : permet de notifier un traitement Ajax en cours. Javascript, mais ce sera surtout le code behind qui lui sera préféré pour la souplesse et le nombre de fonctionnalités plus importantes qu’il apporte. CONCLUSION L’offre RIA de Microsoft est très étoffée. Elle est surtout centrée sur le Le fichier XAML du player XAML avec les applications WPF /XBAP mais aussi Silverlight 1.0 et 1.1. Le projet de Player en version 1.1 contient 2 projets. Le fichier de projet Les investissements et les annonces faits autour de Silverlight 1.1 confor- et une librairie Silverlight. Nous avons en effet externalisé les boutons tent d’ailleurs l’engouement pour cet technologie, ainsi nous voyons le en créant un contrôle utilisateur leur correspondant. Ainsi le fichier xaml support Linux par moonlight, l’apparition de contrôles utilisateurs évolués du player est allégé et fait uniquement référence à notre dll puis aux produits par des sociétés comme GOA. Nous sommes donc tous dans l’at- contrôles. tente de voir les prochaines versions de Silverlight 1.1. Néanmoins ASP.NET n’est pas en reste et l’approche à 3 niveaux d’ASP.NET AJAX. Une xmlns:control="clr-namespace:SilverlightControlProgrammez;assembly chose est sûre, les RIA ont de beaux jours devant eux. =ClientBin/SilverlightControlProgrammez.dll" ■ Sacha LEROUX Programmez! - N°102 52 NOVEMBRE 2007 28-54 22/10/2007 16:39 Page 53 RIA Quelle sécurité pour les applications RIA ? Les RIA apparaissent aujourd'hui comme la meilleure évolution pour les sites Internet se réclamant de la génération du "Web 2". Mais qu’en est-il de la sécurité ? es RIA protègent bien souvent le code Fonctionnement du jeu Flash propre compte, celui-ci ne faisant aucune véri- source des applications, les rendant ainsi (partie client) fication sur ce score. De plus, même pas L plus sûres et plus difficiles à hacker Il s'agirait d'un jeu de casse-briques RIA en besoin de lancer réellement une partie, vu qu'une simple page web pour les personnes Flash. Chaque brique cassée rapporte 5 qu'il n'est pas nécessaire de fournir d'ID de mal intentionnées. Le code source étant aussi points. Lorsque la partie se termine (ou que le partie. Très rapidement, certains dévelop- compilé ou précompilé, dans la majorité des joueur perd), le scriptlet Flash envoie au ser- peurs peu scrupuleux qui joueraient à ce jeu cas du moins, l'exécution se veut plus rapide veur le nombre de points gagnés par le joueur auraient trouvé la faille et auraient pu augmen- que celle du JavaScript. Ce masquage du code (via une requête web en POST), ainsi que (via ter le score de joueurs fictifs afin de sponsori- source permet aussi aisément de placer ou de le cookie) des informations d'identification - ser leurs équipes, ce qui aurait naturellement rapatrier des mots de passe ou autres informa- pseudo, mot de passe et ID. Le serveur s'oc- faussé le classement. Il ne s'agit ici que d'un tions importantes dans le cœur même de l'ap- cupe d'ajouter les points au joueur et d'établir jeu, et les conséquences auraient sans doute plication côté client, celles-ci devenant illisibles un classement des meilleurs joueurs. été mineures mais pour d'autres applications, même pour le développeur averti. Cela était ce genre de faille pourrait avoir des consé- totalement impossible à l'époque du JavaScript, Fonctionnement de quences bien plus graves. celui-ci pouvant être manipulé côté client. la partie serveur La page serveur en question vérifie l'adresse Comment ce problème aurait-il Les points faibles des RIA IP, les données de sessions et les cookies pu être évité ? Malgré toutes les promesses du RIA, il ne faut envoyés par l'application Flash afin de certifier Si la faille est simple à comprendre, il n'est pas oublier que tout ce qui passe sur Internet l'authenticité du joueur. Impossible donc probablement pas aussi aisé de trouver une ne peut l'être de manière sécurisée. Si les don- d'ajouter des points à un joueur quelconque si solution pour la combler. Plusieurs pistes nées contenues dans l'application elle-même on ne s'est pas au préalable identifié sur le auraient pu être explorées. peuvent apparaître comme solidement préser- serveur. De ce point de vue-là, l'application L'ID de partie vées, une RIA devra toujours faire appel au ser- paraît tout-à-fait sécurisée. Une fois la vérifica- Au chargement de la page côté serveur, il veur pour recevoir ou envoyer des informations tion d'autorité effectuée, une requête SQL est serait possible de passer au RIA un ID de par- cruciales. Ce sont ces données envoyées et envoyée à la base de données pour ajouter le tie, qui serait stocké tant côté serveur que reçues, et la manière dont elles seront proté- nombre de points dus au joueur. côté client. Lorsque la partie se termine, elle gées, qui feront toute la différence du point de enverrait cet ID de session au serveur, qui vue de la sécurité de votre application. Comment le classement pourrait pourrait alors le comparer avec le sien. Cette être faussé par les joueurs ? méthode éviterait par exemple que des parties Un exemple concret S'il devient évident qu'il est impossible de non-jouées apportent du score aux joueurs. Pour bien illustrer comment les données manipuler les données des autres joueurs, envoyées et reçues par une RIA peuvent com- étant impossible de trouver leur mot de passe, Une proportion temps de jeu / score promettre la sécurité d'une application web, je il est possible, le score de chaque partie étant La proposition précédente, si elle ajoute un suis parti d'un exemple imaginaire, mais qui variable, d'envoyer une requête au serveur niveau de protection supplémentaire, ne per- pourrait tout à fait exister. avec un score totalement farfelu pour son met pas d'éviter tous les problèmes. Il serait toujours possible de lancer une partie, récu- pérer l'ID, fermer brutalement le navigateur et Les failles du web envoyer une requête avec un score bidon par Entre le serveur et le navigateur, il y a deux étapes la suite. Pour contrer plus encore cette éven- importantes : tualité, il est possible de plafonner le score. Le Web Si, par exemple, en jouant 5 minutes un Il est possible d'y récupérer du contenu qui ne joueur peut gagner au mieux 1000 points, il vous est pas destiné, mais aussi d'envoyer un faut empêcher toutes les requêtes qui contenu à la place de quelqu'un d'autre. auraient un taux de gain supérieur à 250 Le Proxy points/minute (il vaut mieux laisser une L'utilisateur lui-même peut être mené à utiliser un marge, on ne sait jamais). Pour calculer le proxy pour filtrer les requêtes de votre application temps écoulé, on peut se servir de l'ID de ses- et les remplacer par celles de son choix. sion, l'heure ou commence la partie pouvant être conservée côté serveur. Programmez! - N°102 53 NOVEMBRE 2007 28-54 22/10/2007 16:40 Page 54 Dossier RIA Génération d'une clé de validation Si la méthode qui suit apparaît comme sûre, il ne faut pas oublier qu'elle ne pourra pas tou- jours s'adapter à tous les cas d'utilisation des RIA. Il reste alors une dernière validation, bien plus sécurisée que les précédentes. Cette vali- dation consiste en une clé, de par exemple 12 caractères, qui serait générée au moyen des données envoyées (que ce soit par le serveur ou par le client). Exemple de données : FremyCompany, Pass- Word, 3245 points 1. F = 6e lettre de l'alphabet, on ajoute 31 pour brouiller les pistes : 37 2. PassWord = 8 lettres, on ajoute 5 pour brouiller les pistes : 13 3. Somme de 37 et 13 = 50, on ajoute 3 pour brouiller les pistes : 53 4. 3245 = Somme des chiffres = 14, on ajoute Fiddler 2.1 en action. 8 pour brouiller les pistes : 22 Clé générée : 022-053-013-037 Clé reçue lors du dernier contact : Effectuer une analyse approfondie 089 – 251 – 003 – 048 – 1 50 avant de coder Générer des clés solides Génération d'une nouvelle requête (15 brouille Corriger c'est bien, prévenir c'est mieux ! Pour Il est évident que plus le système de généra- les pistes) : éviter d’avoir de grosses retouches à apporter tion de clé sera sécurisé et aléatoire, plus il |89-251+3| - |15+48-150| - |(251 * 48) / 150| par la suite, mieux vaut bien analyser les sera difficile de simuler les réponses de votre - |Hasard| - |Hasard| méthodes avec lesquelles les données seront application et/ou de votre serveur. Clé générée : 159 – 087 – 080 – 220 – 007 envoyées et prévoir des garde-fous suffisants pour contrer toute tentative de piraterie. Ce tra- Quelles sont les données Comment tester la solidité d'une vail préliminaire peut s'avérer fastidieux, mais qui peuvent servir à formuler application RIA ? il l'est moins que si une faille est découverte des clés sûres ? Rien à faire, le meilleur moyen pour découvrir par la suite. Si la situation le permet, mieux La date du jour une faille dans une application, qu'elle soit RIA vaut prévenir que guérir ! La date du jour est un excellent paramètre ou pas, c'est bien d'en chercher une ! pour générer des clés, car il change régulière- Effectuer un encodage ou cryptage ment. Cependant, il ne faut pas perdre de vue Tester avec Microsoft Fiddler 2.1 des données sensibles que la date sur votre serveur et sur l'ordina- Pour ce faire, il existe des outils qui pourront vous Cela reste encore la méthode la plus sûre pour teur du client peut varier, pour diverses rai- aider. Fiddler 2.1 en fait partie à coup sûr. Cet outil protéger les données. Encore faut-il trouver un sons. Dans le cas où la date entre en ligne de est pire qu'un espion. Il intercepte toute donnée encodage adéquat et pas trop long à décoder compte dans la génération de la clé, il faudra entrant ou sortant par Internet Explorer ou autres (il faut à tout prix épargner le serveur, sans toujours que votre application s'enquière de la applications qu'IE pourrait utiliser. Vous pourrez quoi son temps de réponse risque de ralentir date actuelle auprès du serveur, chose qui ainsi voir quel genre de données transite sur le votre application). Il faut aussi penser à sécuri- risque de ne pas passer inaperçue. Il ne faut Web et la manière dont celles-ci sont agencées. ser son application dans les deux sens (ser- pas non plus oublier que la date change à Vous pourrez tester les réponses de votre serveur veur > client et client > serveur) sans quoi le minuit. Il faut donc prévoir ce changement pour telle ou telle requête, que vous pourrez soit cryptage peut s'avérer inutile. horaire dans les algorithmes. rédiger manuellement soit récupérer à partir de Les données envoyées celles déjà envoyées. Mieux encore, vous pourrez Conclusion Manière simple et efficace de protéger les répondre à la place du serveur à une ou plusieurs Fort de ces nouveaux principes, vous êtes désor- données. Attention, un regard attentif peut par- requêtes dans le but de semer le trouble dans mais fin prêt à réaliser des applications non seu- fois trouver la méthode de génération si elle votre application. Il vous sera aussi possible d'en- lement riches en contenu mais aussi sécurisées. est trop voyante. registrer les requêtes et leurs réponses pour les A noter qu'il faut toujours faire attention à ce que Une information de session analyser par la suite, ou encore de simuler toutes l'on fait avec les données côté serveur. Il faut à Une clé offerte par le serveur lors de la les phases de connexion de votre application. Un tout prix éviter d'exécuter du code en provenance connexion est réutilisée ensuite pour valider véritable "must-have" pour tout développeur RIA, du client, par exemple. Il va aussi sans dire les envois/réceptions de données. Il peut par- et même Web en général. Comble du plaisir ? Il est qu'une validation côté client n'exclut pas une vali- fois aussi être intéressant de récupérer une totalement gratuit ! dation côté serveur. partie de la clé pour former la clé suivante : Site : http://www.fiddler2.com/ ■ François Remy Programmez! - N°102 54 NOVEMBRE 2007 55-56 22/10/2007 16:41 Page 55 Technique PROGRAMMATION LINUX Accéder au code du framework .Net avec Visual Studio 2008 Le 3 octobre dernier, Scott Guthrie a annoncé, à travers son blog officiel, l’ouverture du framework.NET et de ce fait l’accès à son code source. Cette nouvelle philosophie, inhabituelle chez Microsoft, devrait être disponible fin 2007 / début 2008, peu avant la sortie de .Net 3.5 et de Visual Studio 2008 (prévue pour février prochain). oute bonne nouvelle ne devrions ainsi retrouver, au regard venant généralement pas d’exemples comme OOXML, un T seule, cet accès aux maximum de commentaires et sources pourra se faire directe- aides diverses au sein de ce ment depuis son environnement code. C’est d’ailleurs très certai- VS 2008 et plus particulièrement nement afin de répondre à une au sein du débuggeur. démarche de nettoyage et d’orga- nisation de ce code source que Vous pourrez ainsi consommer le l’ensemble des librairies ne sont code source des librairies du .NET pas directement disponibles. Framework de deux façons : Bien entendu, à cette première • par téléchargement unitaire des affirmation s’ajoute automatique- fichiers au travers d’un mode de ment la question suivante : téléchargement à la demande Fig.1 "Quand aurons-nous ainsi accès à auprès du site MSDN Microsoft, Note : l’adresse url mentionné dans cette capture n’est pas fonctionnelle à l’intégralité des librairies du .NET de manière transparente pour l’heure actuelle et ne sera peut-être pas l’adresse définitive. Cette fonctionna- Framework ?". A cette question, lité n’est pas présente dans Visual Studio 2008 Bêta 2 mais le sera dans la l'utilisateur de VS2008. Cette version RTM. Microsoft répond que cette pre- fonctionnalité est déjà présente mière étape de mise à disposition pour vos propres librairies et se Un accès facilité Ainsi, Microsoft s’engage à nous du code source n’est que le début gère depuis la fenêtre d’option Observez la capture de la page fournir d’ici la fin d’année une pre- d’une longue démarche de mise – debugging / Symbols de suivante présentant le passage mière liste de librairies du frame- en libération des autres librairies, Visual Studio. lors du mode pas à pas (F11) de work accessibles dans ce dont certaines directement dans • par mode standalone permet- Visual Studio 2008 dans la classe nouveau mode. Cette première la foulée, comme celles relatives tant ainsi de consulter les " Page.cs " du .NET Framework. liste comprendra : à LINQ, WCF, WF par exemple ! sources depuis n'importe quel Celle-ci, reprise du blog de Scott • BCL (Base Class Libraries) : éditeur de texte ! Guthrie, permet de bien com- System, System.IO, System. Un accès tout langage ? prendre l’intégration intuitive des Collections, System.Configura- Et qu’en est-il de la multiplicité Scott sources du .NET Framework au tion, System.Threading, System des langages du .NET Framework. sein de vos développements mais .Net, System.Security, Sys- Sachant que le plus souvent, le Guthrie, également dans votre usage quo- tem.Runtime, System.Text, et code des librairies du .NET Frame- le leader tidien de celui-ci : (Fig.1) • ASP.NET : System.Web work est développé en C#, quid .Net Effectivement, le code source.NET • Windows Forms : System.Win- des développeurs VB, J#, … ? pourra ainsi vous apparaître dows.Forms Devront-il passer au C# ou pour- Scott Guthrie est le General comme étant un élément à part • WPF : System.Windows ront-il avoir un accès natif dans Manager de la division Microsoft entière de votre solution, permet- • ADO.NET : System.Data leur langage ? Et dans le cas Développeurs à Microsoft Corporation. Il gère et dirige les tant à tout développeur de se Non content de donner l’accès au d’une réponse affirmative à cette équipes en charge du développe- " balader " dans les librairies du code source, l’accès complet aux question, les librairies acces- ment des produits ou technolo- framework avec un accès à l'en- commentaires fournis par les sibles seront-elles construites à gies suivants : Common Langua- ge Runtime (CLR), ASP.NET , semble des symboles, au débug- développeurs du .NET Framework la volée au travers de méthodes Silverlight, WPF, IIS 7.0, geur local, à la gestion complète est prévu. Ce qui ne doit pas être d’introspection – Codedom – ou Commerce Server, .NET Compact des données transmises par les un maigre travail, puisque je vous seront-elles complètement mises Framework, Visual Web Develo- per, Visual Studio Tools for WPF espions ainsi qu’à l'exploitation laisse imaginer le mode formel de à disposition par Microsoft dans des piles d'appels ! travail chez Microsoft. Nous l’ensemble des langages majeurs Programmez! - N°102 55 NOVEMBRE 2007 55-56 22/10/2007 18:45 Page 56 Technique de la plate-forme de développe- géant de Redmond mais bien une ment ? Le résultat serait très dif- démarche longue, réfléchie et férent dans le cas d’un accès par lourde de conséquences straté- introspection des librairies, giques pour les dirigeants de puisque celui-ci serait relative- Microsoft. ment proche de ce que nous Cette mise en marche progressi- connaissons déjà au travers d’ou- ve passe largement au -delà de tils comme le .NET Reflector de cette initiative limitée à Visual Luts Roeder (bien utile, mais par- Studio 2008 et au .NET Frame- fois un peu trop approximatif !) work 3.5 puisque Microsoft met déjà à disposition du public, sous En lecture seule certaines conditions, le code Cette démarche, novatrice pour source d’une majorité de ses pro- Microsoft, est effectuée sous un duits ou outils. Le programme certain niveau de contrôle Microsoft Shared Source permet puisque les sources en question déjà à de nombreux développeurs seront mises à disposition au tra- d’accéder au code de divers pro- Fig.2 vers de la licence Ms-RL (Micro- duits, dont Windows sous diffé- soft Reference License) • Introspecter les librairies du qui devrait avoir des répercus- rentes versions, par exemple. permettant l'exploitation de .NET Framework afin de mieux sions à bien des niveaux de la Attendons maintenant l’évolution celles-ci en terme de référence appréhender leur implémenta- société. Il est important de com- et surtout la digestion de cette (que nous pourrions considérer tion ainsi que leur architecture prendre que ce mouvement n’est nouvelle par le marché et le comme une forme de mode en technique. Ceci permettra très pas neuf. Effectivement, cette monde de l’open source contem- lecture seule) et non pas dans certainement à de nombreux volonté d’exposer le code source porain. Cette approche risque for- l'objectif de modifications, compi- développeurs de trouver une du .NET Framework remonte à tement de bouleverser la vision lation, copie, ... La modification source d’inspiration afin d’opti- quelques années ! Shaw Burke, du Libre sur les solutions et des sources du .NET Framework miser leur propre code. Nous membre de l’équipe de Scott plates-formes made in Microsoft. serait un non-sens en soi de par retrouvons ainsi, au-delà de la Guthrie, est un fervent défenseur Force est en tout cas de constater la notion de classes unifiées et mise à disposition du code de l’ouverture du code source des une volonté progressiste et réfor- surtout le statut de norme ECMA - source, une démarche formatri- librairies Microsoft et plus particu- matrice des mentalités intrin- ISO de la CLI et de C#. Tout déve- ce à disposition des dévelop- lièrement celles du .NET Frame- sèques de chez Microsoft. loppeur retrouvant une parcelle peurs par les méthodologies de work. Quelques années en L’avenir nous dira si dans de code erroné ne pourra ainsi ceux qui ont pensé le .NET Fra- arrière, Shawn Burke postait sur quelques années les acteurs malheureusement pas effectuer mework. son blog un billet posant ouverte- majeurs du monde de l’Open la modification de lui-même mais • Permettre à tout développeur ment la question de l’intérêt pour Source tels que nous les connais- soumettre le bug et éventuelle- .NET d’optimiser son propre Microsoft et ses clients dévelop- sons aujourd’hui deviendront les ment la correction à apporter code en fonction des modes de peurs d’accéder au code source meilleurs collaborateurs d’une auprès de Microsoft Corp. fonctionnement du .NET Frame- des librairies relatives aux Win- société qu’ils avaient tant reniée. work. Cette approche est dans forms. Preuve est ainsi faite que Pourquoi faire ? la lignée de ce qu’avait initié en cette démarche, bien qu’elle ait ■ Grégory Renard Cette mise à disposition du code son temps la société Borland mis quelques années à aboutir, CTO Wygwam source n'est pas dénuée de sens, (au travers du langage Delphi) n’est pas le fruit d’un revirement Microsoft Regional Director surtout face à des outils de quali- en fournissant les sources de de situation brusque au sein du Microsoft MVP té comme le .NET Reflector de ses bibliothèques de compo- Lutz Roeder qui ne fournit malheu- sants (VCL) permettant par Ressources reusement qu'une vision approxi- exemple une optimisation de la http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing- mative des sources du .NET qualité des composants Tiers. the-source-code-for-the-net-framework-libraries.aspx Framework. Cela permettra à tout Ainsi, nous venons de vivre en ce http://blogs.msdn.com/sburke/ http://www.microsoft.com/resources/sharedsource/licensingba- développeur .NET une double mois d’octobre un changement sics/referencelicense.mspx approche : radical de position chez Microsoft age 1 www.programmez.com ProMe Pronsu el - Ju in 2007 - N°98 grammez! LE M Avant-première : AGA ZINE DU D ÉVELO PPEM BOUTIQUE BOUTIQUE BOUTIQUE ENT PHP6 Conférence Les nouvelles fonctions, ce qui change, migrer de PHP 5 à 6 MySQL : En atten SGBD dant la v 6 C omparatif : Quelle b Achetez les magazines, les articles en PDF et abonnez-vous en ligne Les critères pourase bien de choisir d - Une avalanche de nouveautés onnées, p our quels b esoins ? Maîtriser la XUL plate-forme Mozilla Web Toolkit Construire un composant TE www.programmez.com "glisser-déposer" CHNIQU Pourquoi utiliserE AspectJ WEB 2 et la programmation aspect ? Com biner Aja avec x et Jav JAVA Telosys a L'usine à dé velop H p D e N m - 0 O en A t S e U C 5 - p T P c rin IL Y C g n T S S H $ O O ra R F N F 95 L A 2 'inté Dja , g le n n 1 ra fra 8 go M tio E n me : e a c w é S o o F - E n rk ad a tin S v w I P e ue e n c rim b U 5 C à a X ru to p is S 0 u 9 e t fa C C m - , - 4 ontro C ire I 5 + - € 9 l € + : e 5 M 5 c 4 O F n ,4 C 6, ré - T e ra 6 z v E G F os U € in R in te IQ 0 rfa U - 98 - d c G O e ,9 9 s L G B te n E 1 o f 6 m in M B r e r 3 E u P X 4 U S 0 L OM M D 3:HIKONB=^UZ^Z]:?a@a@t@i@k; 57-59 22/10/2007 16:43 Page 57 PROGRAMMATION LINUX JBoss Seam… le fil à coudre extensible pour les architectures Java EE JBoss Seam 2.0 est disponible en pré-version. Quels sont les objectifs de ce framework ? Que recouvre-t-il exactement ? Nous allons démontrer dans cet article, par des exemples pratiques et concrets, en quoi il se distingue clairement des autres frameworks standard du monde JEE. boss Seam (seam signifie "couture" en anglais) a pour vocation le mode d’accès du composant (@Local ou @Remote) et son état (@Sta- de rendre plus aisé le développement d'applications web basées teless ou @Stateful). On va retrouver ces concepts au cœur de JBoss J sur des briques centrales de Java EE 5.0, notamment JSF (Java Seam qui privilégie clairement l’utilisation des annotations (concept clé Server Faces) et EJB3/JPA (Java Persistence API). On retrouve la de java 5) à celle des fichiers de configuration XML (centrale par même idée au sein d'autres frameworks comme Struts Shale ou exemple dans Spring mais qui pose plusieurs problèmes, notamment Oracle ADF. JBoss Seam propose néanmoins un spectre d'opportuni- celui de la segmentation des fichiers, de la testabilité). Elles vont per- tés beaucoup plus large en apportant un certain nombre de solutions mettre au développeur de définir les composants de l’application, intégrées, simplifiant la vie du développeur, entre autres : Drools (le notamment leur état et leur contexte. L’architecture de Seam est basée moteur de règles de Jboss), jBPM (le moteur de workflow de JBoss) ou sur un modèle de composants dit unifié, en ce sens un composant AJAX (Asynchronous JavaScript and XML). Seam peut être à la fois un bean JSF et un EJB3 Session bean. Avec JBoss Seam, il peut (mais ce n’est pas une obligation) ne plus y avoir de distinction entre ces deux types de composants. Il est également pos- sible d’envisager une architecture sans EJB3. Nous nous focaliserons dans la suite de l’article sur l’intégration EJB3. Schéma d’architecture issu du tutorial officiel de JBoss Seam EJB3 et JSF : approche classique EJB3 et JSF avec JBoss Seam Intégration JSF/EJB3, vers un modèle de composants unifié Mon premier composant Seam JBoss Seam s’est principalement fait connaître sur son principe fonda- Prenons un cas d’utilisation concret d’une application classique de com- mental d’intégration aisée de JSF et des EJB3, deux API qui jusqu’ici merce en ligne pour illustrer la mise en œuvre de JBoss Seam. Voici coexistaient plus qu’elles n’étaient réellement couplées. Focalisons- l’en-tête du composant Seam sous-jacent à la commande de l’utilisa- nous sur l’intégration de ces deux briques techniques. teur. Il s’agit donc d’un EJB3 utilisé comme bean JSF. L’objectif de JSF est de fournir un modèle événementiel indépendant du @Stateful protocole. JSF s’appuie néanmoins sur une architecture classique de @Name("clientCommande") type MVC2 (Model View Controleur 2). Le contrôleur frontal JSF, la Faces public class ClientCommande implements ClientCommande, Serializable { Servlet, permet de gérer un certain nombre de services communs comme la navigation et la gestion des messages configurables de @In manière déclarative via un fichier XML (faces-config.xml). Les vues peu- private User currentUser; vent être décrites très simplement en XHTML grâce aux " facelets ", la @Out singularité de JSF étant que ces vues sont représentées par un arbre de private Order order; composants graphiques (les UIComponents) sur lesquels il est possible …} d’interagir au niveau de "mini-contrôleurs" JSF, appelés backing-beans. Ceux-ci sont des POJO (Plain Old Java Object), de simples classes Java L’annotation @Stateful précise qu’il s’agit d’un EJB3 SessionBean avec sans contraintes d'héritage ou d'implémentation d'interface, et qui état. L’annotation @Name associe le composant à une variable contex- jouent un rôle particulier entre le contrôleur frontal et les vues : ils dis- tuelle. Exactement comme pour les managed-bean JSF (déclarés sous posent de références sur les composants graphiques. A partir d'un bac- une référence mentionnée par la balise Programmez! - N°102 57 NOVEMBRE 2007 57-59 22/10/2007 16:43 Page 58 Technique Seam propose le concept de " bijection ", reposant à la fois sur le prin- cette HttpSession, la plus simple étant l’utilisation de cookie, mais si le cipe d’injection de dépendances et la notion de contexte. L’injection va client refuse de les recevoir, une solution alternative doit être implé- permettre aux beans de récupérer des informations depuis ces mentée (de type réécriture d’URL pour ajouter l'identifiant de la session contextes et l’outjection va permettre d’en déposer par défaut dans le dans l’URL de la requête). D’autre part, en mode cluster, la réplication contexte du composant. Ce sont les annotations @In et @Out qui vont de cette HttpSession est critique. ainsi déclencher ce wiring automatique… il n’est alors plus nécessaire Avec Seam, il vous suffit de spécifier un scope au composant gérant le d’aller récupérer " manuellement " un attribut dans la session. Dans panier. Il peut être " stateful ", son état peut alors être automatique- l’exemple de code précédent : ment associé à des contextes différents des contextes classiques des • @In injecte la valeur de la variable contextuelle nommée currentUser applications Web (request, session, application), notamment le contex- chaque fois que le composant est invoqué. te " conversation " servant à couvrir l'enchaînement de plusieurs écrans • @Out dépose la variable contextuelle nommée order dans le contexte d’un scénario utilisateur. Toutes les requêtes Web dans Seam sont défini pour le composant (par l’annotation @Scope). associées à un contexte conversation qui par défaut démarre à la sou- mission de la requête et se termine au rendu de la réponse. Si vous vou- Les avantages de l’approche Stateful lez qu’une conversation s’étale sur plusieurs requêtes, vous devez La plupart des frameworks web sont basés sur une approche plutôt state- étendre la conversation courante à une conversation longue en utilisant less des composants, obligeant les développeurs à gérer eux-mêmes le les annotations @Begin et @End. Celles-ci précèdent des méthodes de cache applicatif. Ceux-ci ont alors le réflexe de mettre beaucoup trop d’élé- composants Seam et permettent ainsi de démarquer la conversation ments en session HTTP, ce qui est bien souvent source de bug et de fuite de correspondant au processus de commande. Un seul utilisateur peut mémoire. D’autre part, on se heurte, dans ce type de framework, au problè- avoir plusieurs conversations en cours à tout moment, notamment dans me mis en avant dans le pattern " Open Session in View ", bien connu des des fenêtres navigateurs différentes (une pour lister les produits, l’autre applications basées sur Hibernate et Spring. En effet, au sein de ces archi- pour confirmer sa commande par exemple) et ceci sans provoquer de tectures, la session Hibernate est classiquement ouverte et fermée au collision entre les conversations, que l’on peut ainsi comparer à des niveau des services métier. Ce peut-être une source d’erreur fréquente en " vues " différentes des données de sa session. Techniquement, ce développement, lorsqu’on essaie d’accéder, au niveau de la couche présen- contexte est géré par Seam grâce à des paramètres de requêtes parti- tation, à des dépendances d’un objet qui n’ont pas été précédemment char- culiers indiquant l’identifiant de la conversation et le fait qu’il s’agisse gées, alors que la session Hibernate est déjà fermée (la fameuse ou non d’une conversation-longue (respectivement les attributs cid et clr LazyInitializationException !). L’approche proposée par Seam est différente, par défaut). Vous pouvez, de plus, lier la conversation à un processus elle privilégie des composants " stateful " qui peuvent garder valide leur jBPM en indiquant dans l’annotation @Begin le nom du pageflow asso- contexte de persistance depuis la soumission de la requête http et ce, jus- cié à cette conversation. Par exemple : qu’au rendu de la page de réponse. Le modèle de composants unifié de @Begin(pageflow="valid_order") JBoss Seam permet ainsi aux composants d’accéder simultanément à l’état représenté par l’HTTPSession et à l’état du contexte de persistance. Le pageflow est alors défini de manière déclarative dans un simple Avec un tel modèle, on se rapproche des concepts du développement pilo- fichier XML avec jPDL (jBPM Process Definition Language). A noter que té par le domaine, chers à Eric Evans et Martin Fowler . la gestion du bouton back du navigateur devient alors aisée (en spéci- fiant un attribut back valorisé à enabled ou disabled au sein de la balise page pour respectivement autoriser ou bloquer l’usage du bouton back). L’autre contexte intéressant de JBoss Seam est le contexte " Business Process ", celui-ci est persistant et multi-utilisateur. Le processus métier peut être également défini avec jPDL, on parle alors de " tâches " qui peuvent être démarquées via les annotations @BeginTask , @Resu- meTask, @CompleteTask ou @AbortTask. Composant Seam et la gestion des contextes. Focus sur l’authentification et Sécurité Détaillons à présent un scénario utilisateur complet : Seam propose de définir les paramètres de sécurité et d'authentifica- • Etape 1: L’application propose une liste de produits à l’utilisateur qui tion de manière déclarative. Typiquement, on définira une méthode utili- peut en choisir un certain nombre et les mettre dans son panier. Il sée pour l'authentification au niveau du fichier components.xml peut consulter son panier à tout moment. Programmez! - N°102 58 NOVEMBRE 2007 57-59 22/10/2007 16:43 Page 59 PROGRAMMATION LINUX de la méthode d'authentification (définie plus haut). "Seam Remoting JavaScript". Cette solution est la plus onéreuse, mais la plus flexible puisqu'elle peut fonctionner avec n'importe quel- - définir des règles avec le moteur de règles Drools pour, par exemple, public class Order { permettre l'accès à une page en fonction de règles métier particulières. private Double amount; private String reference; L'avantage est de pouvoir avoir des règles qui s'appliquent en fonction … de l'état courant de l'application et également d'externaliser une partie de règles métier hors du code. @NotNull public Double getAmount() { … } rule CanUserManuallyAddMoney public void setAmount (Double amt) { … } when c: PermissionCheck(name == "manager", action == "addMoney") @NotNull Role(name == "admin") @Length(max=16,message="{order.reference.invalid}") then c.grant() public String getReference() { … } end; public void setReference (String z) { … } … Dans ce cas précis, la règle sera vérifiée lors de l'accès à la méthode } manager.addMoney(). Si cet utilisateur a effectivement le rôle " admin ", il aura accès à celle-ci. La validation peut être réalisée très simplement en embarquant la bali- Vous pouvez également spécifier en en-tête des composants Seam l’an- se Programmez! - N°102 59 NOVEMBRE 2007 60-62 22/10/2007 16:44 Page 60 Développement Web EN BREF Exploiter un site web 2.0 Avec le web 2.0 on est passé d'une collection de sites Web s’apparentant à une gigantesque bibliothèque à une plate-forme informatique à part entière et ce au profit de l’utilisateur. L’internaute a été replacé au centre de cette nouvelle plate-forme de participation. ’internaute devient un véritable acteur, il est actif et fait désormais partie d’un L système collaboratif alimenté par ses utilisateurs. Créer son blog, diffuser ses pho- tos et ses vidéos, échanger des données, tout cela est possible grâce au Web 2.0. Ainsi, l'internaute n'est plus un simple consommateur d'informations. Il peut désor- mais devenir un acteur du réseau et un pro- ducteur d'information. L’utilisateur a désor- mais les droits de lecture, d’écriture et d’exé- cution sur vos applications. t concédés pour un engagement annuel L’approche Marketing Le web 2.0 n’est pas seulement une évolution technologique, c’est aussi un véritable phéno- mène social qui marque déjà les stratégies de marketing et de communication des entre- prises. Souvent diabolisées, les pratiques marketing 2.0 existent bel et bien et viennent chambouler toutes les pratiques existantes. Le marketing de masse tend à se transformer Fig. 1 en marketing " one-to-one ". Google est sans défaveur. Pour cela, je vous préconise l’utilisa- permettra aussi d’apporter une réelle valeur doute l’exemple le plus avant-gardiste du tion d’une rédaction " pyramidale inversée " ajoutée à votre contenu initial et donc d’être domaine, qui se sert de votre contenu (Blog- pour votre contenu. Par ce terme, j’entends référencé de façon intelligente et sémantique ger, Gmail,...) pour créer ses propres revenus que tout contenu doit commencer par avoir un sur la plupart des moteurs de recherche. publicitaires. Ces pratiques ne sont pas appré- titre clair, informatif et constitué d’un mot clé ciées de tous, mais semblent visiblement por- pour les moteurs de recherche. Un sous-titre Le web 2.0 d’un point ter leurs fruits. Communauté, liberté, associé à une accroche sera bien vu des de vue technologique créativité, “illimitation”, participation, tous ces moteurs de recherche et permettra de garder AJAX concepts vous permettent de fidéliser vos visi- l’internaute attentif. Votre premier paragraphe, La technologie la plus représentative et la plus teurs, cela dans le seul but de faire fructifier quant à lui, doit répondre à la problématique utilisée du web 2.0 est la technologie AJAX leur nombre. Avec les technologies 2.0 vous posée dans le titre ou le sous-titre. Chaque (Asynchronous JavaScript And XML). Comme pouvez enregistrer, analyser les comporte- paragraphe commencera par la conclusion de son nom l’indique, il ne s’agit que de JavaS- ments de vos utilisateurs, mais aussi trouver celui-ci. Pour pallier le concept web 2.0 la der- cript et de traitement de données via XML. leurs centres d’intérêts en fonction de leur nière phrase de votre contenu pourra, pour- Pour apporter une réelle valeur ajoutée à cette activité au sein de votre application. Si vous quoi pas, interpeller directement l’internaute, technologie, AJAX a été couplé à la technologie souhaitez exploiter le concept 2.0 à 100%, comme par exemple : " Qu’en pensez-vous ? ". DHTML qui consiste à dynamiser les docu- vous devez vous servir de toutes les données Il ne s’agit ni plus ni moins que de mettre en ments HTML. En mélangeant ces deux techno- que vous avez en votre possession et ce, dans avant tous les points clés au début de votre logies ont obtient de bien belles applications le but de servir l’utilisateur et donc indirecte- contenu. Chaque visiteur de votre site doit être comme "Live.com ", " Yahoo Mail ", " Google ment de vous servir. perçu comme une source potentielle de conte- Spreadsheets ", etc. qui démontrent des inter- nu, il est de votre devoir de permettre à l’inter- faces interactives et parfois même animées. Le contenu 2.0 naute de s’exprimer sur n’importe quel type de L’apparition de ces nouvelles technologies a Le web 2.0 a fait place à des utilisateurs 2.0. contenu que vous proposez. Le fait de créer du bien entendu demandé un remaniement cer- Un utilisateur qui ne trouve pas le contenu contenu autour d’un sujet vous permettra non tain des architectures web, et ce, toujours au qu’il recherche sur votre site n’hésitera pas à seulement de fidéliser vos visiteurs en leur profit de l’utilisateur (Fig. 2). se rediriger vers un autre site et ce en votre donnant la sensation qu’il est actif mais vous Le schéma 2 montre comment réagit votre AMEN RCS PARIS : B 421 527 797 IN WEB WE TRUST : Nous croyons au web Voir conditions Générales de Vente sur www amen fr *Prix au 01/01/2007 Tous ces tarifs son Programmez! - N°102 60 NOVEMBRE 2007 60-62 22/10/200716:45Page61 AMEN RCS PARIS : B 421 527 797. IN WEB WE TRUST : Nous croyons au web. Voir conditions Générales de Vente sur www.amen.fr. *Prix au 01/01/2007. Tous ces tarifs sont concédés pour un engagement annuel. (1) Du lundi au samedi de 9h à 18h au 0899 70 9001 (1,34 € l'appel puis 0,34 €/mn). (2) Garantie satisfait ou remboursé sous 10 jours. AMD, le logo AMD opteron et ses déclinaisons sont des marques déposées de Advanced Micro Devices Inc. ** Offre d'une valeur de 412,62 € TTC, réservée aux 300 premiers clients ayant souscrit sur une période de 6 mois minimum à un serveur dédié DUO avec système d'exploitation Windows. elle vouspermettrad’atteindre lasérénitéabsolue assistance techniquepar mailettéléphone6j/7 techniques :architecture réseauredondée, bandepassantedédiée 2GB, hautedisponibilité(99,9%), avancées Nous avonsfoienunidéal deservices,surtoutlorsqu’ilvouspermetbénéficier desdernières NOMS DEDOMAINE Pour plus de renseignements XHTML, CSS,Javascript… XML, ASP.NET 2.0,DHTML, création CSS,priseencharge : professionnelle dynamiques dequalité pour créerdessitesweb dont vousavezbesoin vous offre touslesoutils Microsoft Expression Web OFFERT** ! - de performance! pour vousoffrir deuxfoisplus Vous n'avezpasànousprier dédiésDUO serveurs HÉBERGEMENT 0 8925566 77 - CRÉATION DESITE-E-COMMERCE . (1) . Quantànotre ‘Garantie satisfaitouremboursé’ Si vouscroyez auweb, vous croirez ennous. (0,34 € domaines -Trafic illimité 6 adresses IP-InterfacePlesk8jusqu'à300 Disque dur2x250GB-Raid1matériel AMD Opteron 1214-2x2,2GHzRAM4GB (238,00 4000 DUO domaines -Trafic illimité 4 adresses IP -InterfacePlesk8jusqu'à300 Disque dur2x200GB-Raid1matériel AMD Opteron 1212-2x2,0GHzRAM2GB (178,20 2000 DUO (118,40 1000 DUO domaines -Trafic illimité 2 adresses IP -InterfacePlesk8jusqu'à100 Disque dur2x160GB-RaidSoft AMD Opteron 1210-2x1,8GHzRAM1GB vous offrir coeur, disquesdursenRAID,pour basée surdesprocesseurs double / min) Serveurs dédiésDUO NOUVEAU ou € € € ttc/mois*) ttc/mois*) ttc/mois*) www.amen.fr de serveursdédiésDUO lance lanouvellegamme les plusexigeants,AMEN Pour lesprofessionnels 2 foisplusdepuissance. 199 149 99 Compatibles & - € RÉFÉRENCEMENT € € ht/mois* ht/mois* ht/mois* (2) , 60-62 22/10/2007 16:45 Page 62 Développement Web Fig : 2 ajoutée à cette application en termes de navi- gation et de fonctionnalité (Fig. 1). Vous l’aurez compris, AJAX devra être utilisé à bon escient en terme de sécurité mais aussi en terme de contenu. Il est important d’être conscient que toute donnée récupérée via la technologie AJAX ne sera pas indexée par les moteurs de recherche. L’architecture Je ne rentrerai pas en détail sur cette partie qu’est l’architecture. Je vous conseillerai sim- plement d’orienter le plus possible votre appli- cation vers une application de type SaaS (Software as a services), ceci dans le but de pouvoir exposer vos données mais aussi de pouvoir les partager. Distribuer vos services vous permettra de vous faire connaître et par conséquent de faire augmenter votre quota de visiteurs. Inutile de vous rappeler qu’API et RSS ont fait le succès de très grands noms du web 2.0 comme Flick-R, Technorati, ou Twitter. Conclusion Le web 2.0 n’est finalement qu’un regroupe- ment d’approches, de technologies et de application lorsqu’il s’agit d’une application logique métier dans un fichier JavaScript lisible méthodes qui permettent aux créateurs d’ap- web classique et lorsque cette même applica- par tout un chacun. Vous devez vérifier toutes plications d’aborder les problèmes complexes tion a été remaniée, redéveloppée avec la les données envoyées à votre application que sont les réseaux sociaux, le marketing, la technologie AJAX. On peut très facilement qu’elles le soient par la méthode GET ou par la participation etc. et d’apporter des résultats s’apercevoir que le nombre de requêtes au méthode POST. AJAX est donc un réel plus efficaces. Le web 1.0 reflétait des limitations serveur augmente nettement, mais qu’au final pour rendre agréable la navigation de l’utilisa- technologiques ainsi que des pratiques rigides, le trafic transité sur le réseau est bien moins teur au sein de votre application. La personna- aujourd’hui le web 2.0 semble ouvrir de nou- conséquent. En effet, comme seulement des lisation d’une application est sans doute la veaux horizons où l’internaute se retrouve plon- petites parties de votre page sont rafraîchies, partie la plus appréciée des utilisateurs. Vous gé au cœur du système, la web2sphère… cela engendre un coût de bande passante pourrez trouver un très bon exemple sur le site A vous de la construire. moindre que si vous aviez rechargé toute la www.guidetele.com où l’utilisateur a la possibi- page. Il est donc très important de prendre en lité de consulter son programme télévisé via ■ Guillaume André compte ce critère. Le JavaScript se trouvant du une interface riche et peut aussi sauvegarder Intégrateur .NET, Designer Wygwam côté client, vous allez devoir redoubler de pru- son propre bouquet de chaînes lorsqu’il est http://www.wygwam.com/ dence. Il n’est jamais anodin de déporter de la enregistré. AJAX apporte ici une réelle valeur http://www.wpfstorm.com/ Programmez! - N°102 62 NOVEMBRE 2007 63-66 22/10/2007 16:54 Page 63 EN BREF Construire des applications MVC avec le ZEND Framework Le Zend Framework a été développé par la société Zend afin de faciliter le développement et la maintenance des sites PHP dynamiques. L’un de ses principaux avantages est qu’il est librement téléchargeable sur le site de Zend.com. Ce framework offre un ensemble de classes et méthodes (Accès aux bases de données…) permettant d’alléger le code déployé dans les pages PHP e zend Framework offre aussi la possibilité de développer selon l’architecture MVC (Modèle, Vues, Contrôleurs) qui permet de L dissocier les aspects logique métiers, données et présentation d’une application. C’est donc la mise en place de ce type d’architec- ture qui sera détaillé tout au long de cet article. Les pré-requis La version 1.0.1 du framework ne fonctionne pas sur une version de PHP inférieure à la version 5.1. Dans le fichier de configuration du ser- veur web Apache, il faut charger le module " mod_rewrite " permettant la réécriture d’adresse et autoriser l’utilisation de celui-ci en affectant la valeur " all " au paramètre " AllowOverride ". Enfin, dans le fichier php.ini, activer l’extension php_pdo_mysql.dll Projet Notre projet test, va consister à gérer une collection de bonsaïs. La page d’accueil devra lister l’ensemble des bonsaïs de notre collection et une autre page permettra d’en ajouter. Un bonsaï sera identifié par un numé- ro automatique et nous ne nous intéresserons qu’à l’espèce et à l’âge. Figure 2 : Fonctionnement général Arborescence Expliquons ceci par un exemple. Soit l’URL http://localhost/bonsai- Création des répertoires zend/index/ajouter Libre à vous d’organiser les répertoires de l’application, mais la com- Le découpage de cette URL peut être effectué comme suit : munauté de Zend préconise l’arborescence décrite sur la figure 1. http://localhost/bonsaizend/CONTROLLER/ACTION /racine de l’application Etape 1 • dossier " application " qui contiendra les L’URL est interceptée par le fichier .htacess qui la redirige vers le rou- parties MVC. (Veillez à respecter les noms teur, ce dernier la transmettant au contrôleur adéquat et l’architecture de ce répertoire) Comment déterminer le bon contrôleur ? • dossier " isc " contenant les Images, Le framework de Zend est très strict sur le système de notation des Script et Css (Vous pouvez le nommer à fichiers. Ce dernier précise que tout contrôleur doit bien évidemment se votre convenance) trouver dans le répertoire /application/controllers mais doit respecter • dossier " Zend " contenant le framework la règle de notation suivante : directement issu du répertoire library NomducontroleurController.php le nom du contrôleur devant commencer contenu dans l’archive du framework par une majuscule Dans notre cas, le nom du contrôleur est donc " index " ce qui implique Figure 1 : Arborescence d'un projet zend MVC donc que Le contrôleur portant le nom " IndexController.php " sera Fonctionnement général appelé. Lorsqu’une requête web arrive sur le serveur, celle-ci est automatique- ment traitée par un fichier .htaccess, qui est chargé de la rediriger vers Etape 2 un routeur. Ce routeur transmet la requête au contrôleur qui l’analyse et Une fois le contrôleur adéquat trouvé, celui-ci doit contenir une action exécute l’action nécessaire. Une action correspond à une page web correspondant au dernier membre de l’URL saisie (ici " ajouter ") (vue) portant l’extension " .phtml ". Là encore, une notation précise doit être respectée : Programmez! - N°102 63 NOVEMBRE 2007 63-66 22/10/2007 16:55 Page 64 Développement Web nomdelactionAction() : la première lettre de l’action devant être en minuscule. // Paramétrage des contrôleurs Notre contrôleur doit donc contenir l’action " ajouterAction() " $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions(true); Etape 3 $frontController->setControllerDirectory('./application/controllers'); Vient ensuite, le chargement de la vue. Celle-ci doit se trouver dans le répertoire /application/view/scripts auquel s’ajoute un répertoire por- // Recherche du contrôleur adéquat tant le nom du contrôleur, ce dernier contenant une page de type phtml $frontController->dispatch(); correspondant au nom de l’action : /application/view/scripts/index/ajouter.phtml Le contrôleur La figure 3, illustre le fonctionnement de cet exemple et permet d’assi- Si l’on reprend le fonctionnement général de Zend, il convient de créer miler le concept MVC du Zend framework. un fichier contrôleur et les pages correspondant à chaque action. Comme énoncé plus haut, notre contrôleur se nommera IndexControl- ler.php. Et sera constitué de deux actions : indexAction() correspondant à l’action à effectuer lors de l’arrivée sur l’accueil du site, ajouterAc- tion() qui permettra d’ajouter de nouveaux éléments. Le contrôleur devra être créé dans le répertoire /application/controllers comme suit : class IndexController extends Zend_Controller_Action { //Action d'accueil function indexAction() { echo " Appel de la page scripts/index/index.phtml Configuration du Routeur //Action d'ajout d'un bonsaï Création des fichiers function ajouterAction() La mise en place du routeur se résume par la création des fichiers .hta- { cess et routeur.php que l’on placera à la racine du projet. Une petite echo " Appel de la page scripts/index/ajouter.phtml Programmez! - N°102 64 NOVEMBRE 2007 63-66 22/10/2007 16:55 Page 65 EN BREF CREATE TABLE `db_bonsaizend`.`tb_bonsai` ( table située dans la base de données `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, protected $_name = 'tb_bonsai'; `espece` VARCHAR(45) NOT NULL, } `age` INTEGER UNSIGNED NOT NULL, PRIMARY KEY (`id`) $_name = ‘tb_bonsai’ sert à spécifier à Zend, que la classe Bonsai est ) mappée avec la table tb_bonsai de la base de données Libre à vous d’y ajouter quelques enregistrements. Les contrôleurs La seconde étape consiste à paramétrer notre application pour qu’elle Listing des bonsaïs : se connecte à la base de données. Pour ce faire, il faut créer un fichier ini situé dans le répertoire " application ". Nous appellerons ce fichier //Chargement de la classe Bonsai " configuration.ini " dont le contenu sera le suivant : function init() { [general] $this->view->baseUrl = $this->_request->getBaseUrl(); db.adapter = PDO_MYSQL Zend_Loader::loadClass('Bonsai'); db.config.host = localhost } db.config.username = root db.config.password = motdepasseroot db.config.dbname = db_bonsaizend //Action d'accueil une fois ce fichier créé, la configuration devra être spécifiée dans le function indexAction() fichier routeur.php : { $bonsai = new Bonsai(); //On spécifie le chemin du répertoire models // Parcours de la table tb_bonsai grace à la méthode fetchAll() set_include_path('.' $this->view->bonsais = $bonsai->fetchAll(); . PATH_SEPARATOR . './application/models/' . PATH_SEPARATOR . get_include_path()); } include "Zend/Loader.php"; L’analyse du code se fait d’elle-même. Tout d’abord, nous exécutons un chargement de la classe Bonsai grâce à la fonction init(). Etant donné //Chargement des classes Zend nécessaires que le listing du catalogue des bonsaïs se fera dans la page d’accueil, il Zend_Loader::loadClass('Zend_Controller_Front'); nous faut étoffer la fonction indexAction(). Cette fonction a pour fonction Zend_Loader::loadClass('Zend_Config_Ini'); première d’instancier la classe Bonsai() puis, grâce à la méthode " fet- Zend_Loader::loadClass('Zend_Registry'); chAll() " de la classe zend_db_°table, elle parcourt la liste complète des Zend_Loader::loadClass('Zend_Db'); bonsaïs, stockée dans la table tb_bonsai. Chaque donnée sera stockée Zend_Loader::loadClass('Zend_Db_Table'); dans la variable " bonsaï " qui sera transmise à la vue (view) // Chargement de la configuration Création d’un nouvel enregistrement $config = new Zend_Config_Ini('./application/configuration.ini', 'general'); $registry = Zend_Registry::getInstance(); function ajouterAction() $registry->set('config', $config); { if ($this->getRequest()->isPost()) // Configuration de la base de données { $db = Zend_Db::factory($config->db->adapter, $config->db->config-> toArray()); //Recupération des données grâce à la méthode Zend_Filter_ Zend_Db_Table::setDefaultAdapter($db); StripTags Zend_Loader::loadClass('Zend_Filter_StripTags'); Maintenant, il ne nous reste plus qu’à créer le modèle (mapping) dans $filtre = new Zend_Filter_StripTags(); le répertoire /application/models. Ce dernier se nommera bonsai.php $espece = $filtre->filter($this->getRequest()->getPost('espece')); et sera composé des lignes suivantes : $age = $filtre->filter($this->getRequest()->getPost('age')); $espece,'age' => $age,); class Bonsai extends Zend_Db_Table $bonsai = new Bonsai(); { $bonsai->insert($donneesformulaire); //on effectue le mapping entre le nom de la classe et le nom de la Programmez! - N°102 65 NOVEMBRE 2007 63-66 22/10/2007 16:56 Page 66 Développement Web EN BREF } baseUrl aura pour valeur http://localhost/bonsaizend } Ajouter.phtml En premier lieu, on vérifie que la méthode " Post " a été exécutée. Si c’est le cas, on utilise la classe Zend_filter_StripTags servant de filtre pour évi- ter l’utilisation du code HTML dans les données transmises. Enfin, on récupère les données pour les stocker dans un tableau qui servira à l’in- sertion des données dans la base. A noter l’utilisation de la méthode Figure 5 : Page d'ajout insert() nous évitant l’écriture complète du code SQL d’insertion. AJOUT D'UN NOUVEAU BONSAI
Je ne m’attarderai pas sur l’utilisation de CSS, images et autres compo- sants graphiques dans les vues, étant donné que cet article se veut