Posts Tagged ‘Web2.0’

Cours du soir Flex

Sunday, March 22nd, 2009

Flex at Valtech

Jean-Baptiste Cazaux nous a donné un cours du soir la semaine dernière sur la technologie Flex d’Adobe.

Cela a pu donner l’occasion aux consultants présents de confirmer une récente étude du cabinet Gartner sur le marché des technologies RIA. A la lumière des démonstrations du présentateur, nous avons effectivement constaté la maturité de la plate-forme.

Le programme fut riche:

  • Démos d’applications Flex et AIR
  • Présentation du langage et des outils
  • Debug d’une application
  • Extensions de composants graphiques
  • La gestion des évènements
  • Les layouts
  • Le Framework MVC Cairngorm

Le moins que l’on puisse dire, c’est que Jean-Baptiste a su nous donner envie d’aller plus loin dans la découverte de la plate-forme applicative. Nous nous revoyons d’ailleurs cette semaine pour la suite de la présentation.

ParisOnRails du 1er décembre 2008 : ce qu’il s’y est dit ! (matinée)

Monday, December 1st, 2008

Ce Lundi 1er Décembre 2008 avait lieu pour la 3ème fois la conférence annuelle des développeurs Ruby On Rails, j’ai nommé ParisOnRails, qui avait lieu à la Cité de la Science, dans le quartier de la Villette à Paris.

La journée a commencé vers 9h30 par une présentation de la journée par les 2 organisateurs Richard Piacentini & Laurent Julliard.

La première présentation était celle de Ruby 1.9, par Guillaume Desrat

Guillaume a tout d’abord commencé par présenter brièvement l’association ruby france, puis est rentré dans le vif du sujet.

Ruby 1.9 prépare la 2.0, en celà beaucoup d’incompatibilités apparaissent, notament au niveau de la syntaxe (en particulier les tableaux et hash).

Du coup, au chapitre des nouveautés, on a des hashes plus simpes à écrire , les paramètres ne sont plus obligatoires dans les appels de méthodes, enumération plus simple à utiliser, multilingualization (m17n) pour un support utf8 simplifié, les f ibers : thread controlables, que l’on arrête et reprend où et quand l’on veut, et enfin pour les regexp : on a désormais un nommage des matches avec un tag <mon_match> à insérer dans son expression.

De plus, il est à noter que ruby 1.9 est plus rapide (les exemples de Guillaume le donne presque 5 fois plus rapides sur des algos type suite de fibonnaci)

Reste que sa non compatibilité avec les versions précédentes représenteront peut être un frein à son adoption massive…

Présentation de moo tools(librairie javascript) par Matthieu Fosse

Cette librairie JavaScript est encore peu populaire (utilisé par 8% des utilisateurs de librairis JS), en même temps, elle n’est pas utilisée par défaut dans Rails…

Pour l’historique, Moo Tools basé sur protoype à l’origine, et est aujourd’hui plus modulaire que ses concurrents, on peut utiliser la délégation d’événements MooTools pour séparer le code HTML du code Javascript.

Après cette présentation, et avant la pause de milieu de matinée, un débat s’est improvisé sur “doit on ou pas écrire du JavaScript ?” cette question est assez répandue car il existe, même parmi la communauté RoR, 2 clans : ceux qui aiment écrire du JavaScript, et ceux qui … n’aiment pas , pour rester politiquement correct… Pas mal d’avis convergeaient pour dire que finalement JavaScript dans un site de contneu, ou communautaire, doit être utilisé avec parcimonie et contrôle, pour garantir l’accessibilité et le référencement, et que le sgéénrateurs de JavaScript type GWT doivent être réservés pour des applications riches (RIA, remplacement d’application lourdes, etc..); en tout cas, je ne vous cache pas que c’est aussi mon avis ;-) .

Après la pause, a eu lieu la présentation

Design pattern en Ruby par Russ Olsen

en conf call de New York.(5heures du matin pour lui!)

Russ a 30 ans d’expérience en programmation et a découvert Ruby quand il a voulu apprendre la programmation à l’un de ses enfants; aujourd’hui il est l’auteur d’un livre sur les design pattern en Ruby.

Il nous a tout d’abord présenté 2 éléments de l’histoire de la civilisation :

  • au début de la civilisation, les gens utilisaient des paniers pour transporter des biens, la poterie est arrivée, mais a repris la forme des paniers pour ne pas gêner les gens lors de la migration technologique (!)
  • au debut de sa carriere, domino etait utilisé partout, avec son langage Fortran, les gens savaient que c’était nul, mais restaient coincé avec, et ne pensait pas que les choses changeraient

Les gens ont du mal à quitter une technologie pour une autre.

Aujourd’hui, en Ruby, le concept le plus utilisé est convention over configuration; pour expliquer ceci à ses pairss (plutot habitué à Java), il a utilisé les design patterns.

Pour exemple, Adapter , pour faire communiqer des interfaces différentes, on utilise en Ruby active record qui permet de faire communiquer son appli avec des bdd différentes.

