J’ai eu le plaisir de rencontrer pour un premier « interview » la société Jaxio, éditeur du logiciel Celerio. Jaxio a été créé par Nicolas Romanetti et Florent Ramière pour développer et proposer un nouvel outil de génération agile pour Java appelé Celerio.
Voici un résumé de l’interview et ensuite mes impressions à la suite de celui-ci
—————————————————————————————-
Quel est le besoin auquel répond Celerio ?
Nicolas Romanetti explique tout d’abord que le constat sur le marché aujourd’hui est que :
-
les technologies Java du monde open-source évoluent vite.
-
les compétences pointues en Java sont difficiles à trouver.
-
les décideurs sont de plus en plus exigeants et exigent un engagement sur la qualité et les performances pour le même prix. Il n’est plus envisageable d’intégrer à posteriori les outils de qualités dans le code au risque de mettre sinon le projet en danger.
-
le temps de développement des projets tend à se réduire, les décideurs veulent une solution en ligne rapidement pour un budget limité.
-
les développeurs écrivent du code d’architecture technique et ne passent peut-être pas assez de temps sur la partie métier. La recherche d’une solution à un problème sur Hibernate ou Spring lorsque l’on ne maitrise pas ces technologies peut accaparer un temps précieux
-
une fois en production, le tuning est difficile car il demande une expertise sur les technologies que les développeurs n’ont pas tous
-
le turn-over sur les projets de 6 mois à 12 mois est un facteur de risque. La connaissance n’est pas assez diffusée.
-
la mise en place d’outils comme maven, findbugs, pmg, checkstyle n’est pas vu par la maîtrise d’ouvrage comme un élément à valeur ajoutée.
-
le choix parmi les technologies open-source Java n’est pas toujours évident
-
il existe un fort besoin d’industrialiser le développement des applications en mettant en place de l’intégration continue, du développement par les tests, de la génération de code
-
presque tous les projets d’applications webs en Java se basent sur les mêmes technologies. Le marché a déjà sélectionné les meilleures solutions open-source pour nous.
Pouvez-vous citer une référence client ayant mis en place Celerio ?
La société EPTICA a développé une nouvelle application Web destinée entre autre à répondre à un appel d’offre d’une grande banque française. Le tout en moins de 6 mois. Cette application a été prototypée puis développée grâce à Celerio. Elle permet aujourd’hui chaque matin aux quelques 18 000 conseillers clientèles de la Grosse Banque de répondre aux courriers électroniques envoyés par les clients via le portail Web de la banque. Grâce à Celerio, EPTICA a répondu avec succès à la demande de la Grosse Banque et le produit a été mis en place très rapidement.
Comment ont-ils utilisé Celerio ?
Les développeurs d’EPTICA ont utilisé Celerio pour générer le code d’architecture de leur projet. Ils ont ensuite implémenté la partie métier sans perdre de temps à configurer Spring, Hibernate ou Struts par exemple.
Celerio est intégré au cycle de production car il permet de générer une partie de l’application lors de l’intégration continue. Il facilite la conception par itération et il est donc complétement Agile. Scrum serait une excellente méthode projet pour piloter un développement avec Celerio. On évite l’effet Tunnel durant lequel un client n’a aucunes visibilités sur le développement en cours. Celerio facilite le travail des développeurs. Le développement peut donc démarrer rapidement sans attendre la fin de la rédaction des spécifications ou de la définition du schéma de la base par exemple…
Comment mettre en place Celerio ?
En fait Celerio est livré sous la forme d’un ensemble de plugins maven. Il permet tout d’abord à l’aide d’un bootstrap développé par l’équipe de Jaxio de préparer une arborescence de travail avant de commencer à écrire le code. Cette structure normalisée basée sur Maven sera familière aux développeurs utilisant déjà Maven.
Ensuite le développeur travaille sur le modèle de la base de données : un simple script SQL permet de définir dans un premier temps la structure relationnelle de son application.
Une fois son modèle exposé, il peut alors faire fonctionner Celerio afin d’effectuer les étapes suivantes :
-
génération de la couche Hibernate
-
création des beans DAO, model, manager représentant le modèle
-
création d’un ensemble d’action Struts standards (CRUD)
-
génération des tests unitaires avec junit et EasyMockup
-
Maven ensuite se charge de la compilation du code, des tests unitaires et d’intégration
-
exécution des tests
-
génération du site maven de rapport avec un ensemble d’outils de rapports
-
génération de la web application avec toutes les pages jsp, le code, les dépendances externes
-
mise en place d’un serveur Jetty minimal afin de tester ensuite directement sur son poste le résultat
NDLR : Celerio s’active en ligne de commande avec maven en spécifiant des profils d’exécution selon ce que l’on désire faire. Le cousin de Celerio sur ce mode est le générateur seam-gen de JBoss Seam bien que celui-ci ne soit pas aussi puissant que Celerio.
Si par exemple je surchage l’action insert() dans la class UserAction de Struts, comment Celerio ensuite peut fonctionner ? Est-ce que le code généré écrase mon code ?
Justement non, nous avons fait en sorte que la personnalisation métier soit très facile à mettre en place. C’est au générateur de s’adapter à votre code et pas à vous de rentrer dans un canevas trop rigide. Il n’était pas envisageable de mettre partout des tags spéciaux ou des annotations pour rendre magique du code.
Au lieu de cela nous avons cherché longtemps une solution qui permette de surcharger proprement du code tout en laissant la possibilité à Celerio d’ajouter du code. Cette partie fait l’objet d’un dépôt de brevet et je ne peux pas encore en parler.
(Cela dit Nicolas et Florent m’ont fait une démonstration qui m’a vraiment convaincu, en temps que développeur.)
Est-ce qu’il faut installer un éditeur spécial ? un plugin dans Eclipse ?
La réponse est non aux deux questions. Le développeur Java doit être libre d’utiliser l’outil qu’il veut. Dès le départ par rapport au code généré (java, xml, propreties, jsp, tld…) nous avons fait en sorte de respecter une structure simple telle que celle proposée par Maven. Cela nous permet d’éviter de réinventer la roue. D’ailleurs c’est l’une de nos phrases favorites : rester simple et ne pas réinventer ce qui a déjà été fait autre part.
Quelles sont les techniques de rendu pour la couche Web ?
Aujourd’hui html simple et extJS. Nous intégrons cependant dans l’application générée des taglibs standards de Struts2. Pour la partie rendu on suit l’approche struts2 : création de nouveau composants en freemarker. Pour certains composants, comme ce paginateur dans un tableau, nous avons ajouté des composants maisons.
Nous disposons aussi d’un rendu basé sur extJS plus orienté client riche. Et nous travaillons sur une intégration de Google Web Toolkit.
Au niveau couche web ?
Aujourd’hui Struts2 et Spring pour l’accès au code métier. Nous travaillons sur Spring Web Flow pour apporter une architecture orientée composant, là où Struts est orienté page/action.
Et donc JSF ? envie, pas envie ?
Honnêtement notre premier besoin est de générer du code rapide, simple à maintenir et qui permette une montée en charge de l’application. Cependant JSF est une techno à laquelle nous réfléchissons aussi pour d’autres types de projet, plus orienté client riche que purement web. Struts2 reste le moteur le plus simple et le plus puissant pour répondre à la majorité des besoins de nos clients.
Merci de m’avoir reçu et à bientôt
A bientôt !
————————————————————–
Conclusion
Séduit, clairement séduit. En effet en tant que décideur j’ai là une solution qui permet à mon équipe de générer le squelette de mon projet en suivant les meilleurs pratiques en cours.
Pas facile de comprendre l’intérêt de Celerio tant que l’on ne l’a pas vu en action. Ensuite on ne peut qu’être séduit. Certes le gourou refusera qu’un produit tiers vienne sur son terrain lui montrer comment travailler. Mais moi en tant que payeur sur un projet, je serai même demandeur pour voir une alternative à mon projet web basé sur Celerio. J’imagine même que je pourrai challenger mon équipe d’architecture et obtenir le meilleur d’un point de vue métier. En tant que décideur, les solutions techniques sont pour moi une source de coûts. Et de coûts aussi une fois en production. Là sur ce point, Jaxio marque un point énorme par rapport au marché.
Du côté des recherches de compétences pointues sur Java, aujourd’hui il est très difficile de trouver un expert Spring, Hibernate, Struts2 qui pour un coût modique (son salaire) vous propose le meilleur assemblage technique pour répondre à vos besoins. Florent et Nicolas sont tous les deux de vieux routiers de Java qui ont travaillés à San Francisco avant de rentrer en France. Ils connaissent parfaitement l’ensemble des technologies qu’ils proposent, ce qui est aussi le résultat d’un gros travail de veille technique, d’une certaine curiosité et de connections privilégiées comme avec Spring-Source. La valeur de Celerio est aussi basée sur la valeur de leurs domaines d’expertises.
J’ai aussi compris que leur logiciel permet de répondre très rapidement à un appel d’offre. En effet, celui-ci permet de générer les quelques 70% du code d’architecture et d’infrastructure d’une application, pour qu’ensuite un développeur fonctionnel s’attaque à la partie métier.
Je disais à Nicolas et Florent que là où aujourd’hui un junior va apprendre Spring en regardant le fameux PetStore, Celerio permet de générer du code en rapport direct avec le projet sur lequel le développeur va travailler. Or à mon avis pour monter en compétence, il sera plus facile de regarder du code en rapport avec son projet qu’un bête projet sur les…petites bêtes !
Imaginons un instant qu’ici chez Thomson-Reuters nous soyons utilisateur de Celerio. En tant que développeur je lance l’outil sur ma base et mes concepts financiers. Celui-ci me génère une application web en 2mn qui fonctionne réellement et que je peux tester. Si ensuite je veux commencer à écrire mes propres écrans je pourrai partir de la structure écrite par Celerio, au lieu de m’inspirer d’un exemple sur le web. Cependant je reste maître de mon code et le générateur n’est pas intrusif. Et je peux continuer à utiliser Celerio pour générer d’autres parties de l’application au fur et à mesure que mon modèle en base évolue. Celerio n’est pas un outil « one shot » mais un vrai outil logiciel qui accompagne le développeur.
Je cherche quelque chose de moins enthousiaste à dire mais je n’ai pas grand chose. Bon je me force pour Nicolas: les diagrammes des slides powerpoints sont pas très beaux (arf…). Non franchement ce que j’ai vu m’a intéressé en tant que développeur et aussi en tant que client potentiel. On n’est pas dans la poudre de perlin pin pin qui fait la pluie et le beau temps, mais bien devant un outil qui créée une grosse valeur ajoutée à un projet pour une mise initiale raisonnable. Je pense que le mieux est encore de se faire accompagner par l’équipe de Jaxio. Je vois qu’en 4 heures nous avons couvert le produit, ce qui montre qu’il est simple à comprendre. Mais derrière le gros effort de simplification se cache des heures et des heures de réflexions, d’essais, de tuning et enfin d’implémentation.
Le code est propre, documenté, léger. Pas de fouillis, classé par package sans dépendances cycliques… tout a été pensé minutieusement. Faire simple c’est à mon avis plus dur que faire…
Quoi d’autres ? On aimerait une version allégée open-source pour tester et faire du buzz autour de Celerio. Peut-être un jour ?
Au niveau du rendu, il y a tout ce que l’on a besoin dans une application Web. Mon œil d’architecte aurait aimé bien sûr plus de composants riches, car je suis habitué à voir non pas des applications webs mais des applications type client léger.
En tout les cas l’équipe est très sympa et dynamique. Ils sont situés à Suresnes mais un déménagement est prévu cet été pour aller dans Paris.
J’ai demandé pour terminer à l’équipe le profil de développeur Java qu’ils recherchent :
-
« Quelqu’un de dynamique, motivé, qui aime coder, qui aime la technique et bien entendu qui soit un vrai fan de Java. Aussi quelqu’un capable d’aller en clientèle pour assurer des prestations techniques chez nos clients. »
Si vous souhaitez postuler, vous pouvez contacter Jaxio via leur site Internet http://www.jaxio.com
Si vous êtes éditeur et vous voulez que l’on se rencontre, envoyez-moi un emai, mon adresse est sur le logo du touilleur en haut à gauche de cette page.
Prochaine interview du Touilleur : la société Prima Solutions à Paris avec Dimitri Baeli.
Jaxio est partenaire du PJUG, Paris Java User Group.
Vous pourrez les croiser à la prochaine réunion PJUG le mardi 10 juin sur Spring.
ce produit ressemble à un clône du projet open-source appfuse ou je me trompe ? ( http://www.appfuse.org ) ?
Sinon, comment peut-on tester ce produit ? je n’ai pas trouvé de lien sur le site de l’éditeur
Appfuse ? en fait oui et non :
oui : projet basé sur maven2 et son workflow projet. + plugins
oui : appgen : générateur de pojo, dao etc…
non : appfuse ne stocke pas la modélisation du projet dans un sgbd, juste les tables des pojo entités.
non : appfuse n’est qu’un archetype de projet maven2, celerio semble proposer un ensemble de plugins maven2 pour améliorer le cycle de construction du projet tout au long du dev.
Sinon, des meta-framework Il en existe plein d’autre :
http://romaframework.xwiki.com/xwiki/bin/view/Main/WebHome
http://www.keelframework.org/
http://issues.salto-consulting.com/fwk/#NoHistory
sweetdev : http://www.ideotechnologies.com/
http://telosys.objectweb.org/
http://www.web4j.com/Java_Web_Application_Framework.jsp
Bon j2ee, Yoann (Rennes)