Présentation
La technologie Flex a été créée par Macromedia en 2004 puis reprise par Adobe en 2006. La version actuelle est la 3.2, et une version 4.0 (nom de code Gumbo) est en préparation pour la seconde moitié 2009. Au sens strict, Flex est un framework de développement s’appuyant sur le Flash Player et offrant des éléments facilitant la création d’applications riches. Depuis la version 3, Flex est devenu un projet open source.

Principes et caractéristiques
La technologie Flex peut être expliquée en trois couches :
- L’interface est décrite à l’aide d’une syntaxe MXML (Macromedia XML). On peut y placer et organiser les conteneurs, composants et contrôles selon une hiérarchie. Les fichiers .mxml sont ensuite transcrits en ActionScript (fichiers .as) au moment de la compilation.
- La logique applicative sera généralement contenue dans des fichiers ActionScript. L’ActionScript 3 est le langage utilisé pour créer des exécutables Flash (.swf). C’est un langage objet basé sur ECMAScript (norme ECMA), ce qui lui donne une forte ressemblance avec le Javascript au niveau grammatical, bien qu’il soit également assez proche du Java.
- Les applications Flex, tout comme ce que l’on peut créer avec le logiciel Flash CS4, sont de simples exécutables Flash de type .swf. Flex fournit tout de même une page HTML permettant simplement d’intégrer l’application sur une page web.
- Flex permettant de réaliser des RIA, on peut effectuer un certain nombre de traitements coté client. Néanmoins, son architecture reste la plupart du temps de type client-serveur. Flex (et les diverses communautés open source) offre diverses possibilités de communication avec un serveur, qu’il s’agisse du PHP (AMFPHP), du .NET (FluorineFx), du Java (BlazeDS, LCDS) ou toute technologie pouvant exposer des web services.
La version actuelle de Flex offre les possibilités suivantes :
- un ensemble de contrôles “riches” pour facilement créer des applications : check box, calendrier, grille de données, combo box, etc.
- le “data binding”, permettant de lier un champ graphique à une valeur : si cette dernière change, la vue est automatiquement rafraîchie avec la nouvelle valeur
- la lecture de médias (vidéo, audio) dans les formats H264, H263, On2VP6, MP3 et des images de types GIF, JPG et PNG
- l’intégration de l’e4x, permettant de manipuler simplement du XML
- la possibilité de personnaliser l’application avec des feuilles de styles CSS et de les skinner en utilisant des images ou des animations de type .swf
Outils
La technologie Flex s’appuie sur l’éditeur Flex Builder, lui même basé sur Eclipse : il profite donc des possibilités de cet environnement. Précision : Flex Builder existe en version “stand-alone” ou en tant que plugin Eclipse. Cet éditeur offre de nombreuses possibilités, se rapprochant de celles disponibles en Java sur Eclipse : complétion, coloration syntaxique, refactoring mais aussi une version WYSIWYG (What You See Is What You Get) des fichiers MXML et CSS, un mode débug et un profiler (pour monitorer la mémoire utilisée).

L’une des forces de Flex est aussi de s’interfacer correctement avec les autres produits d’Adobe : il est en effet tout à fait possible d’utiliser les logiciels Flash, Fireworks ou Illustrator pour créer des skins et des composants Flex. Le lien entre designers et développeurs est très important pour Adobe : c’est également pour cela qu’un nouveau logiciel, nommé Flash Catalyst, arrive bientôt. Il permet très simplement de créer une interface Flex (aspect graphique, comportement) sans avoir à écrire une ligne de code ! L’ensemble de éléments mis bout à bout forme un workflow designer / développeur, thème récurrent autour de la technologie Flex.

