17 décembre 2008

beans binding dans gwt

La JSR 295 a été crée pour définir un mécanisme de binding en Java. L'idée simple et supportée par de nombreux langages est que deux attributs de deux beans soit "liés", ce qui permet par exemple à un widget graphique de toujours rester synchronisé avec l'objet modèle qu'il affiche, sans devoir écrire du code de mise à jour fastidieux et répétitif.

beansbinding est l'implémentation associée à cette spec et est utilisé dans NetBeans, ce qui prouve une bonne maturité de la techno. Seulement le projet semble "dormant", et la JSR associée n'a pas bougé depuis 2006. Pourtant le mot clé "bind" utilisé par JavaFX montre bien l'importance de ce concept pour les IHM

gwt-beans-binding est un portage de la JSR 295 (ou plutôt de ses concepts puisqu'elle n'est ni aboutie, ni publique) pour GWT. La mise en oeuvre est très simple. Pour lier deux textBox par exemple, il suffit de déclarer :

Binding.createAutoBinding( READ_WRITE,
    textBox, BeanProperty.create( "text" ),
    model, BeanProperty.create( "name" ) );

L'équivalent codé "à la main" nécessite de définit de nombreux PropertyChangeListeners (NB: quand seront-ils supportés en standard par GWT ?).

Pourquoi se focaliser sur ce projet, encore en version 0.2, alors que d'autres options comme Gwittir offrent des solutions comparables ? 
  • D'une part, parce que quelque soit l'évolution de cette JSR, elle sera toujours considérée si un nouveau groupe s'attaque à ce problème de data-binding en Java. 
  • D'autre part, parce qu'elle propose une API simple et focalisée sur cette unique tâche. 
  • Enfin, parceque le développeur de cette petite librairie a l'air très motivé !
Pour voir gwt-beans-binding à l'oeuvre : démo