insideIT.fr : le blog des architectes IT de SFEIR

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

jeudi 19 février 2009

How to : Spring Security (ex Acegi) and GWT

As you know, Spring Security (previously Acegi) provides an easy and robust solution to secure web applications. Thereby, web developers do not have to deal with all that stuff in their source code, but just have to configure Spring Security to enable authentication and authorization for their application.

As it works pretty good with 'conventional' application, things go less cool with applications like GWT ones. This is mainly due to the asynchronous calls.

Lire la suite...

mercredi 10 décembre 2008

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.

samedi 22 novembre 2008

Changement dans le marché des serveurs d'application par Peter Cooper-Ellis

Plus tôt dans le mois eurent lieu les Rencontres Spring. Durant cet événement, Peter Cooper-Ellis, qui pour rappel est VP de SpringSource depuis juin 2008 après 10 ans chez BEA, nous a fait le plaisir de partager sa vision de l'état du marché des serveurs d'application. En résumé, la demande est à la simplicité et à la flexibilité, d'où l'offre SpringSource dm Server.
Dans l'article "Changes in the Application Server Market" qu'il vient de publier sur JavaLobby et que je vous recommande vivement, il précise la raison d'être de ce nouveau produit SpringSource en retracant l'historique des serveurs d'application.

Bonne lecture et bon weekend.

jeudi 13 novembre 2008

les Rencontres Spring 2008

Aujourd'hui, salle comble pour la première édition des Rencontres Spring. Cet événement co-organisé par SpringSource France et Sfeir marque le partenariat entre les deux entreprises. Pour rappel, Sfeir est un "System Integrator Partner" de SpringSource.

Durant cet événement, des acteurs majeurs de la communauté Spring :

  • Peter Cooper-Ellis, VP de SpringSource depuis juin 2008 après 10 ans chez BEA ;
  • Juergen Hoeller, co-fondateur du framework Spring (avec Rod Johnson) et aujourd'hui principal développeur du framework ;
  • Mark Thomas, principal contributeur au projet Apache Tomcat ;
  • Guillaume Laforge, co-fondateur du défunt G2One et désormais lead des développements Groovy et Grails chez SpringSource ;
  • Julien Dubois, directeur régional France de SpringSource ;
  • Didier Girard, directeur de l'innovation de Sfeir.

et des utilisateurs de la technologie :

  • Voyages SNCF Technologies ;
  • HSBC ;
  • SG CIB ;
  • Improve ;
  • Grails.

ont respectivement annoncé les nouveautés que nous réserve SpringSource pour l'année à venir et témoigné de la puissance de l'offre de SpringSource.

Des témoignages, je retiens que les technologies Spring respectent leurs engagements. Elles simplifient le développement, réduisent les coûts et assurent de bonnes performances :

  • le site www.voyages-sncf.com supporte très bien la charge avec une infrastructure minime ;
  • réduction de 60% du code écrit chez HSBC grâce à un framework "maison" reposant sur Spring ;
  • temps de réponse de l'ordre des millisecondes garantis chez la SG CIB.

Beaucoup de nouveautés nous attendent, entre-autres :

  • évolution de SpringSource dm Server ;
  • Spring 3.0 ;
  • intégration de Flex dans Spring Web ;
  • intégration de Groovy et Grails dans la stack Spring ?

Voici les nouveautés marquantes de la version 3.0 du framework Spring :

  • évolution du modèle de description par annotation ;
  • support de Spring Expression Language pour la configuration des beans ;
  • le support de REST dans Spring MVC ;
  • ajout d'un modèle de validation basé sur les annotations (respectant la JSR 303 et le modèle de validation d'Hibernate).

Concernant les aides au déploiement, SpringSource mise sur son dm Server. Ce serveur d'application Java est basé sur OSGi et a été pensé pour offrir une grande modularité. Cette modularité permet une meilleur gestion des ressources. Cela résulte en un serveur avec une trace légère donc au démarrage rapide, ce qui est très apprécié par les développeurs. Grâce à l'approche OSGi, SpringSource dm Server offre également la flexibilité pour la gestion des applications en permettant le chargement à chaud et le multi-versioning.
Peter Cooper-Ellis, fort d'une longue expérience dans le développement de BEA WebLogic, annonce une évolution sur le marché des serveurs d'applications. La demande est à l'agilité.

Photos de l'événement sur flickr.
Bientôt : Les slides et les vidéos de l'événement.

samedi 21 juin 2008

TheServerSide Java Symposium - Jour 3

