insideIT.fr : le blog des architectes IT de SFEIR

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 30 novembre 2011

Sfeir à Devoxx

10 ans … Voilà 10 ans que vers cette période de l’année, plus de 3000 passionnés se réunissent à Anvers pour la plus grosse conférence autour de la plateforme java. Elle se découpe en 2 parties : université et conférence.
Pour moi, c’était ma 3ème participation. Par contre, cette fois ci, j'y suis allé pour la semaine complète avec mes collègues Vincent Bostoen et Benito d’Almeida. Les autres Sfeiriens, eux, nous ont rejoint le mercredi. Au total, 15 Sfeirens étaient présent. Même si nous sommes partis 2 jours avant les autres, nous avions tout de même le même point de rendez-vous avant le départ. Malgré une petite mésaventure dans les transports en commun Anversois, nous sommes arrivés à bon port au cinéma multiplexe où a lieu la conférence.
Cette année, gros changement dans l’organisation : au lieu d’un simple badge avec de petits tickets à échanger contre les repas, nous avons reçu un bracelet marqué de notre nom et d’un code barre. Heureusement, ce bracelet était waterproof car nous devions le garder au bras pendant la semaine entière.
C’est donc le mercredi qu’à la station de tramway nous avons rencontré nos autres collègues pour la 2ème partie de l’aventure : la conférence. Celle ci a commencé par l’habituelle keynote de Stephan Jansen, l’organisateur. Pour finir son discours, il nous a montré une vidéo. On y reconnaît quelques têtes connues : les organisateurs du Paris JUG... puis s’affiche “Devoxx France” … Et oui, au mois d’avril, nous aurons une conférence affiliée à Devoxx, ici à Paris, avec 75% des sessions en français. Sfeir est d’ailleurs sponsor de l’évènement.
Le retour s’est fait le vendredi après midi, après une semaine plutôt fatigante.


Mes impressions globales :

  • On sent vraiment que Google est partenaire : nous avons eu beaucoup de sessions autour d’Android et Html5.
  • Même chose en avec le duo Spring Source/Cloud Foundry
  • Les langages jvm ont du succès : Scala a eu droit à beaucoup de sessions et remplaçait même java pour des exemples de codes. Ceux un peu moins populaires : Fantom et Clojure ; et les petits nouveaux : Kotlin et Ceylon venaient se présenter.
  • Moins de sessions cloud que les années précédentes.
  • Plus d'animations aux stands : course de petites voitures sur circuit électrique, roulette de casino virtuelle, ...
  • Pas de grosses annonces (mis à part Devoxx France)
  • Comme toujours, beaucoup de monde.
  • De plus en plus de français.

Parmi les sessions qui m'ont le plus intéressé :

  • JAX-RS 2 qui disposera d'une (meilleure) intégration avec d'autres apis comme Bean Validation (JSR-303), et surtout d’une partie cliente.
  • MongoBD. Je l'avais récemment découvert pour un POC où je voulais stocker des données en ligne, la session m'a permis de mieux voir les possibilités qu'il offre.
  • Performance et usabilité Android : beaucoup de conseils divers de développement à ne pas oublier si l’on veut une application qui soit ergonomique et performante.
  • Android sur Google TV, même si on est loin d'avoir ces télévisions aussi répandues que des smartphones, il est tout de même intéressant de voir les enjeux et l'ergonomie.

Pour ceux qui n’ont pas pu venir et qui seraient intéressés pour revoir les sessions, ou pour ceux qui souhaitent voir certaines sessions qu’ils n'auraient pas pu voir : il y a Parleys. Ce site offre en effet la possibilité de revoir les sessions de Devoxx, mais aussi de certains jugs locaux. Les sessions Devoxx seront disponibles gratuitement pour ceux qui y ont participé, via abonnement pour les autres. Il faudra quand même patienter jusqu’à la fin de l'année pour qu'elles soient disponibles....



Photo par Pierre-Antoine Grégoire.

dimanche 14 décembre 2008

Devoxx 2008 - Introduction to the SpringSource dm Server

