Formation Flex

Présentation

Adobe® Flex 2 est un ensemble de solutions de développement, de compilation et d'exécution d'applications internet riches (RIA) pour l'environnement d'exécution Adobe® Flash®. Flex est à ce jour la solution de développement la plus mature et la plus complète pour le développement d'applications RIA.

Destiné à améliorer la couche présentation des applications d'entreprise, Flex peut s'intégrer dans n'importe quel context technologique en s'appuyant sur la consommation de services métiers SOAP/REST/XML. Néanmoins, Flex s'intègre particulièrement bien dans un contexte normalisé J2EE par le biais de Adobe® Flex Data Services, permettant ainsi de maximiser le retour sur investissement dans le cadre du développement d'applications-métiers.

Public

  • Développeurs, Chefs de projet souhaitant réaliser une application avec Flex.

Pré-requis

  • Avoir des notions de programmation orientée objet : C++ ou C#, Java ou ActionScript 2.0 et quelques connaissances de XML.

Durée

  • Module 1 (3 jours)
  • Module 2 (5 jours)
  • 5 jours (horaires : 9h00 à 12h30 - 14h00 à 17h30)

Compléments d'informations

Présentation de Flex 3

  • Les clients riches Internet
  • La ligne de produits Flex : SDK, FlexBuilder, Flex data services, charting
  • Machine virtuelle flash et flash player
  • Le processus de développement d'une application Flex

L'outil FlexBuilder

  • Eclipse et FlexBuilder
  • L'interface de FlexBuilder : éditeurs, vues et perspectives
  • Créer un projet et votre première application
  • Créer un main et le lancer
  • Le debug

Fondamentaux Flex

  • Créer une application Flex
  • Organiser une application Flex avec les conteneurs, les contrôles et les bindings
  • Créer et utiliser des composants custom

Gérer les événements

  • Comprendre la notion d'événements, gérer les événements, utiliser l'objet événement

Utiliser les contrôles

  • Comprendre la notion de contrôle, utiliser les contrôles de type
  • Button, Text, Checkbox
  • Afficher des images, fournir des données aux contrôles

Gérer la présentation de l'application

  • Organiser le contenu avec les conteneurs Application, Panel,
  • Form, Box, DividedBox, Tile, ControlBar...
  • Bonnes pratiques
  • Règles de dimensionnement des conteneurs

Utiliser les contraintes

  • Positionnement absolu ; le conteneur Canvas
  • Créer des contraintes de positionnement avec Flex- Builder et en MXML
  • Contraintes avec des composants imbriqués

Les fondement de FLEX

  • Les fondements pour développer des Applications Riches Internet avec l'outil Flex Utiliser les états pour concevoir une application
  • La notion d'état
  • Avantages
  • Créer des états avec FlexBuilder
  • Regarder le MXML généré et changer d'état en ActionScript
  • Les états des composants imbriqués
  • La navigation dans l'application
  • Personnaliser l'application
  • Utiliser les styles et les thèmes pour changer le look and feel
  • Appliquer les effets et les transitions pour animer l'application

Manipuler les données avec ActionScript 3.0

  • Le pattern Model View Controler (MVC)
  • Créer des modèles de données xml avec le tag mx:Model
  • Créer des classes ActionScript 3.0 : package, constructeurs, propriétés, méthodes
  • Instancier des objets ActionScript en MXML

Charger des données XML avec HTTPService

  • Créer des requêtes http
  • Gérer les résultats avec les bindings et les gestionnaires d'événement
  • Gérer les erreurs
  • Interroger différents domaines

Créer dynamiquement des composants avec le Repeater

  • Comprendre la philosophie du Repeater
  • Principales propriétés et méthodes : dataprovider, currentItem, getRepeaterItem()
  • Accéder aux composants dynamiquement créés

Afficher les données avec une DataGrid

  • Fournir des données à la DataGrid
  • Spécifier et formater les colonnes
  • Le rendu et l'édition des colonnes
  • Les composants de type ItemRender et ItemEditor

