Développeur : Acceleo 2.2.0 : nouveaux générateurs PHP, Python et JEE
Posté par Cédric Brun (page perso, ). Modéré le 21 janvier 2008.
Acceleo est un générateur de code qui permet de transformer des modèles vers du code.
Cette nouvelle version d'Acceleo apporte encore un degré de finition supérieur au meilleur générateur de code de seconde génération ;-) . L'éditeur de template a été refondu pour encore améliorer leur lisibilité et faciliter leur saisie, l'interface à désormais été totalement localisée (une version Française est disponible mais attention, les documentations se réfèrent à la version anglaise), de nouvelles fonctionnalités de fond ont été ajoutées telles que les scripts génériques ou encore la gestion de l'encoding des templates et les modules de génération ont été mis à jour.
On peut citer l'apparition de Spring dans le module JEE accompagné d'une nouvelle documentation de mise en oeuvre. Le module PHP s'est enrichi d'une meilleure gestion des héritages et le module Python de diverses améliorations. La première livraison, expérimentale, de WISSS est également disponible: il s'agit d'un outillage dédié à la modélisation et la génération d'application web PHP utilisant le framework Zend : à partir d'une modélisation de type "entité/relations" le module génère les objets métiers ainsi que toute la couche d'accès aux données pour MySQL. Cette première version offre déjà le chargement des objets à la volée (lazy loading) ainsi que l'optimisation des requêtes SQL de mise à jour des objets. Un nouveau module dédié à Zope/Plone est apparu sur le site, il sera intéressant de comparer les résultats obtenus à l'aide de cet outil avec celui dédié à JEE.
Le site internet a lui aussi été mis à jour et les documentations ont été totalement re-travaillées (en particulier les versions anglaises). Bien évidement, de nombreuses corrections ont également été apportées et les nouvelles fonctionnalités sont présentées. Côté communautaire l'activité est intense sur les différents canaux de communication, en particulier sur la planète Acceleo et sur le forum. Acceleo était également présent aux dernières conférences Eclipse, "Eclipse Summit Europe" en Allemagne et "Eclipse Now You Can" à Paris par exemple.
Vous trouverez toutes ces fonctionnalités en images sur la page des nouveautés ainsi que des bundles Eclipse mis à jour spécialisés pour la mise en œuvre du MDA (Acceleo et ses modules, EMF, GMF, Topcased...).
La prochaine version d'Acceleo sera la version 3.0.0, elle apportera des changements majeurs pour permettre l'utilisation du moteur de génération en mode "standalone", c'est à dire sans Eclipse.
Un grand merci à toutes les personnes ayant fournit un retour sur le forum ou par le biais des tickets, c'est en grande partie grâce à ce dynamisme qu'Acceleo évolue aussi vite !
Cette nouvelle version d'Acceleo apporte encore un degré de finition supérieur au meilleur générateur de code de seconde génération ;-) . L'éditeur de template a été refondu pour encore améliorer leur lisibilité et faciliter leur saisie, l'interface à désormais été totalement localisée (une version Française est disponible mais attention, les documentations se réfèrent à la version anglaise), de nouvelles fonctionnalités de fond ont été ajoutées telles que les scripts génériques ou encore la gestion de l'encoding des templates et les modules de génération ont été mis à jour.
On peut citer l'apparition de Spring dans le module JEE accompagné d'une nouvelle documentation de mise en oeuvre. Le module PHP s'est enrichi d'une meilleure gestion des héritages et le module Python de diverses améliorations. La première livraison, expérimentale, de WISSS est également disponible: il s'agit d'un outillage dédié à la modélisation et la génération d'application web PHP utilisant le framework Zend : à partir d'une modélisation de type "entité/relations" le module génère les objets métiers ainsi que toute la couche d'accès aux données pour MySQL. Cette première version offre déjà le chargement des objets à la volée (lazy loading) ainsi que l'optimisation des requêtes SQL de mise à jour des objets. Un nouveau module dédié à Zope/Plone est apparu sur le site, il sera intéressant de comparer les résultats obtenus à l'aide de cet outil avec celui dédié à JEE.
Le site internet a lui aussi été mis à jour et les documentations ont été totalement re-travaillées (en particulier les versions anglaises). Bien évidement, de nombreuses corrections ont également été apportées et les nouvelles fonctionnalités sont présentées. Côté communautaire l'activité est intense sur les différents canaux de communication, en particulier sur la planète Acceleo et sur le forum. Acceleo était également présent aux dernières conférences Eclipse, "Eclipse Summit Europe" en Allemagne et "Eclipse Now You Can" à Paris par exemple.
Vous trouverez toutes ces fonctionnalités en images sur la page des nouveautés ainsi que des bundles Eclipse mis à jour spécialisés pour la mise en œuvre du MDA (Acceleo et ses modules, EMF, GMF, Topcased...).
La prochaine version d'Acceleo sera la version 3.0.0, elle apportera des changements majeurs pour permettre l'utilisation du moteur de génération en mode "standalone", c'est à dire sans Eclipse.
Un grand merci à toutes les personnes ayant fournit un retour sur le forum ou par le biais des tickets, c'est en grande partie grâce à ce dynamisme qu'Acceleo évolue aussi vite !
Nouveautés en images (2140 hits)
Bundles prêts à l'emploi (419 hits)
Planet Acceleo (342 hits)
Ferme de modules (283 hits)
> Lire la dépêche (52 commentaires, moyenne: 1,8).
Vous avez demandé le commentaire #898886.