Cette session avait pour but de présenter le tout nouveau serveur d'applications de chez SpringSource : SpringSource dm Server. Ce petit nouveau a déjà fait couler beaucoup d'encre sur lui, et pour cause, il révolutionne le monde des serveurs d'applications en proposant de déployer les applications non plus sous forme de WARs ou d'EARs, mais sous forme de bundles OSGI, permettant ainsi la modularisation des applications.

J'étais donc curieux de découvrir plus en détails ce produit assez novateur.

Pour commencer, Sam Brannen (Consultant Senior à SpringSource), rappelle les problèmes avec les serveurs d'applications actuels :
  • Alors que les développements sont aujourd'hui de plus en plus pensés de manière modulaire (notamment avec la montée en puissance de Maven en entreprise), toute cette modularité est perdue au déploiement sur les serveurs d'applications avec un WAR/EAR monolithique.
  • De petites mises à jour requièrent un re-déploiement total de l'application (et non pas du seul module mis à jour)
  • Un même module utilisé par plusieurs WARs sera répliqué dans chacun des WARs sur le serveur d'applications, au lieu d'être partagé
  • Il est impossible de faire cohabiter plusieurs versions d'un même module ou d'une même application sur un serveur d'applications classique.
  • Le serveur d'applications lui-même souffre d'un manque de modularité : nous n'utilisons pas toutes les APIs d'un serveur J2EE (ex: toutes les applications n'ont pas besoin d'un conteneur EJB), et poutant toutes les APIs sont chargées en mémoire au démarrage du serveur d'applications, ce qui peut impacter fortement l'empreinte mémoire ou encore le temps de démarrage du serveur.

Je rebondis sur ce dernier point, en précisant que pour les toutes dernières versions de serveurs d'applications, cela a changé : les serveurs Websphere 6, JBOSS 5, Glassfish 3 ou Weblogic 10 sont basés sur un noyau OSGI.
Néanmoins, cela reste très récent...

