Tiens tiens tiens ...
Je suis tomb?? ce matin (enfin, plut??t la semaine derni??re, mais je ne l'ai lu que ce matin) sur un framework Java qui me para??t m??riter qu'on s'y int??resse, plus encore que j'ai pu m'int??resser jadis ?? Spring ou plus r??cement ?? Guice.
L'histoire de cette d??couverte est d'ailleurs marrante.Il y a quelques temps, j'ai parl?? ?? mes nouveaux coll??gues du mouvement NoSQL. Mouvement dont il faut retenir (?? mon avis) deux choses 1. Se d??finir uniquement par ce qu'on n'est pas, c'est invoquer le d??mon de la diversit?? (en m??me temps, Darwin nous dirait que c'est bon d'un point de vue ??volutionnaire). 2. Les bases de donn??es relationnelles ont trente ans, il est temps de penser ?? autre chose ...A la suite de cette discussion, l'un de mes coll??gues m'a envoy?? cette pr??sentation de Neo4J, qui pr??sente tr??s bien les avantages d'une base de donn??es orient??e graphe. Dans cette pr??sentation, il est dit que Neo4J peut ??tre utilis?? comme back-end QI4J. Comme je trouve Neo4J conceptuellement sympathique (?? cause de sa proximit?? au web s??mantique, RDF et toutes ces sortes de choses), j'ai ??t?? voir QI4J, et j'ai bien fait (et vous aussi, vous feriez bien).

Pour faire court, QI4J essaye d'appliquer les bonnes id??es de l'injection de d??pendances au seul domaine o?? ce soit complexe : le domaine m??tier. En disant ??a, je caricature un peu, mais pas trop. Et je vais essayer de vous expliquer pourquoi; Avec Guice, Spring, PicoContainer et les autres, vous allez facilement pouvoir r??cup??rer les services techniques de votre application : persistance, localisateur d'objets, service de recherche, envoi de mail, ... Mais vos objets m??tier resteront instanci??s par des POJOs. Et tout ??volution de la mod??lisation du domaine m??tier se traduira par la r????criture de ces POJOs (et sans doute, par cons??quent, par la r????criture du mapping objet/relationnel, de la couche IHM, ...). Bref, ??a va ??tre le bordel. Et pour une raison somme toute simple : parce que vos objets m??tier fonctionnent ind??pendement du contexte, alors pr??cis??ment qu'un domaine m??tier est un contexte. Pour le dire dans des mots d'informaticiens, le domaine m??tier est souvent mod??lis?? ?? l'aide d'instances d'objets, alors qu'il ne faudrait acc??der qu'?? des interfaces donnant les capcit??s des objets. Et l??, je paraphrase encore le site de QI4J : dans un domaine m??tier traditionnel, je suis mod??lis?? comme une personne, alors qu'au travail, je suis architecte, ?? la maison, je suis un p??re et un mari, et sur la route, je suis un d??mon ?? roulettes lors des Rol Friday Night.

Heureusement, QI4J est l?? !Avec QI4J, vous mod??lisez votre domaine m??tier sous forme d'entit??s, d'attributs, et de relations. Et c'est QI4J qui va se charger de faire l'injection de d??pendances de tout ce petit monde.Pour donner un exemple, regardez le 10 minutes tutorial. Bien s??r, il n'est pas complet. N??anmoins, il permet bien de comprendre comment les choses s'articulent. Enfin, j'esp??re.

D'un autre c??t??, je commence tout juste ?? creuser avec vous. N??anmoins, je vois des choses tr??s int??ressantes, comme la mod??lisation des propri??t??s, qui me rappelle ??videment magick-properties, ou encore les annotations beaucoup plus explicites que le @Inject ou m??me le @Named de Guice.

Bref, ??a me para??t prometteur (surtout coupl?? ?? Neo4J pour fournir une persistance "sans effort") et je vais sans doute le tester de fa??on plus approfondie.