Monthly Archives: May 2005

Spring Framework

Juste pour vous signaler que Rod Johnson a mis à jour la présentation du framework Spring. Mais je m’aperçois que Benoit Moussaud a déjà donné toutes les bonnes ressources pour démarrer avec Spring. C’est donc une répétition mais ce framework le mérite bien. Si après la lecture de la présentation de Rod vous n’etes pas convaincu je ne sais pas ce que l’on peut faire de plus.

– Le but de Spring est de rendre J2EE plus facile à utiliser et d’encourager les “meilleurs pratiques” de programmation. Et il le fait bien.
– Spring répond à des problèmatiques qui sont rarement traitées par les autres frameworks. Par exemple Struts ne gère que la couche de présentation et de navigation d’une application, rien concernant la couche métier, la persistance, le transactionnel…
– Spring est modulaire. On peut introduire Spring progressivement dans un projet. On peut piocher dans les nombreuses fonctionnalités de Spring sans avoir à supporter la complexité de l’ensemble (à l’inverse des EJB par exemple)
– Spring permet de mettre en place des architectures testables (ce qui est quand même mieux qu’une architecture dé-testable)
– Spring est non intrusif. Vos objets métiers ne sont pas obligés d’avoir des dépendances avec le framework
– Spring permet de paramètrer l’ensemble des composants d’une application d’une manière unique
– Spring ne réinvente pas la roue et s’intégre avec la pluspart des frameworks importants: Struts, Hibernate, Toplink…

Comment utiliser les Design Patterns

Erich Gamma est l’un des co-auteurs du livre Design Patterns avec le “gang of four”, co-auteur de Junit avec Kent Beck ainsi que leader du projet eclipse sur la partie java… Eh oui ça le fait comme CV. Et quand Erich Gamma discute avec Bill Venners d’Artima ça donne un excellent papier.

“You really learn about polymorphism when you’ve understood the patterns. So patterns are good for learning OO and design in general”

100% d’accord. Il existe un fossé entre la programmation procédurale et la programmation objet qui est souvent bien difficile à franchir. Ce n’est tout simplement pas la même façon penser. Personnellement je ne connais pas de méthode 100% efficace pour faire “comprendre” l’objet. Mais la remarque d’Erich Gamma me semble tout à fait judicieuse. En y réfléchissant bien il me semble n’avoir vraiment eu le sentiment de bien maîtriser la “pensée” objet qu’après avoir découvert et appliqué les design patterns. Il est difficile de comprendre la puissance de l’objet car le polymorphisme, l’héritage, l’encapsulation… sont des concepts relativement abstrait. Appliquer un design pattern à un problème de code rend les principes de l’objet concrets.

D’autres remarques on ne peut plus pertinente sur les design patterns:
– Inutile de démarrer une conception en se disant je vais utiliser un maximum de pattern.
– Il vaut mieux adopter une démarche “refactoring to pattern”.
– Un design pattern, plusieurs implémentations possibles.
– La raison d’être des design patterns est la réutilisation et l’extensibilité
– Les design patterns fournissent un vocabulaire commun pour décrire et discuter d’une conception.

Il parle ensuite de la conception de Junit et de “pattern language”, et on attend la suite qui devrait être publié le 30 Mai…

Multi écrans

Un collègue est absent cette semaine et j’en profite pour utiliser son poste de travail comme un deuxième écran… Je n’ai pas de deuxième sortie vidéo mais c’est possible grâce à synergie. Ce petit programme est un bijou. Avec un seul couple clavier/souris on peut contrôler par le réseau n ordinateurs. Mais au lieu d’amener l’image des ordinateurs distants sur votre écran (comme vnc), il transfère la souris et le clavier vers l’autre écran. Ca fonctionne comme du multi-screen mais lorsque je change d’écran je change aussi d’ordi. Magique! Et le copier/coller d’un poste à l’autre fonctionne. C’est un produit open source compatible Unix/Mac/Windows.

Dans le même genre mais légèrement différent on trouve aussi MaxVista qui est un shareware Windows. Il ne permet pas de prendre le contrôle d’une autre machine mais permet de rajouter une sortie vidéo virtuelle à votre pc. Cette sortie vidéo ira s’afficher sur l’écran d’un autre ordinateur par le réseau.
Une fois qu’on a goûté au développement avec deux écrans c’est un peu dur de s’en passer. Un écran pour les logs ou le débuggage un autre ou on fait tourner l’appli… Ca change tout. C’est très dur à faire comprendre aux directions mais c’est une erreur de faire des économies sur le matos des développeurs. Le bon matos peut tout changer question productivité.