février
2008
Enfin ! Hier soir, j’ai pu crér mon premier cRUD avec Wicket en suivant un excellent tutoriel posté dans TheServerSide. J’ai trouvé cet article excellent pour de nombreuses raisons:
- Il couvre plusieurs aspects de Wicket: Héritage de Markup, Création de Composants, Communication entre pages (passages de paramètres, etc.), etc.
- Un Excellent usage des models: jusque là, je croyais que je m’en sors très bien avec un simple PropertyModel, mais c’était sans compter les best-practicies (LoadableDetachableModel, CompoundPropertyModel, etc.)
- Il montre (sommairement) l’intégration des différentes couches de l’application
- Il montre comment utiliser Spring (mais là, j’aurais aimé voir comment faire avec les annotations.
- Calir, précis, détaillé, du bonheur
- Obiwan Kenobi
Manquait juste l’Ajax, mais là, je peux me baser sur l’article de Zedros (merci à lui).
Pour ceux qui ne le savent pas encore, jusque là, j’étais un fidèle JSFien, tout content avec facelets, Spring et Richfaces … mais là, depuis hier soir, je crois que la donne va tout simplement changer.
Wicket est tout simplement puissant, mais alors vraiment puissant ! Du moment qu’on maîtrise ses (satanés) models, qu’on se familiarise un peu avec les composants standard et qu’on se fixe de bonnes habitudes quant aux classes anonymes/internes, vous pouvez exprimer vos souhaits avec rien de moins que le langage Java le tout-puissant.
A titre d’exemple: le choix des composants à redessiner après une requête Ajax. Avec RichFaces (ou plutôt Ajax4JSF) qui soit dit en passant rend ajax un simple jeux d’enfants, il faut spécifier d’avance quels composants seront redessinées (via l’attribut reRender), tandis qu’avec Wicket on les spécifies dans le traitement invoqué côté serveur … époustouflant. Ceci peut être simulé en faisant un binding entre reRender et un champ String d’un managed-bean, mais c’est ce qu’on appèle un quirk … et comme l’a dit quelqu’un (Christian sell):
you can work around any quirk in any framework. Or just use a decent one
traduction:
Vous pouvez contourner toute limitation dans tout framework. Ou juste utiliser un bon framework !
Il y’a aussi la simplicité déconcertante du développement des composants personnalisés … là, je suis sidéré: j’en ai crée un dès mon premier vrai test de Wicket … à comparer avec JSF que j’utilise dans le boulot et depuis mon PFE sans jamais avoir osé en développer un ;
Bref, ce qui me séduit dans Wicket c’est son approche extrêmement uniforme et harmonisée. Tout est Java, le reste n’est qu’ombre et poussière ! Euh, du simple HTML je veux dire.
La seule chose qui dérange dans Wicket c’est la prolifération des classes anonymes et internes … et là, je crois que les closures peuvent vraiment apporter une solution à ceci.
J’aimerais bien aussi voir une sorte de Builder qui permet de simplifier la construction programmatique de l’IHM.
En ce qui concerne Spring, je ne suis pas encore suffisament informé pour en juger, mais je trouve que l’intégration de Spring avec JSF est beaucoup plus transparent qu’avec Wicket. J’aime pas du tout l’annotation spéciale @SpringBean au lieu de l’annotation standard @Resource que j’utilise avec Spring 2.5.
Voilou voili ! Je me considère désormais comme un converti, et à part les projets sur lesquels je travaille actuellement au boulot (en JSF, trop tard pour changer), mes prochains projets seront certainement développés en Wicket (a moins que le boss s’y oppose, mais j’ai vraiment la chance de travailler dans un environnement ou on peut (nous les développeurs) exprimer/défendre/imposer nos choix.
To be continued.
Bof … pas vraiment. Le langage Java lui-même est presque inutilisable sans un IDE…
Par contre, quand on n’a pas de tools-support dans une myriade de fichiers xml, là ça fait mal
pour moi, un framework inutilisable sans « tools », c’est qu’il est loupé
Bon, à tête reposée, je peux dire que JSF n’est pas aussi mal que ça
En fait, avec les bons outils et un peu d’expérience, on peut devenir productif mais le point noir qui me pourrit vraiment la vie est le tooling:
JSF est censé être Tools-friendly, et c’est vrai dans une certaine mesure (pages JSP, pas de Spring, etc.)… mais dès qu’on travaille sur une vraie application (i.e. utiliser facelets) et avec Spring, c’est complètement raté coté IDE, du moins eclipse, et je me retrouve dans les années 90 à taper à la main un fichier XML de plusieurs dizaines de lignes sans auto-complétion … obligé à vérifier toutes les 10 secondes quels attributs faut initialiser, avec quoi, etc … beurk.
J’attends encore de voir quelqu’un qui fait des JSF tester wicket et continuer a aimer les JSF