Licence de la deuxième création :)
Pour les modules
* Code généré :
Le code généré n'est pas soumis à la licence d'Acceleo. L'application cible peut utiliser la licence de votre choix.
* Modules de génération :
Vous pouvez créez vos propres modules librement et les redistribuer librement.
Donc si j'ai bien compris
- on peut faire du logiciel propriétaire avec ;
- et des modules propriétaires ;
(ce qui ne me dérange pas outre mesure)
PS des années que je vois des générateurs de code, et des années que je me fais les remarque suivante :
- le code généré est verbeux et souvent imbitable, donc sans le modèle chiant à déboguer ;
- le niveaux de complexité n'est pas toujours adapté ;
- le code pondu est chiant à optimisé (notamment quand on doit débrayer pour faire des grosses requêtes SQL)
Justement, dans la GPL il est dit ce que l'on doit fournir à une personne pour que ce soit libre est : "la forme préférée de modification". Si on génère du code avec un MDA, la forme préférée étant le modèle alors une application libre générée à partir d'un MDA devrait non fournir les sources, mais ce qui permet de les générer, non ?
[^]Re: Licence de la deuxième création :)
je suis plus ou moins d'accord avec toi, mais ce n'est pas toujours un inconvénient.
Dans le cas de Wisss par exemple, le code est surement plus verbeux que s'il n'y avait pas de générateur. Mais en php, ca évite de faire des trucs dégeus comme $this->$method() où tu te retrouves à te battre pour trouver quelle est la vraie méthode appelée. En plus, ca déplace une partie de la complexité dans la génération, accélérant ainsi l'exécution. Evidemment, une des contreparties est d'avoir tendance à ne pas assez factoriser le code, ce qui est mauvais quand on met en place des systèmes de cache objets.
Pour la complexité, je dirais que la majeure partie de la complexité se trouve dans le générateur et pas dans le code généré. Sauf si tu ajoutes une surcouche au framework utilisé. Dans mon cas, j'utilise le Zend Framework pour réduire la complexité du code, mais j'ai généré une surcouche pour avoir une persistence automatique. Ca complique sûrement la lecture de la partie framework, mais ca simplifie le code métier.
Pour l'optimisation du code pondu, il y a le user code qui te permet justement de débrayer le générateur. Ma persistence automatique permet de se simplifier la vie mais bien sur, dans certains cas spécifiques, il faut faire des requêtes spécifiques, ce qui reste possible.
Wisss : DSL et générateur Php pour appli web
[^]Re: Licence de la deuxième création :)
ca évite de faire des trucs dégeus comme $this->$method() où tu te retrouves à te battre pour trouver quelle est la vraie méthode appelée
"Se battre" ? C'est une blague ? Où est le problème exactement ?
PHP est une grosse daube, mais la possibilité de faire ce genre d'indirection est un des rares bons points du langage.
[^]Re: Licence de la deuxième création :)
si les méthodes étaient des objets comme en python, je dis pas, mais ce n'est pas le cas.
Et puis c'est le meilleur moyen d'obfusquer le nom d'une méthode à coup de str_replace et autres. Ce n'est pas un bon point, c'est un truc qui sauve la vie parfois, ca n'a rien à voir =)
Wisss : DSL et générateur Php pour appli web
[^]Re: Licence de la deuxième création :)
si les méthodes étaient des objets comme en python, je dis pas, mais ce n'est pas le cas.
Ben, justement, les méthodes n'étant pas des objets, c'est un pis-aller qui vaut toujours mieux que rien.
Et puis c'est le meilleur moyen d'obfusquer le nom d'une méthode à coup de str_replace et autres
Tu peux obfusquer du code dans n'importe quel langage, même Python.
[^]Re: Licence de la deuxième création :)
Tout à fait, il est possible de faire du logiciel libre comme du logiciel propriétaire avec cet outil. Acceleo comme la plupart de ses modules sont sous license EPL et peuvent par conséquent être utilisé et modifié pour à peu pret n'importe quoi.
Seul les modules WISSS et DotNet sont à l'heure actuel GPL, donc toute modification des templates de génération doit être sous GPL pour être re-distribuée, par contre cela ne bride en rien les licenses possibles pour le code généré.
Il va de soit qu'un projet GPL généré devrait fournir les modèles correspondant pour faciliter la modification par les tiers. Par contre il doit également fournir les sources car on ne cherche pas à générer 100% de l'application, une partie reste à coder !
Pour les remarques à propos du code généré verbeux et imbitable, c'est justement l'une des raisons qui ont poussé à la création d'Acceleo. Les templates sont simples à réaliser et l'on peut compléter le code généré automatiquement. Là encore l'objectif n'est pas d'avoir du 100% mais plutôt d'avoir un outil pratique et sans contraintes.
De manière générale on utilise une approche "par le bas" pour réaliser un générateur, on réalise d'abord un prototype de l'application "type" à générer, le modèle correspondant, puis on écrit les templates qui vont permettre d'avoir le même résultat automatiquement. Ainsi on est sûr d'avoir un code fonctionnel et tout aussi lisible que tu code manuel.
[^]Re: Licence de la deuxième création :)
Bah c'est comme du WYSIWYG pour la programmation (en tirant bien par les cheveux la comparaison).