Adobe propose également des solutions serveur Java pour faciliter la communication et les échanges avec une interface Flex. Il s’agit de BlazeDS, projet open source et de Live Cycle Data Services, solution payante. La première est un sous-ensemble de la seconde, mais elles offrent toutes les deux les meilleurs outils de communication Flex - Java. Il existe également d’autres outils de communication mais ceux-ci ne sont pas gérés par Adobe.
Points forts
La technologie Flex s’appuyant sur le Flash Player, elle profite de ce fait des avantages de ce dernier. Cela lui fait donc profiter de l’expérience des 10 versions du Player mais également d’une communauté importante de développeur “Flash”. On peut ainsi citer quelques points forts de Flex :
- sa capacité de déploiement : le Flash Player est installé sur près de 98% des ordinateurs (source : chiffres Adobe) en version 9 ou plus. Un site indépendant, RIAStats, montre un taux de 97% d’installation.
- son ubiquité : il existe un Flash Player sur Windows, Mac OS et Linux (encore en version 9 sur ce dernier).
- son environnement de développement, basé sur Eclipse.
- sa capacité à pouvoir dialoguer avec différents languages serveur, en utilisant les différents moyens de communication : les appels http classiques, les web services, les RemoteObject, l’AMF, etc.
- sa gestion des médias : le format Flash est en effet le plus répandu sur Internet pour la diffusion de contenu vidéo (cf. des sites comme Youtube ou dailymotion).
- sa large communauté, s’appuyant en partie sur les nombreux développeurs Flash déjà existants. On trouve de nombreux documents et exemples sur Internet.
Points faibles
De la même manière que Flex profite des points forts de Flash, elle souffre également des mêmes problèmes. De nombreux développeurs web n’apprécient pas Flash en mettant en cause son incapacité à créer des applications accessibles, à être correctement référencées ou encore à fonctionner correctement avec les barres de navigation des navigateurs.
Ces affirmations ne sont pas tout à fait vraies. En effet, il existe un ensemble de propriétés permettant de rendre accessible les applications. Les moteurs de recherche commencent à référencer le contenu de fichier .swf et la version 3 de Flex permet d’interagir correctement avec la barre de navigation des navigateurs. Des efforts sont donc fait mais ces points restent vrais et demanderont forcément un supplément de travail comparé par exemple à un développement d’une application web en HTML.
De plus, si l’on constate que la communauté Flash est importante, elle est en grande partie constitué de designers ayant des connaissances en développement, et pas toujours de développeurs confirmés ou d’architectes. Bien que ce type de profil est en train de se répandre, elle reste encore une minorité dans le monde de l’ActionScript.
Le futur
Une version 4 du framework Flex ainsi que du Flex Builder est en préparation, elles devraient être disponibles durant la seconde moitié de 2009 et apporter leur lots de nouveautés :
- une amélioration de la collaboration entre design et développement, notamment en simplifiant le processus de skinning de composants pour qu’il soit très poussé sans avoir à coder en ActionScript, juste avec une description mxml.
- l’ajout de nouveaux éléments pour profiter des capacités du Flash Player 10, notamment un composant vidéo refait et peut-être de la 3D
- une amélioration de la productivité en optimisant le compilateur, avec pour objectif des temps divisé par 5 !
- une plus grande interaction avec la technologie AIR d’Adobe
Une présentation plus complète est disponible sur le site du Flex SDK : Gumbo Themes (Gumbo étant le nom désignant Flex 4)
Flex étant devenu récemment un projet open source, il n’est pas simple à l’heure actuelle de voir une stratégie à long terme. On peut toutefois penser que cette technologie va continuer à s’ouvrir pour agrandir encore sa communauté et renforcer sa position. De la même manière, le portage d’applications Flex sur des téléphones mobiles dépendra de la future version du Flash Player, dont on dit que c’est son objectif principal.
Références
Voici quelques applications réalisées avec Flex :
- Le Tour de Flex, application AIR compilant des possibilités de Flex
- Acrobat.com, un ensemble de services d’Adobe dont notamment les impressionants Buzzword (traitement de texte avancé) et ConnectNow (pour le travail collaboratif)
- Aviary, un suite d’outil d’édition graphique
- Le décorateur de Sherwin-Williams, permettant de colorer des pièces d’intérieur ou des extérieurs avec plus d’un millier de couleur. Le rendu est bluffant, et l’on se rend bien compte des possibilités utilisés au niveau du rendu des ombres et des couleurs.
Liens
Voici quelques liens complémentaires, des sources d’informations à surveiller pour ceux qui s’intéressent à la technologie Flex :
- Le site open source du Flex SDK
- Le site open source de BlazeDS
- Le Flex Developer Center, point d’entrée vers de nombreuses ressources
- Flex.org, portail communautaire autour de Flex où l’on trouve de nombreux composants, un showcase, des offres d’emploi, etc.
- Le blog officiel de l’équipe Adobe Flex
Bilan
En se basant sur le Flash Player, la technologie Flex a su s’imposer pour devenir très utilisée dès lors que l’on parle d’applications RIA. En effet, en s’appuyant sur l’écosystème Flash déjà existant, elle a su se développer rapidement et communiquer efficacement. Flash étant par définition une technologie graphique, il est normal que les rendus proposés soient de qualité supérieure aux interfaces “classiques”. Le virage open source pris par Flex va certainement changer l’évolution de cette technologie qui semble atteindre une certaine maturité.






