Présentation pour continuer sur « Future of Rich Internet Application » par l’un des sponsors de Devoxx, Adobe Systems. Sur scène, pas mal de beau monde : Matt Chotin et surtout Chet Haase.

Là je vous sens incrédule… Chet Haase était anciennement chez SUN et travaillait sur… JavaFX. Il est maintenant chez Adobe et il travaille sur Flash 10. Comme quoi, on ne va pas jouer les tabloïds à 2 euros mais cela donne une idée. C’est aussi le coauteur avec Romain Guy d’un bon livre sur Swing et les techniques avancées pour les clients lourds.

Intro
Où en sommes-nous de Flex aujourd’hui ? Quoi de neuf du côté du runtime ?
La prochaine version de Flex « Gumbo » propose d’apporter un grand nombre de fonnctionalités en particulier dans le domaine de la gestion des effets 3D. Ce qui m’a plus intéressé c’est l’annonce d’un partenariat entre SpringSource et Adobe, afin d’améliorer le travail entre Adobe LifeCycle d’une part et Spring d’autre part. Est-ce à dire que SpringSource s’appuiera en partie sur la communauté d’Adobe ? En tous les cas cela permet dès maintenant des opérations simples comme utiliser un Bean Spring, le déployer dans un serveur léger type Tomcat, avec le moteur LifeCycle.

Pour ceux qui découvrent Flex, il s’agit d’un moteur basé sur Flash de génération d’interface client riche, afin de construire des applications embarquées dans un navigateur ou aussi des applications déployées sur nos postes, via Adobe AIR.

Pour écrire une application Flex, vous pouvez utiliser la syntaxe MXML ou le langage ActionScript. La création des écrans s’effectue avec Flex Builder. Enfin Flex propose 4 protocoles d’échanges entre le navigateur et le serveur : HTTP, SOAP, AMF et RTMP. AMF est le format binaire d’Adobe et le format RTMP est le format bas niveau basé sur TCP.

Flex aujourd’hui c’est un ensemble d’applications et de sites déployés. J’en profite pour parler de l’excellent site Parley’s.Com qui vous permet de suivre à distance Devoxx. Flex bénéficie d’un effet d’adoption massif en particulier depuis la sortie de la dernière version de la plateforme. Si vous souhaitez tester Flex, je vous conseille ce site : http://flex.org/tour. Si vous souhaitez tester un petit sympathique utilisant Adobe AIR, je vous conseille Balsamiq Mockup.

Flash Player 10
Flash 10 s’améliore, donc Flex s’améliore. C’est en substance le message de cette partie. La dernière version sortie en octobre propose des effets assez bluffants montrés durant la présentation. J’ai eu du mal à retrouver cette démo, voici une page reprenant cette démonstration.

Nous avons eu ensuite une démo des Pixel Blender (sorte de shader pour flash) ainsi que du moteur de rendu de texte et enfin la démo des fonctions sonores. J’ai été pas mal bluffé par la qualité des démonstrations. Il ne manque rien à Flash pour en faire un moteur tout à fait correct pour faire des jeux vidéos en 3D. Les fonctions de traitement de l’image et de la vidéo étaient aussi intéressantes.

Du côté de Flex
Tout d’abord la sortie d’Adobe AIR 1.5, puis ensuite le présentateur a parlé de Gumbo, la version à venir de Flex. L’objectif est d’offrir le support de Flash Catalyst, le pont entre le monde des designers et le monde des développeurs. Peu de gens sont à la fois des développeurs et des designers. L’idée de catalyst est de vraiment forcer la séparation entre la partie représentation (l’image) et la partie logique (un bouton sur lequel je clique).

Pour illustrer que l’équipe de développement de Flex travaille essentiellement sur ce sujet, Chess prend la photo d’un urinoir avec une fausse mouche collée au fond. Il explique qu’en tant qu’américain c’est un concept qu’il ne connaissait pas, mais qu’il comprend que cela aide les gens à se concentrer et à ne pas se disperser. Si tu ne veux pas que tes développeurs codent n’importe quoi, met une mouche au fond de l’urinoir.