Qu'est-ce que Flash ?

Au départ était "FutureSplash". Logiciel né en 1995 et racheté par macromédia en 1996 avant de le renommer Flash, il permettait de créer des animations vectorielles et fut utilisé par des sites à renommée internationale (MSN, Disney pour ne citer qu'eux)

En quelques années, les versions vont se succéder et Flash va permettre de plus en plus de possibilités. De simples animations vectorielles avec interpolations de mouvement, Flash va petit à petit prendre en charge les sons et les bitmaps, faciliter la création de boutons (v2), puis d'outil de graphisme pur, il va intégrer une librairie de scripts permettant d'interagir avec le navigateur (v3), ainsi que la gestion des mp3 (v4). Durant la même période, le lecteur Flash pénètre le web comme aucun autre module additionnel ne l'avait fait.
A cette époque, Flash était encore considéré comme un outil de graphistes, leur permettant de laisser libre court à leur esprit créatif. Les sites qu'on voyait fleurir sur le web étaient souvent le résultat de vrai professionnels du design. Mais la réputation de Flash se résumait à "un outil pour faire des bannières publicitaires ou des sites lourds" qui rebutent les utilisateurs à coups de longs préchargements.

Puis dans les années 2000, Flash 5 fit sa sortie. Cette nouvelle mouture améliorait le langage de script, ce dernier se faisant nommer dès lors ActionScript. La version 6 (Flash MX, en 2002) déclencha un virage dans la politique du produit. De simple outil de graphisme vectoriel, il intégrait maintenant une pléthore de composants (malheureusement buggés) permettant de commencer à développer des applications. Néanmoins à ce moment-là, l'outil était encore bien limité.

En 2003, Macromedia annonçait Flash MX 2004 et les développeurs Flash espéraient... Mais qu'espéraient-t-ils ? Flash annonçait la sortie de son nouveau langage ActionScript, l'AS2. L'actionscript version 1 était basé sur le développement par prototype, alors que l'actionscript 2 était axé vers la programmation orientée objet. Le but de ce nouveau langage ? Ouvrir le produit aux développeurs de tout bords et orienter le web vers l'utilisation d'applications internet riches (RIA). Malgré tout, l'AS2 n'était pas vraiment à la hauteur des espérances. ce dernier, lors de la phase de compilation des fichiers, était transformé en AS1 avant d'être intégré au fichier final. Au final, mis à part une syntaxe différente, il n'y avait pas vraiment de révolution dans ce nouveau langage. Il ouvrit tout de même la voie à de nouveaux acteurs dans le monde du Flash, agrandissant la communauté des développeurs. Certains amenant même leur pierre à l'édifice en développant des librairies et des frameworks améliorant nettement le codage (les fameuses librairies de Grant Skinner, qui furent par la suite intégrées au core du framework Flash, pixlib de Francis Bourre, etc...)

Peu de temps après, Macromedia annonce Flex, qui est sensé permettre le développement d'applications internet riches en proposant un framework dédié avec une série de composants prêt à l'emploi. Pour la première fois, les swf (format du fichier final) n'étaient plus pré-compilés avant d'être placés sur un serveur distant, ils étaient compilés à la volée directement sur le serveur, permettant de nouvelles possibilités dans le développement dynamique. Malheureusement, Flex fut un produit couteux et nécessitait des licences et une installation serveur que peu de monde pouvait se permettre.

En 2005, Macromedia annonce la sortie de Flash 8, qui ne sera qu'une demi-révolution du côté des développeurs. Flash 8 apportera son lot de nouveautés très intéressantes, mais elle concerneront plutôt le graphisme que le développement (ajout des filtres applicables directement dans l'interface de création et classes bitmapdata pour la manipulation d'images entre autre). Le lecteur Flash sera quant à lui nettement optimisé pour apporter de nouvelles possibilités et minimiser l'utilisation des ressources processeur.

Et c'est à la fin de cette même année qu'un frisson parcours le dos de tous les acteurs du monde Flash. Macromedia n'est plus, la firme a été rachetée et intégrée par Adobe. Les rumeurs vont bon train, mais dans l'ensemble, tout ce petit monde est un peu sceptique quant à l'évolution de Flash au sein d'Adobe. Puis des informations commencent à filtrer, et annoncent un player en version 9, qui va intégrer la machine virtuelle AS1/AS2 optimisée, mais également une nouvelle machine virtuelle qui va permettre de développer en ActionScript3.

Et c'est maintenant que la véritable aventure commence !!
Flex est mis à jour en version 2 et sort en même temps que le lecteur Flash 9 (nom de code tamarin, projet open-source sous l'égide de la fondation mozilla). Il intègre de nouvelles fonctionnalités, et s'utilise avec l'AS3, tandis que le logiciel Flash 9 sera intégré quelques temps plus tard dans la suite CS3 d'Adobe.
Malgré tout, les développeurs restent toujours sceptique quant à l'avenir de leur logiciel fétiche. Connaissant les prix de licence qu'impose Adobe sur ses produits phares, l'utilisation d'AS3 sera peut-être un luxe qu'ils ne pourront pas se payer. C'est en 2007 qu'Adobe annonce la nouvelle qui va résonner dans le monde du développement Flash :

Le flex framework est open-source !!

Faire du développement Flash est gratuit (pour tout dire, ça l'était déjà avant grace aux initiatives de quelques développeurs qui avaient créé des compilateurs et divers outils open-source). 
Et avec l'ActionScript 3, Flash devient un sérieux concurrent aux autres langages de développement. Cette fois, la 2ème machine virtuelle du lecteur Flash 9 est entièrement dédiée à la lecture des animations AS3 et Flex2. Plus de recompilation en prototype, AS3 devient un vrai langage de programmation digne d'un JAVA ou d'un C#, dont il s'inspire. Le langage est toujours basé sur la norme ECMAScript, mais la hiérarchie des classes a été entièrement revue. L'époque ou il était nécessaire de créer des objets en librairie pour les associer à des classes ou encore d'utiliser la composition est révolu. Le MovieClip n'est plus le roi, s'en est fini des hacks pour palier aux bugs du système, AS3 est désormais un langage sérieux autour duquel bon nombre de Flasheurs s'activent. Mais cette sortie annonce aussi une séparation distincte dans les métiers liés à Flash.

Durant les anciennes versions, la tendance fut d'abord au graphisme, puis les développeurs firent leur apparition dans la sphère, et tous cohabitaient plus ou moins serainement. Aujourd'hui, l'influence va vers la spécialisation, et des spécialisations, il en existe dans le domaine :

  • animateur
  • graphiste et webmaster
  • développeur Flash
  • développeur Flex
  • architecte Flex data service
  • spécialiste Flash Media Serveur

Et encore, je ne rentre pas dans les détails. J'avais lu un article sur le blog d'un flasheur qui listait les différentes tendances dans les spécialisations Flash et leur nombre était élevé, du développeur Flash en passant par l'architecte Flex et le créateur d'interfaces, les possibilités sont ouvertes. Mais le point à soulever, c'est la séparation nette entre les métiers du graphisme et les métiers du développement. Lors des versions précédentes, Flash intégrait (mal) dans son IDE un environnement permettant de coder, mais ce dernier n'était pas du tout adapté à un vrai travail de développeur. 
Adobe a repris les rennes et maintenant, il existe 2 manières distinctes d'utiliser Flash. Soit on investi dans la suite CS3 pour pouvoir travailler avec Flash dans une optique design, soit on utilise le nouveau framework open-source (agrémenté de FlexBuilder par exemple) pour s'orienter du côté programmation.

Flex est définitivement orienté vers le développement applicatif. Non seulement il permet rapidement de créer des interface avec des composants permettant d'être hérités (les réutiliser dans des sous-classes en leur rajoutant de nouvelles fonctionnalités), mais il est composé d'une première couche qui est le langage en lui-même, et de différents framework possibles pour programmer de manière objet.

Un des atouts de Flex est de pouvoir décomposer une animation en 2 parties distinctes : Il permet de séparer la couche présentation de la couche code. Ainsi, le MXML (fichier .mxml), langage de description XML, défini l'aspect de l'application finale, quant à l'ActionScript (fichier .as), son rôle est de structurer le code sous forme de classes.

Il est donc possible de développer des applications tout en intégrant des composants personnalisés, de communiquer avec les technologies externes pour transmettre et réceptionner des données, peu importe le langage de script, d'intégrer et de traiter des images, des sons, de la vidéo, etc...

On pensait qu'adobe assènerai le coup fatal avec AIR, un lecteur basé sur AS3 dédié aux applications locales mais restant en communication avec le web, ayant une API plus lourde mais permettant des accès directs aux méthodes du système d'exploitation (manipulation de fichiers, enregistrement de vidéos, etc...). Mais non... Adobe continue sur sa lancée, et à anoncé il y a quelques mois la sortie future du lecteur Flash 10, ce dernier intégrant un véritable moteur 3d, qui était un peu le chaînon manquant dans de ce logiciel. Et Flex 3 est en version béta 3, une sortie annoncée sous peu.

Ma propre expérience se base sur quelques années de développement Flash. J'ai débuté mon apprentissage de l'actionscript avec Flash MX (AS1), mais je m'y suis mis sérieusement dès l'arrivée de l'actionscript2. J'ai essayé de rester à jour par rapport aux nouveautés introduites, mais le virage Flex / AS3 a été un peu long à prendre. Je voulais d'abord exploiter les connaissances que j'avais durement acquises en AS2, et lorsque j'ai fait mes premiers tests en AS3, le framework n'était pas encore open-source, je ne tenais pas à m'investir plus en avant sans savoir si, comme sa mouture précédente, les prix des licences dissuaderaient les gens dans l'utilisation de cette technologie.

Après son passage en open-source, j'ai heureusement eu l'occasion d'imposer Flex dans un petit projet applicatif après avoir décidé de refondre une application Access. En 3 semaines, avec mes maigres connaissances en AS3 et MXML, j'ai réussi à me former et créer une RIA sur la base du framework PureMVC. C'était pour moi-même très étonnant d'être arrivé en si peu de temps à intégrer toutes ces nouveautés, mais il est clair que mon background en Flash y est pour quelque chose. Après quelques prises de tête pour comprendre comment placer ses éléments dans un fichier MXML pour obtenir le résultat visuel voulu, et quelques recherches et lectures de code afin d'approcher Flex de la bonne manière, j'ai tout de même trouvé très rapide la prise en main des 2 langages (MXML et AS3) et leur utilisation commune pour la création d'application. Mon application utilise AMFPHP pour la communication serveur (la dernière version, que je découvrais également) et utilise Javascript pour générer des fichiers Excel de présentation des données. En conclusion, je pense que Flex offre des possibilités comme nulles autres pareilles, multi-plateformes, le tout dans un laps de temps d'apprentissage très court pour quelqu'un ayant des connaissances plus ou moins approfondies du framework Flash. Et la tendance est à son exploitation, même si les entreprises ont encore un peu de peine à s'y mettre.

Et le laboratoire adobe n'a pas fini de nous étonner. Il y a quelques années, Microsoft (avec sparkle, renommé ensuite silverlight) et d'autres grandes firmes présentaient leurs propres moteurs vectoriels et annonçaient la mort de Flash, mais à l'heure actuelle, Adobe nous prouve que Flash et Flex gardent quelques bonnes longueurs d'avance face aux autres concurrents du marchés. Avec un taux de pénétration de leur lecteur proche du 100%, le swf à encore de beaux jours devant lui.