Troisième et dernier jour du symposium…je n’ai pas gagné l’iPod qui était en jeu, dommage, j’aurais pu tester GWT dessus ;)

On commence par une conférence de Geert Bevin: Boldly go where the Java language has never gone before. On le sait, Java ce n’est pas qu’un langage, c’est un langage, une JVM et une plateforme, qui ont chacun leurs points forts mais aussi leurs limites. Dès lors, l’idée, qui est à la mode ces derniers temps, c’est que l’on peut remplacer ou modifier un de ces composants pour “pousser l’enveloppe” lorsque les limites se font sentir.

Geert cite 4 exemples pour illustrer cette approche.

  1. Terracotta: il s’agit d’une extension de la JVM qui facilite la scalabilité des applications, en permettant de mettre des JVM en cluster. Déclarativement, certains objets (“shared objects”) sont répliqués entre toutes les JVM, et accédés indifféremment (avec du lazy loading) par toutes les instances. On a ainsi étendu le comportement natif de la JVM.
  2. RIFE continuations: déjà évoqué hier au sujet de Comet, il s’agit pour prendre une image de prendre une photo de l’état d’un thread, comme un “save game” (c’est l’image donnée par Geert). On peut à tout moment appeler pause(), ce qui crée une sauvegarde et rend la main immédiatement, puis reprendre à partir de n’importe quel état avec resume(). Les continuations sont organisées en arbre (parent = continuation à partir de laquelle on a restauré). Encore une fois, on change la sémantique habituelle de la JVM dans sa gestion des threads.
  3. GWT: on ne présente plus GWT, Geert fait un rappel des principes de fonctionnement (translation Java->Javascript, mode hosted vs. compilé, debugging, etc.). Ici on a remplacé l’ensemble du stack Java par une plateforme web pure, et seul le développement utilise le stack Java standard. Un participant pose la question du JavaScript généré, et Geert dit que pour lui c’est un problème, car le JavaScript généré est illisible et impossible à débugger… je bondis intérieurement, et j’irai voir Geert à la fin pour lui expliquer que pour GWT, le browser est la plateforme, la lisibilité du JavaScript généré est aussi peu importante que la lisibilité du bytecode généré par le compilateur Java! Je ne pouvais pas laisser passer ça…
  4. Android: la plateforme mobile de Google. Comme pour GWT, le développement et debugging se font en Java, avec les IDEs habituels, et un émulateur de la plateforme mobile (équivalent au mode hosted de GWT). En revanche pour le déploiement, le bytecode Java est converti en bytecode (.dex) pour la machine virtuelle Dalvik, qui est l’équivalent de la JVM.

On aurait pu multiplier les exemples, notamment les langages dynamiques qui fleurissent sur la JVM, mais le point est fait. A mon sens, ces multiples extensions et détournements sont plus des preuves de la puissance de Java que de sa faiblesse, car Java reste toujours au centre d’un écosystème qui est plus bouillonnant que jamais.

 

Deuxième conf: JCR: TheServerSide as a Content Application. David Neuscheler (days.com) introduit JCR, version 1.0 (JSR 170) et 2.0 (JSR 283), les diférentes fonctionnalités d’un système de CM, etc. Puis il fait une démo en prenant une page du site TheServerSide.com, et en la transformant en appli client JCR. Pour tout dire c’est un peu fastidieux, et d’où je suis on n'arrive pas à lire le code ! J'aurais peut-être dû choisir la conf sur MapReduce dans l'autre salle...

 

Dernière conf du matin, Michael Keith présente What's new in JPA 2.0. Les objectifs étaient multiples:

  • standardiser les propriétés
  • remplir les manques de l'ORM
  • rendre la modélisation objet plus flexible
  • fournir une abstraction du contrôle du cache
  • contrôle du verrouillage (locking)
  • fournir des "hooks" pour des frameworks propriétaires
  • améliorations JPQL
  • etc.

Je ne vais pas détailler les nouveautés, mais globalement il semble que le groupe de travail JPA a bien écouté les utilisateurs, et lorsque JPA 2.0 sera sorti, il sera difficile de justifier l'utilisation directe d'une API de persistence propriétaire.Au passage, la présentation a été agrémentée d'une page culturelle sur les oies du Canada...

 

Comme hier et avant-hier, déjeuner avec un lance-pierres... et en plus ils ont enlevé les machines à café !

 