Le cube qui tourne en 3D
Démonstration du modèle d’animation. Chess nous montre des carrés disposés en étoile. Ok. Ensuite il ajoute une fonction de rotation 3D en mxml et un slider. Ok. Et ensuite il s’amuse avec le slider… oh magie les carrés s’élevent et nous sommes en 3D.
Ce qu’il faut retenir : il sera très simple dans la prochaine version de Flex d’ajouter des animations 3D sur des objets simples en 2D.

Le vrai truc intéressant pour nous les geeks
James Ward est l’un de mes speakers préférés. Il avait déjà fait son petit effet au Paris JUG cet été mais là encore, même si Flex est un sujet facile à traiter en conférence, le bonhomme maîtrise son sujet.

Comme il l’explique tout d’abord, en terme d’architecture, Flex revient sur le modèle client-serveur classique que les architectes connaissent. Idéalement, le serveur est sans état et le client Flash avec votre application conserve l’état. Le souci pour les gens venant du monde Java c’est le souhait de conserver notre modèle Java et nos couches métiers. Comment alors travailler avec Flex ?

Adobe propose 2 solutions :
– Adobe BlazeDS d’une part, open-source libre et gratuit
Adobe LiveCycle Data Services version commerciale avec plus de fonctionnalités

LiveCycle DS est une web application Java déployée sur un serveur d’app léger comme Tomcat ou un Weblogic. Il facilite grandement l’échange d’objets entre le client Flex et le serveur, en utilisant des techniques de sérialisations d’objet et le protocole AMF d’Adobe (entre autre).

James Ward en profite pour annoncer un partenariat entre SpringSource et Adobe, afin de renforcer les synergies autour de Flex. Et il se propose de faire une démonstration en live.
(au passage je vous conseille cet article de Sébastien Arbogast)

Ce nouveau projet s’appellera « Spring BlazeDS » et il permettra entre autre de bootstraper le MessageBroker de BlazeDS comme un bean managé par Spring. La servlet Spring Dispatcher sera aussi en charge avec un système de templates Spring du pasage de message vers le client. Le code m’a semblé propre et clair. Difficile ici de vous donner les détails, mea culpa.

Pour terminer James a parlé de génération de code et d’application rapidement de type CRUD. Pour cela nous avons vu la démonstration suivante : dans Flex Builder, une datasource est configurée. Il y a une table « PRODUCT ». Je clique sur cette table et je la glisse vers mon Canvas Flex. Celui-ci me demande si je souhaite utiliser une DataGrid pour listes tous les produits ? je mets oui. Ensuite en regardant le code MXML généré on voit en fait que c’est le code standard que nous aurions écrit avec LiveCycle DS du côté serveur. Cependant cela fait gagner du temps.
Il lance ensuite sa démo, la grille apparaît avec 10 produits. Il montre ensuite l’édition d’une des colonnes et il change le prix. Après avoir validé, on voit dans la base que le client (du flash) a renvoyé au serveur (webapp livecycle DS) un message et que le moteur de livecycle avec du spring a modifié la valeur dans la base de données… Ca c’est cool.

Il lance ensuite une deuxième fenêtre Firefox sur la même page. Ok je vois le même tableau avec mes 10 produits et ma valeur modifiée. Il change encore une fois le contenu de la cellule, et valide. Et là, on voit la valeur se mettre à jour instantanément dans l’autre Grille dans l’autre fenêtre de navigateur. Il explique que LiveCycle dispose d’un système de notification avec du Comet et que le client est donc notifié en cas de changement… cela montre la puissance et la simplicité de Flex pour les sceptiques.

En conclusion : encore de bonnes surprises par les personnes d’Adobe qui donnent l’impression d’en avoir sous le pied. On sent qu’un gros mouvement s’amorce du côté du navigateur. Je me demande si JavaFX sera sur le même type de marché ou pas… A suivre