lundi 30 mars 2009

Le facteur clé d'un bon framework

Lu sur LE Lexpage :

Rasmus lerdorf dit que pour lui, chaque société / groupe devrait avoir son propre framework


Le problème avec les frameworks, c'est que l'on cherche la balle d'argent, le framework ultime. C'est une recherche de perfection qui n'a pas de fin et qui ne pourra jamais être totalement satisfaite. Il y aura toujours un cas à la marge qui ne fonctionnera pas. Et au bout d'un moment, les gens ont envie de changer, c'est humain. C'est pas un hasard qu'on parle de nouvelles technologies. Qu'on passe de client-lourd à client léger, et que ça oscille depuis la nuit des temps (de l'informatique).

Donc comme aucun framework n'est appelé à durer, les seuls bons sont ceux qui se rendent le moins indispensable. Quand Spring parle d'injection de dépendance, et que leur philosophie est de créer de simple POJO en Java, c'est positif. Ca fait que l'on peut utiliser Spring, mais que le chantier pour éventuellement passer de Spring à autre chose n'est pas si compliqué ni coûteux, car les POJO sont réutilisables sans rien faire.

De la même façon, j'avais été favorablement impressionné par iBatis (et pas par toutes les solutions d'ORM traditionelles style Hibernate). Parce que l'idée d'iBatis c'est d'utiliser le langage le plus connu, et le plus performant pour gérer une logique ensembliste : le SQL. Et iBatis se charge juste de charger/décharger les résultats des requêtes dans des beans Java. Là aussi, si iBatis vous ennuie au bout d'un moment, le chantier de réécriture n'est pas pharaonique.

Donc pour moi, le critère clé d'un bon framework c'est d'arriver à s'en passer assez rapidement (si le besoin s'en fait sentir).

Pour Django ou Rails, je les vois plus comme des outils-frameworks. C'est un peu l'équivalent de Ant+(Spring+Hibernate+...). La différence avec un framework pur, c'est qu'il y a un socle, une console, qui permet de lancer des commandes (comme Ant). L'intérêt de ces outils, c'est le protoypage rapide d'application. Tout est fait pour aller vite. Mais il faut bien connaitre bien sûr.

Mais ce que j'aime dans Django, (même s'il n'a pas le critère clé du bon framework), c'est sa philosophie très cohérente dans les templates, l'ORM, la gestion des URL.

Et faire une pile aussi cohérente en Java demanderait un gros boulot...