Iterator, en Java c’était une classe à part entière, une mécanique à mettre en place, en Ruby, on appelle juste .each sur son tableau, c’est déjà tout intégré.

Pour le pattern Factory, en Java, la classe représente tout, c’est figé; en Ruby, on peut on la changer en cours de route on peut rajouter des comportements à la volée. (il y a bien Spring qui facilite les choses en Java, mais c’est une autre histoire..)

Il a rencontré beaucoup de résistance à démontrer l’intérêt d’un nouveau livre sur les design pattern au début, car tout le monde pensait : “Les design pattern sont écrits une fois pour toutes pour tous les langages”.

Ce qui lui rappelle que les gens qui pensaient que les paniers étaient le dernière trouvaille pour transporter des biens, ou les gens qui pensaient que Fortran était le dernier langage de progammation , ont finalement eu tort ;-) !

Pour chaque nouvelle techno, les développeurs doivent comprendre les avantages de cette dernière : les premiers programmes en C++ utilisaient énormément l’héritage, un peu trop d’ailleurs; c’est la même chose en Ruby aujourd’hui, en Ruby doit on utiliser le changement de la classe dynamique ? si oui dans quelles proportions ?

En Ruby il y a encore des progrès à apporter, on peut améliorer l’utilisation de Ruby, en facilitant le passage de plusieurs blocs à une méthode, l’utilisation des closures, ou encore la programmation multi threads : il y a encore du travail pour faciliter l’utilisation de ces concepts.

Aussi, si Russ fait toujours sauter au plafond ses clients en leur parlant de Ruby On Rails, il les rassure en utilisant JRuby, où il peut toujours livrer l’application avec un fichier war (je pense aussi que JRuby est un des meileurs leviers d’adoption de Rails en entreprise)

En conclusion, il appelle les participants à ne pas être “des programmeurs Ruby” ni des “programmeurs Rails”, mais simplement des programmeurs ouverts à la nouveauté et l’évolution !

La suite dans un prochain épisode, après la pause déjeuner !

Agilité et Web2.0

Tuesday, March 11th, 2008

Je viens de participer à un séminaire organisé par le CNES sur le thème :
“Impact et retours du Web 2.0 en entreprise”.
http://cct.cnes.fr/cct05/public/sommaire.htm

J’ai pour ma part présenté l’apport du Web 2.0 dans le contexte de nos projets Agiles.

L’apport fonctionnel dans un premier temps: Communautaire, participatif et créatif.
Puis l’apport des technologies Web2.0 (type Ajax, Flex, …), apportant une souplesse ergonomique fort pratique, et changeant nos vieux sites Web en un framework collaboratif grâce à l’intégration de différents outils : Confluence, Rally, Trac, Eclipse (Mylin), Continuum, …

Il est intéressant de voir que le Web 2.0, tout comme l’Agilité, fait encore peur en entreprise.
Est-ce la peur de la perte de contrôle pour certains au regard de la prise de responsabilité par les autres?
A suivre…

Bien développer pour le Web 2.0

Wednesday, December 12th, 2007

Par Christophe Porteneuve, Editions Eyrolles

J’ai gagné ce livre lors du séminaire XP Days. Je n’ai pas encore eu le temps de le lire entièrement (et puis je ne suis pas développeur Web alors j’avance lentement). Ce livre plutôt épais contient apparemment énormément (tout ?) de choses sur les technologies du Web 2.0. Mais ce n’est pas simplement un livre de description de technologies, c’est aussi un livre sur la technique de programmation en général, et sur le métier de développeur Web en particulier.

Les limites du “miracle GWT”

Sunday, July 8th, 2007

GWT au pays des Bisounours
Sentez-vous ce parfum d’euphorie un brin béat qui traverse le web à la seule évocation de GWT, cette propension à parer de qualités la librairie de Google parfois au mépris de toute objectivité ? Ressentez-vous à la lecture des différents articles de présentation l’ombre de ce doute face à cette librairie, dont on vous promet monts et merveille sans contrepartie ? Parfaite intégration avec l’existant, productivité multipliée par 5, la fin des migraines Javascript ? Se peut-il vraiment que tout soit aussi parfait ?
Non, bien sûr que non…
J’avoue ne pas être d’un nature très « groupie », et donc que les superlatifs provoque en moi au mieux un haussement de sourcil interrogateur, et bien plus souvent un réaction de méfiance face au merveilleux que l’on me promet.
Soyons clairs : je pense, je suis persuadé que GWT est une bonne librairie, un très bon outil. Pas moins. Pas plus non plus. En effet, elle résout nombre de problématiques liées aux développements Ajax et Web 2.0.
De là à dire qu’elle ne souffre d’aucun défaut, il y a un pas que je me refuse à franchir. Explication en détail…