L'après-midi commence avec Choosing a Web framework, par Shashank Tiwari. En fait de conseils pratiques, il s'agit d'une énumération de définitions, de généralités, de questions (quel problème résout un framework, quel problème crée-t-il?), tout ça pour finir par dire que toutes les raisons sont bonnes de choisir un framework, y compris parce qu'il est à la mode ou pour faire bien sur son CV !!! Au final si on est en recherche d'un framework, cette conférence ne fait qu'ajouter à la confusion et à l'incertitude. Ou comment gâcher un bon sujet.

 

Case Study: Better Software with the Spring portfolio, par Eberhard Wolff (SpringSource Allemagne). Pour info, SpringSource est la société qui emploie tous les committers de Spring, mais aussi certains de Tomcat et Apache. Spring, outre le framework bien connu, c'est aussi dynamic modules, batch, integration, webflow, etc.

On nous propose un cas de système de traitement de commande à architecturer autour de Spring. Le système peut recevoir des commandes par Web Services. La démarche classique est de définir une interface Java, implémentée par un POJO, et de générer le WSDL à partir de cette interface. Or cette démarche présente des inconvénients: le WSDL expose de facto l'interface d'une classe interne.. que se passe-t-il si le WSDL doit changer? D'autre part certains types communs en Java, comme Map, ne sont pas supportés en WSDL...Eberhard propose d'inverser la démarche: puisque le contrat avec les clients est le WSDL, on part du WSDL et on base le traitement d'une commande sur le schéma XML correspondant. Ansi on n'expose pas d'interface interne, on traite un objet Java généré à partir du message envoyé, via un système de mapping (JAXB/XStream). La logique est découplée de l'interface. La classe qui traite le message est un Endpoint qui est annoté via les annotations Spring. Eberhard en profite pour rappeler que Spring est trop souvent assimilé à XML, mais qu'on peut très bien faire du Spring sans XML (ou presque, soyons honnête..)

Pour rendre robuste le WebService, on peut aussi baser le traitement du message sur des expressions XPath. Ceci permet d'avoir un contrôle plus fin sur des messages qui seraient incomplets, et donc ne pourraient pas être mappés avec la solution précédente.

Eberhard introduit également les notions de pipes et filtres, qui sont des pipelines de traitement, supportés par Spring Integration, et configurables par XML (tiens donc).

Spring fournit également une approche à la notion de batch, mal résolue en Java; notamment le problème des redémarrages en cas d'interruption volontaire ou non. Un batch Spring c'est une série d'étapes, chaque étape lit quelque chose (un record dans une base probablement) et écrit quelque chose (résultat du traitement). Cette notion est supportée par Spring batch.

 

Dernière conf de la journée, et du symposium: Real GWT applications, par Jeff Dwyer. Une énième présentation rapide des principes de GWT, et une petite démo sur le site tocollege.net, dont une partie est réalisée en GWT. Jeff fait une petite séance rapide de live coding, et montre le débugging en mode hosted. Puis il insiste, un peu trop peut-être, sur les problèmes pour envoyer des objets métier au client provenant d'hibernate: les proxies dynamiques cassent le mécanisme de sérialisation GWT. Il existe des solutions: Hibernate4GWT et GWTHibernateFilter. Je lui ferai remarquer à la fin que ce n'est pas forcément la meilleure idée, et qu'avec Dozer il est facile de populer des objets spécialisés pour les transmette au client, car je n'ai pas forcément envie de voir mes objets métier transiter sur le fil, on ne sait jamais ce qui peut s'y trouver demain...

Jeff conseille judicieusement d'utiliser un pattern Command pour les communications du client. Il aborde la sécurité, notamment les attaques XSRF, et présente Goggle Gears pour les applis offline.

La présentation était un peu rapide, mais l'intérêt pour la techno est évident. J'espère que cette présentation (qui a été donnée deux fois lors du symposium suite à la forte demande !) y aura contribué.

 

Ouf, le marathon est fini ! Beaucoup de choses passionnantes ont été présentées, et on sent qu'on est à un tournant car pour ainsi dire "ça part dans tous les sens", l'écosystème Java, aux frontières autrefois bien nettes, commence à devenir une galaxie en expansion avec des projets qui poussent l'enveloppe et repoussent sans arrêt les limites, des polémiques (et encore, on n'a pas abordé les closures !). Le monde Java de demain sera certainement bien différent de celui d'aujourd'hui, mais Java en restera probablement le centre de gravité...

Il me reste à visiter Prague (superbe ville) et regarder les Turcs se qualifier sur l'écran géant au centre ville...