Sam Brannen poursuit ensuite sur les avantages qu'apporte OSGI, coeur de dm Server :
  • Partitionnement par bundle (pas d'archive monolithique)
  • Renforcement de la visibilité stricte (chaque bundle décrit les bundles qu'il importe, et surtout quels packages précisément il expose aux autres bundles)
  • Résolution des dépendances
  • Versionning (chaque bundle a une version bien identifiée, c'est une donnée obligatoire)
  • Exposition d'un Service Registry
  • OSGi est dynamique : on peut de manière dynamique installer, désinstaller, démarrer, arrêter ou mettre à jour un bundle, et ceci, sans redémarrage du serveur d'applications.

On arrive enfin au coeur du débat, la présentation de dm Server lui-même, qui je dois dire, a été assez brêve à mon gout, pour donner plus de place à des démos :
  • dm Server se base sur le moteur OSGi EQUINOX (moteur qui a l'avantage d'avoir fait ses preuves depuis bien longtemps sur Eclipse)
  • dm Server se base le moteur de servlet Tomcat (il permet ainsi non seulement de déployer des modules OSGi mais également des WARs pour ceux qui hésiteraient encore à sauter le pas)
  • dm Server ajoute à OSGI, un modèle de composant. Ce modèle de composant est justement l'objet de la RFC-124 de l'OSGI Alliance, dont dm Server est la Reference Implementation, et qui devrait être finalisée d'ici Juin 2009. Ainsi, si actuellement, certains peuvent craindre le côté propriétaire du serveur d'applications SpringSource, la standardisation avec la RFC-124 devrait dans l'avenir rassurer... mais aussi créer de la concurrence.
  • D'autre part, dans le principe de fonctionnement, dm Server bootstraps un contexte d'application par bundle (qui n'est pas sans rappeler un certain framework Spring)
  • Enfin, dm Server existe en deux versions :
    • Community Version, qui est free et open source (sous licence GPL et SpringSource License)
    • Enterprise Version, qui offre le support produit et le pack Performance Suite

Sam Brannen termine avec une démo :
  • Montrant dans un premier temps, comment installer le produit, le lancer, le configurer, et l'administrer par console
  • Puis dans un deuxième temps, comment avec le plugin Eclipse "SpringSource Tool Suite", créer un bundle et le déployer sur dm Server.

Je retiens les points intéressants suivants de la démonstration "serveur" :
  • On peut déployer un bundle juste en le déposant dans le répertoire "repository" ou par console
  • La configuration du serveur est stockée en JSON (language jugé plus compact que XML par SpringSource). Je ne suis pas sûr que ce point fasse l'unanimité : si XML est certes moins compact, il est également plus lisible, ce qui pour une configuration, me parait important...
  • Lors d'un crash inopiné du serveur, un thread dump ainsi qu'un heap dump est automatiquement généré dans le répertoire dump (point que je trouve extrêmement pratique en condition de production pour analyser à posteriori la cause du problème). Je vous rassure, sur ce point, il n'en a pas fait la démo ;)
  • Possibilité de définir des profiles (profile web, ...) et de démarrer uniquement ceux désirés. C'est un des avantages principaux mis en avant par un noyau OSGI du serveur : la légèreté du serveur et l'offre à la carte des APIs démarrées.

Je retiens les points intéressants suivants de la démonstration "développement avec Eclipse" :
  • Le plugin Eclipse "SpringSource Tool Suite" est free et open source
  • Le plugin permet de créer une instance de serveur "dm Server" avec WTP (très pratique pour tous ceux qui sont habitués à WTP). Cela permet ainsi de le configurer dans Eclipse, démarrer/arrêter, mais aussi debugger.
  • Le plugin fournit un wizzard de création de projet "Bundle OSGI".
  • Le plugin fournit un éditeur de fichier MANIFEST, permettant l'édition graphique du fichier MANIFEST, ou encore la complétion lors de l'édition du source. Etant donné l'importance du fichier MANIFEST dans un bundle OSGI, et sa potentielle complexité, cet éditeur de MANIFEST est une très bonne idée de la part de SpringSource ; qui plus est, il est très bien fait.
  • Pour ce qui est du développement pur, il suffit d'ajouter l'annotation @Service devant une classe pour qu'elle devienne un service OSGI.
  • Enfin, pour le déploiement du bundle, un simple drag&drop du projet dans l'instance "dm Server" de l'onglet "Servers", et le déploiement est effectif ! (petit effet de style toujours efficace lors d'une démonstration...)

Au final, j'avoue avoir assez apprécié cette présentation, qui fût tout de même assez riche en une heure de temps.
J'ai été particulièrement séduit par le plugin Eclipse fourni par SpringSource, qui se révèle relativement complet et efficace (le tout en open source).
Pour autant, j'aurai aimé la démonstration de l'une des promesses de dm Server : la mise à jour à chaud. Lorsque l'on met à jour un bundle, toutes les requêtes envoyées à ce bundle par d'autres bundles sont mises en attente jusqu'à ce que le déploiement de la mise à jour soit terminée.
Cette démonstration a été faite lors d'une autre session le vendredi (dommage, je partais le jeudi soir) retranscrite sur le blog de notre confrère Octo : DM Server : from WAR to Web Module


Pour finir sur une note plus large, je pense que la révolution OSGI est en marche...
Après avoir conquéri le domaine de l'embarqué (domaine qui a fait naître OSGI), puis le domaine de l'IDE (avec Eclipse Equinox et les plugins Eclipse), OSGI est aujourd'hui est en train de conquérir le domaine des serveurs d'applications (avec comme je le disais, tous les derniers serveurs d'applications sortis basés sur un noyau OSGI : Websphere 6, JBOSS 5, Glassfish 3 ou Weblogic 10). C'est en soi une mini-révolution dans le domaine des serveurs d'applications (qui a d'ailleurs demandé aux éditeurs de refondre entièrement le noyau de leur serveur).
Prochaine étape : les applications d'entreprise.
Avec SpringSource dm Server, le travail de l'OSGi Enterprise Expert Group, et la sortie mi-2009 d’OSGi R4.2 incluant la version finale de la RFC-124 ; je pense que les applications d'entreprise prendront prochainement le virage du WAR/EAR au module OSGI, bouclant ainsi la révolution OSGI en marche.

L'avenir nous le dira...

Devoxx 2008 - Envers Entity Versionning

Envers est un projet open source dont le but est d'offrir un mécanisme d'historisation des données, une technique dont la réalisation était jusqu'à lors fastidieuse et qui demandait la collaboration du développeur et du DBA. Envers s'intègre naturellement à Hibernate. Il est d'ailleurs devenu, depuis peu, un module à part entière du projet Hibernate.

La présentation était assurée par Adam Warski, ancien employé de JBoss et créateur et développeur principal du projet. En guise d'introduction, l'orateur a commencé le séminaire en présentant les patterns d'historisation les plus connus et la difficulté de leur mise en œuvre. Parmi eux, on trouve le pattern AuditLog pattern ou « la piste d'audit ». Cette technique consiste à écrire dans un fichier texte les données modifiées, la date et l'auteur de la modification. Son avantage réside dans sa simplicité. En contrepartie, elle s'avère rapidement inefficace en raison de la quantité de données qu'elle produit. En effet, il devient difficile de corréler des entités ou de naviguer entre les relations.

De son côté, Envers permet de mettre en œuvre l'historisation de façon transparente et non intrusive (pas de modification du schéma, ni du code de l'application). En effet, son utilisation se limite à ajouter l'annotation @Audited à l'entité à historiser et à renseigner les évènements qui déclencheront l'audit dans le fichier persistence.xml.

De façon similaire au système de contrôle de version Subversion, Envers utilise le concept revision. Une révision correspond à une transaction. Pour ce faire, Envers crée une table identique à la table originale, avec des colonnes supplémentaires. On retrouve parmi celles-ci, la colonne réservée au numéro de révision et le type d'opération (ajout, modification, suppression). Le présentateur nous averti que seules les entités modifiées dans une transaction réussie (commit passé avec succès) seront historisées. Ce comportement est tout a fait normal puisqu'il garantit la cohérence des données historisées.

En plus des données de base telles que les strings, les nombres et les dates, il est possible de versionner les relations. De ce fait, il est possible d'explorer un graphe d'objet à un instant T. Voici un exemple, repris de la présentation de Adam, montrant le fonctionnement de Envers :

// Revision 1 : créer une personne et lui associer une adresse
// une adresse pour être associée à plusieurs personnes

entityManager.getTransaction().begin();

Address a1 = new Address("Rue de la boetïe", 15);
Person p = new Person("Martin", "Dupont");
p.setAddress(a1);
entityManager.persist(a1); 
entityManager.persist(p);

entityManager.getTransaction().commit();

// Revision 2 : On modifie l'adresse de la personne
// et son prénom
entityManager.getTransaction().begin();
Address a2 = new Address("Rue des bourets", 6);
entityManager.persist(a2);
// on suppose que le id de la personne est 1
int id_personne = 1;
p = entityManager.find(Person.class, id_personne);
p.setName("Paul");
p.setAddress(a2);
entityManager.getTransaction().commit();

Envers offre une API pour lire les données historisées. Il est, par exemple, possible de récupérer une entité qui correspond à telle ou telle révision.

// Lecture des données historisées
AuditReader auditReader = AuditReaderFactory.get(entityManager);
// Lire la personne de revision 1
int revision1 = 1;
Person oldPerson = auditReader.find(Person.class, id_personne, revision1);
assert "Martin".equals(oldPerson.getName());
assert a1.equals(oldPerson.getAddress());

// De même pour les adresses à la révision 1
int a1_id = 1;
Address old_a1 = auditReader.find(Address.class, a1_id, revision1);
assert old_a1.getPersons().size() == 1;
assert old_a1.getPersons().contains(p);

int a2_id = 2;
Address old_a2 = auditReader.find(Address.class, a2_id, revision1);
assert old_a2.getPersons().size() == 0;

Envers offre aussi une API similaire à l'API Criteria, en voici un exemple :

List personsAtAddress = getAuditReader().createQuery()
.forEntitiesAtRevision(Person.class, 12)
.addOrder(AuditEntity.property("surname").desc())
.add(AuditEntity.relatedId("address").eq(addressId))
.setFirstResult(4)
.setMaxResults(2)
.getResultList();

Adam a terminé sa présentation par un benchmark opposant la modification massive d'entités sans versionnng à des une modification avec versioning. Le résultat montre qu'avec l'historisation la modification coûte en moyenne 1,5 fois le temps d'une modification sans historisation, et ce, à cause des ordres insert dans les tables d'historisation.

Au moment des questions-réponses, une personne de l'assistance a demandé à l'orateur s’il était possible de configurer Envers avec XML. La réponse fut laconique : non ! Seules les annotations sont autorisées. L'auteur encourage même l'utilisation du standard JPA à la place d'API propriétaire de Hibernate. Il n'est pas possible non plus de stocker les tables d'audit dans un schéma autre que le schéma des tables à auditer.

Pour conclure, l'orateur a exposé les fonctionnalités futures à court et à long terme. Notons par exemple : le revert (remettre une entité à un état antérieur), les branches, appliquer un DIFF ou encore ne versionner que certaines propriétés de l'entité.

Cette présentation a été une bonne introduction au sujet. Il ne nous reste qu'à tester cette technologie grandeur nature et de vous faire partager, bientôt nous l'espérons, notre expérience sur le sujet.

mercredi 10 décembre 2008

Devoxx 2008 - Android : rich clients

Android est aussi de la partie ici. Le buzz généré depuis ces derniers mois se doit d'être entretenu, surtout lorsque la plateforme est commercialisée depuis plusieurs semaines.

La présentation Filthy Rich Android Client s'est axée sur les fonctionnalités graphiques permises par Android. Cela concerne donc les manipulations possibles sur les images (Transformations, ...), ainsi que la partie animation.

Romain Guy, le speaker en charge de cette présentation, a passé en revue le principe de construction d'un écran, expliquant au passage quelques astuces d'optimisation (ne pas instancier d'objet dans les phases de 'painting', accéder aux attributs des objets directement plutôt qu'au travers les accesseurs - au diable les bonnes pratiques, sacrifiées sur l'autel des perfs sur ce coup :), désactiver le rendu du background du Canvas si celui-ci n'est jamais visible...)

Par contre, il n'a pas été question de la gestion plus poussée du hardware des terminaux (ou plutôt du terminal, car seul le G1 fait tourner officiellement Android à ce jour). Ces aspects sont certes moins sexy, mais entrent en jeu dans le développement d'applications professionnelles, ou tout simplement non graphiques.

Ce point mis à part, Android affirme ici son intention, s'il était encore nécessaire de le redire, de prendre une part non symbolique du gâteau partagé par les RIM, Nokia, Microsoft et assez récemment Apple, en proposant un environnement de développement susceptible de toucher une base de développeurs très large : celle des développeurs Java!

L'avenir est dans le mobile, tout le monde se prête à le dire !

Devoxx 2008 - From concurrent to parallel

Pour bien commencer Devoxx, j'ai choisi la presentation de Brian GOETZ nommée "From concurrent to parallel".

Pour rappel, Brian GOETZ est auteur du livre Java Concurrency in Practice, une référence sur le sujet.

Sa présentation portait sur le futur JDK 7, et en particulier le fruit de la jsr166y qui y sera integré. La présentation a couvert le spectre des possibilités offertes par cette API, à savoir la possibilité de paralléliser une opération sur un maximum d'unités de traitement (processeur, core, ...) en la subdivisant en sous tâches permettant une répartition de la charge plus efficace.

J'avais il y a quelques temps posté un article présentant justement cette jsr, que je vous invite à relire à l'occasion : Java 7 Fork/Join : Exploiter toute la puissance disponible

Ou si vous souhaitez entrer un peu plus dans le sujet, vous pouvez lire cet article : ForkJoin : Bienvenue dans les mondes parallèles

Devoxx 2008 - The future of rich Internet applications

C'est avec intérêt que je rentre dans la salle 4 pour assister à la présentation sur le futur des applications RIA, et je me rends compte d'office que cela va parler de Flex en grande substance.

J'apprends que la communauté de développeurs double chaque année, plutôt bon signe pour Adobe.
Dans un premier temps Chet Haase (ex Sun) nous présente les nouvelles fonctionnalités comprises dans le Player Flash 10, en voici brièvement la description :
  1. Flash Text Engine : permet d'avoir des fonctionnalités similaires à celles de Word, comme la justification, le mutli-colonne, etc ...
  2. Gestion de la 3D : Présentation d'une application 3D nommée Clothes, dans laquelle on a une robe que l'on peut accrocher par des pinces à linge, faire flotter au vent, etc ... C'est beau, bluffant, mais pas très utile
  3. Sound Engine : démonstration des nouvelles capacités sonores
  4. Pixel bender : animation d'images, application de filtres similaires à ceux que l'on connait dans Photoshop.
Sortie de Air 1.5, prenant en compte Flash 10 et l'encryption locale des données.

Le nom de la future version de Flex se nomme Gumbo, voilà c'est dit ...

Chet, pour garder l'attention de son public, manie l'humour en nous montrant la photo de WC avec une mouche collée à l'intérieur, nous expliquant que cela permet de se concentrer lors d'un soulagement. Cette métaphore traduit la volonté d'Adobe de se focaliser pour Gumbo sur Flash Catalyst, qui permet une séparation claire des responsabilités entre les infographistes et les développeurs.

Si ma compréhension fut bonne, avec Flash Catalyst, les infographistes utilisent les outils d'Adobe puis après il sera possible d'en créer un projet Flex qui permettra au développeur de partir et d'intéragir avec les infographistes. Cela m'a fait un peu penser à JavaFX avec le plugin Adobe Illustrator/Photoshop qui génère un projet JavaFX.

Les produits Adobe génèrent des fichiers FXG, incorporables dans Catalyst.

Bien que la présentation soit sexy, amusante, attrayante, je commencais à me dire que ça tournait encore trop autour de fonctionnalités trop 'marketing' et pas assez 'entreprise'.

Je fus rassuré par l'intervention de Matt Chotin, notre Backend developper guy ...
Maat nous annonce qu'Adobe travaille en étroite collaboration avec la société SpringSource, et que l'intégration de Blaze DS avec Spring a été améliorée notamment par l'utilisation de Spring Blaze DS, par exemple il n'est plus nécessaire d'avoir de fichier de configuration web.xml spécifique.
Matt fait une démonstration montrant la facilité de 'cablage' de données via une datasource dans une DataGrid. En effet, après avoir configuré sa DataSource, ce qui va générer le fichier de configuration Spring associé, on obtient la liste des entités disponibles, il suffit donc de glisser cette entité, choisir la méthode (getAll, getByName, etc ...) et de glisser le choix sur la DataGrid et hop ... comme par magie la DataGrid est alimentée ...
Par la suite il fait faire le lien avec une autre DataGrid, pour récupérer la liste des employés d'une compagnie par le nom de celle-ci ... Bon là il faut 'retoucher' le MXML, pour lier les DataProvider entre eux, ceci dit, cela reste très simple pour faire du CRUD.

J'avais déjà fait des POC, et autres maquettes avec Flex, et j'avais bien apprécié le DataBinding qu'il offrait. J'ai bien apprécié cette démonstration, et je vais continuer à suivre les évolutions de Flex version Gumbo ... Reste maintenant à vivre Flex sur un projet d'entreprise digne de ce nom.

Devoxx 2008 - Creating amazing user interfaces with Dojo and DWR

Arrivé un peu un retard, suite au premier billet sur JavaFX, Fabien, Hossein et moi, nous installons confortablement afin d'assister à la conférence Dojo/DWR.

Pour ma part, j'avais déjà utilisé JQuery et DWR sur un précédent projet, et ayant aimé leur utilisation, j'étais curieux de voir ce que Joe Walker et Nikolai Onken allaient nous présenter.

Tout d'abord, nous avons eu droit à une présentation de Dojo, surtout au moment de notre arrivée, Dojo et GFX pour pouvoir faire de la manipulation d'objets graphiques 2D de bas niveau (rectangle, cercle, ellipse, etc ..).
On a eu droit à une démonstration d'un chat utilisant le serveur Comet et l'api Google Translate. Chacun des speakers écrivait dans sa langue et la traduction était faite de manière automatique par Google Translator à l'affichage sur le poste de l'autre speaker, tout en passant par Comet qui push les données sur le browser (reverse Ajax).

Nous avons eu ensuite une présentation de DWR, qui permet d'utiliser, via proxy, des objets Java dans du Javascript.
Une démonstration d'upload d'image (binary file handling), et récupération sur le client.
Le speaker, nous montre la possibilité de faire du reverse Ajax, via certaines API DWR.
Il nous montre la possibilité pour DWR d'utiliser le reverse Ajax en mixant le meilleur des mondes Comet + Polling + Piggyback.

Voici un exemple :

WebContext wctx = WebContextFactory.get();
String chatPage = wctx.getCurrentPage();

// Find all the browser on window open on the chat page:
Collection sessions = wctx.getScriptSessionsByPage(chatPage);

// Use the Javascript Proxy API to empty the chatlog <ul> element
// and re-fill it with new messages
Util utilAll = new Util(sessions);
utilAll.removeAllOptions("chatlog");
utilAll.addOptions("chatlog", messages, "text");

Au final nous avons eu une présentation des possibilités de couplage des deux technologies, avec une précision sur le packaging de Dojo, qui a priori a été largement facilité,notamment au niveau des imports des fichiers Javascipt.

Pour ma part, étant fan plutôt de JQuery, j'aurai préféré que DWR permette de faire de même avec ce framework.

A suivre en tout cas, je vais me remettre à DWR et voir si la fonctionnalité de Reverse Ajax, sera peu à peu adoptée dans des applications d'entreprise, de moyenne à grande envergure.

Devoxx 2008 - Conference Day1 - KeyNote JavaFX

Arrivé tout fraichement de la gare d'Anvers, nous avons eu la chance de pouvoir prendre un Minibus et de se loger à 9 dedans. Sur place, au Metropolis, pas la discothèque, mais le lieu où se déroule le Devoxx, nous avons apprécié l'organisation et l'accueil, le café, les viennoiseries à volonté et les nombreux goodies, dont le canard Adobe noir.

Devoxx c'est 3200 participants, 160 speakers, 6 salles, 40 partenaires, 40 JUGs, 400 étudiants et 35 pays représentés.

Grace au réseau Wifi, nous pouvons vous faire profiter en direct de nos impressions, et grâce au RFID, via le badge, Big Brother is watching you, à chaque livraison de goodies on est repéré.

Le ventre bien rempli, nous nous préparons à assister au keynote sur JavaFX. La version JavaFX GA 1.0, vient tout juste de sortir et avec NetBeans IDE 6.5 for JavaFX. Robert Brewin, nous a présenté les 10 raisons, pour lesquelles il est intéressant d'adopter JavaFX, selon lui. Voici celles que l'on a, principalement, retenu :

1 - Un nouveau langage cool :JavaFX script

2 - Multi plateforme, multi device

3 - Utilisation des outils Adobe via les plugin JavaFX, pour générer une application JavaFX à partir d'un projet Adobe Illustrator/Photoshop

4 - Rich API set : Scene Graph, Media, WebServices ... Any Java API

5 - nouveau plugin pour le browser à partir de Java 6 update 10, pour avoir la gestion de process indépendants tout comme le fait Google Gears via Chrome.

6 - Fonctions IDE Netbeans 6.5 : complétion, compilation, débugging, pré-visualisation, wizzards

Les démos étaient visuellement impressionnantes, mais on reste sceptique sur une utilisation en entreprise, mais plus comme une utilisation Flash like.

Ceci recoupe le dernier billet de David Martin sur notre blog 'JavaFX 1.0 : déception'.