AIR 1.5.1: mise à jour mineure

27 02 2009

adobeairsolo Le runtime a été discrètement mis à jour cette semaine et passe en version 1.5.1. Cette version corrige principalement des bugs listés sur cette page, dont certains bugs spécifiques à Linux. Une seule nouveauté apparait dans l’API: le InvokeEvent.reason. Oliver Goldman de la AIR team en parle sur son blog. Cet ajout concerne principalement les applications qui se lancent automatiquement au démarrage de l’OS. Il est possible d’être à l’écoute de l’événément Invoke mais il était impossible de savoir ce qui déclenchait le lancement de l’application: le démarrage de l’OS ou une action de l’utilisateur. La propriété « reason » accepte deux valeurs: « login » ou « standard » pour différencier les deux usages et modifier le comportement de l’application en fonction. Par exemple, au login de l’OS, l’application se lance et se place dans le systray. Lors d’un lancement standard, déclenché par l’utilisateur, la fenêtre principale de l’application apparait.





Ilog Elixir: la v2 est disponible

23 02 2009

elixirLa nouvelle version des composants de visualisation de l’éditeur Ilog (une société IBM) est disponible et riche en nouveautés. La suite Elixir, distribuée par Adobe, regroupe des composants de charting 3D, des gaugues, des cartes vectorielles, un diagramme de planification de ressources, un treemap, un organigramme et un charting radar. La version 2 complète cette suite déjà riche avec quatre nouveaux composants:

  • Le Calendrier: incontestablement un hit! C’est pour le moment la meilleure expérience de manipulation de calendrier que j’ai pu voir dans un navigateur. Pour avoir joué avec la beta, l’API est très simple de prise en main et très complète.
  • La Heat map: C’est un composant très riche qui permet d’exprimer visuellement des densité sur une carte. Les variations de couleurs sont plus expressives que les nuages de points et le composant sait gérer de gros volumes de données.
  • Le diagramme de Gantt: Le voilà… le diagramme de gestion de tâches… le MS Project killer dans le navigateur. La démo est très impressionnante.
  • Le charting OLAP/pivot: très proche des tableaux dynamiques croisés d’Excel.

Toutes les démos des composants sont disponibles et vous pouvez obtenir les sources des démos. Dernière bonne nouvelle: le prix reste inchangé alors que la gamme est enrichie. Ilog organisera prochainement un événement sur Paris pour présenter toute sa gamme de composants de visualisation de données, dont la suite Elixir. L’événement VUME se déroulera à Paris fin Mars, j’annoncerai l’événement sur ce blog.





Choisir son framework Flex

11 02 2009

Flex iconJeremy Wischusen de Visual Flow Designs vient de publier un article sur le portail DevNet qui analyse les forces et les faiblesses des différents frameworks Flex du marché. Voici un résumé de son étude :

Cairngorm: C’est le framework MVC historique et Flex et le plus connu. Il reprend les codes du monde Java et se concentre sur trois domaines: la gestion des actions de l’utilisateur, les interactions avec le serveur et la logique métier tout en gérant le contexte de l’utilisateur. Les classes principales sont le ModelLocator, le ServiceLocator, la logique métier et le FrontController. La force principale de Cairngorm est sa réputation dans la communauté, le fait qu’il soit un projet Open Source Adobe supporté et avec une communauté active. Il est très adapté au développement à plusieurs. La faiblesse se situe au niveau du nombre élevé de classes à coder (chaque événement est relié à une commande, donc une classe à écrire par événement). Une autre limitation est le fait que chaque événement doit avoir sa propre classe de commande, donc nous sommes limités à un répondeur par événement.

PureMVC: A l’origine, ce framework n’a pas été conçu pour Flex. La philosophie MVC est donc respectée à l’extrême.  Comme Cairngorm, un projet PureMVC découpe votre code en plusieurs packages et en de nombreuses classes. PureMVC profite aussi d’une large communauté de plus en plus active. Il est aussi très adapté au développement par équipes. La faiblesse de PureMVC est qu’il ne tire pas partie des forces du framework Flex (il ne profite pas par exemple des forces du langages MXML). PureMVC est jugé plus difficile à appréhender que d’autres frameworks, la courbe d’apprentissage est plus étendue.

Jeremy parle aussi dans son article des frameworks SWIZ et MATE, moins connus mais très originaux dans l’approche. Le choix d’un framework MVC fait souvent débat au démarrage d’un projet. Je vous invite à lire cet article et plus particulièrement la conclusion qui vous donne des conseils pour choisir le bon framework.





Détection de présence avec LiveCycle

4 02 2009

Vodpod videos no longer available.

Un client m’a demandé comment LiveCycle Data Services peut détecter côté Java quand un utilisateur se connecte ou se déconnecte de la couche de messaging. Du coup, j’ai réalisé un exemple qui utilise l’API Java de LCDS pour inscrire dans la console Java les événements de création de session et de création de client pour le messaging. Les sources du projet Flex/Java sont disponibles ici. Côté Java, j’invoque par remoting un service qui se met à l’écoute des événements de Session, de FlexClient et de MessageClient. Dès qu’un événement est reçu, le service java inscrit une ligne dans la console de log. Voici la liste des listeners Java:

        MyFlexSessionListener sessionListener = new MyFlexSessionListener();
        FlexSession.addSessionCreatedListener(sessionListener);

        MyFlexClientListener flexClientListener = new MyFlexClientListener();
        FlexClient.addClientCreatedListener(flexClientListener);

        MyMessageClientListener messageClientListener = new MyMessageClientListener();
        MessageClient.addMessageClientCreatedListener(messageClientListener);

Côté code Flex, c’est juste un module classique de chat où j’ai rajouté un bouton pour lancer une fois le service Java par remoting, s’abonner manuellement au chat et se désabonner. La vidéo montre comment réagit la console Tomcat en fonction des actions des utilisateurs Flex. Le code du chat est simplissime:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Script>
        <![CDATA[

            import mx.messaging.messages.AsyncMessage;
            import mx.messaging.messages.IMessage;

            private function send():void
            {
                var message:IMessage = new AsyncMessage();
                message.body.chatMessage = msg.text;
                producer.send(message); 
                msg.text = "";
            }

            private function messageHandler(message:IMessage):void
            {
                log.text += message.body.chatMessage + "\n";    
            }

        ]]>
    </mx:Script>

    <mx:Producer id="producer" destination="chat"/>
    <mx:Consumer id="consumer" destination="chat" message="messageHandler(event.message)"/>

    <mx:Panel title="Chat" width="100%" height="100%">
        <mx:TextArea id="log" width="100%" height="100%"/>
        <mx:ControlBar>
             <mx:TextInput id="msg" width="50%" enter="send()"/>
             <mx:Button label="Send" click="send()"/> 
             <mx:Button label="launch Listener" click="srv.initialize()"/>
             <mx:Button label="Unsubscribe" click="consumer.unsubscribe()"/>
             <mx:Button label="Subscribe" click="consumer.subscribe()"/>
        </mx:ControlBar>
    </mx:Panel>
        <mx:RemoteObject destination="StartListener" id="srv"/>

</mx:Application>

Cet exemple très simple montre comment interconnecter un système de gestion de présence en Java et une application Flex connectée à LiveCycle Data Services. Toutes les librairies Java sont disponibles dans le SDK de LCDS.