Le syndrome de la librairie magique
Comme toute nouvelle librairie, les avantages de GWT ont tendance à en cacher les limites. Souvenez-vous du précédent « Hibernate » : l’accès aux bases de données devenait tellement plus simple que l’on a cru, à tort, que la gestion de la persistance se ferait sans mal, et mieux, sans avoir besoin de comprendre les mécanismes sous-jacents tels que transactions, jointures et accès concurrents.
On assiste ici au même phénomène : la création d’application Ajax est rendu tellement plus abordable avec GWT que l’analyse s’en arrête aux bienfaits sans en mesurer les coûts et les pièges. Ne vous faites pas d’illusion : une connaissance, même partielle, de Javascript et des mécanismes associés reste nécessaire pour éviter toute déconvenue.
A mon avis, GWT, tout comme Hibernate ou Java en son temps, résout 80% des problèmes, mais crée 20% de problématiques nouvelles et complètement inédites qu’il serait malhonnête d’ignorer ou de passer sous silence.

Le mythe de l’intégration avec l’existant
L’un des arguments les moins recevable pour le modeste auteur d’hibernate4gwt que je suis est de dire que GWT fonctionne sans peine avec les applications existantes.
C’est bien entendu parfaitement faux avec toute application Spring-Hibernate (pour rester sur des technos éprouvées).
Le simple fait que GWT ne supporte que la syntaxe Java 1.4 pour la partie JavaScript de l’application interdit d’utiliser annotations et collections typées, pourtant largement répandues dans nos applications. Il en découle l’impossibilité pure et simple d’utiliser les entités du Domaine dans la partie cliente d’une application GWT.
Face à ce problème, la communauté se contente pour l’instant de pis-aller. La plus répandue consiste à convertir les entités du modèle en DTO (data transfer objects) par l’entremise de Dozer, ce qui implique l’apprentissage d’une nouvelle librairie et l’écriture des fichiers de mapping idoines. Avouez que pour une intégration naturelle, on peut repasser…

Et encore, je vous fais grâce des problématiques propres à la coexistence des entités Hibernate avec GWT -/. Pour plus d’info sur ce sujet, je vous renvoie au site web d’hibernate4gwt, où j’ai posté un article sur le sujet…

Une documentation anémique
A la différence d’Hibernate ou de Spring, deux poids lourds de l’Open-Source cités plus haut, GWT ne bénéficie que d’une documentation, disons, sommaire. Quelques pages web couvrant les cas standard, mais rien concernant de manière exhaustive le fonctionnement de la librairie.
C’est d’autant plus gênant que cette librairie contient de nombreux concepts innovants qu’il conviendrait de mieux documenter (je pense notamment aux Serializer et aux Generators) afin d’en encourager l’adoption, l’usage et l’enrichissement.
Heureusement, quelques passionnés, tel Robert Hanson, ont pris le taureau par les cornes et entrepris un large travail de vulgarisation que ce soit sur leur site web (dont Timepedia est sans doute l’un des meilleurs exemples) ou par le biais de livres (le célèbre et pour l’instant relativement unique « GWT in action »), mais cela peut difficilement avoir la valeur d’un manuel de référence estampillé « officiel », nécessaire à l’adoption par le plus grand nombre.

Dans la jungle des widgets
Les composants graphiques GWT affichent une situation paradoxale : le framework en lui-même en propose relativement peu (cf. Kitchen Sink, la démo “officielle” GWT), et les librairies de composants tierces (Open-Source ou non) sont pléthores.
Pourtant, autant on peut faire confiance au caractère professionnel des widgets natifs GWT, autant on est en droit de s’interroger concernant les autres composants : quelle est leur fiabilité ? Leur pérennité ? Gèrent-ils convenablement l’arbre DOM ?
Bref, des interrogations que l’on ne peut évacuer d’un simple haussement d’épaule et qui demanderait une évaluation minutieuse, ou l’émergence d’un standard de fait, ce qui ne semble pas encore le cas.

Programmation graphique : un pas en avant, un pas en arrière ?
Avec sa programmation entièrement en Java et événementielle, GWT nous renvoie un peu à l’ère de Swing, avec ses avantages et ses inconvénients.
Au rayon des premiers, la programmation graphique retrouve enfin son unité, face aux innombrables lnagages nécessaires à une page JSF-Ajax (HTML, JSP, JSTL, Javascript,…)
Concernant les défauts, on notera la fin de la séparation entre design et programmation, tel qu’il avait été introduit justement avec les JSP/JSF.
Plus important, GWT n’est pas structurant en terme de programmation. Il n’existe pas à ce jour de framework standardisant la programmation d’une action, ou les règles de navigation, à la manière d’un Struts en son temps…
Du coup, chaque développeur a l’embarras du choix pour coder le comportement de son application, et au vue du forum officiel, nombreux sont ceux qui sont embarrassés par ce choix p. De plus, les projets y perdent en homogénéité, et donc le retour d’expérience sur telle ou telle pratique sont plus lents.

Conclusion
Ces manques, ces défauts, ne doivent pas vous faire perdre de vue mon propos premier : GWT est un très bon outil, sans doute le meilleur disponible concernant le développement d’application Ajax.
Mais au milieu de toute cette vague d’enthousiasme parfois sans recul, il me semblait important de ramener GWT à un juste statut : celui d’une librairie, utile et productive certes, mais dont l’adoption ne se fera pas sans impact…