1. Développement rapide
AJAX / JEE
avec un outillage libre
Laurent Guérin
. SOGETI : National Practice Leader quot;Open Solutionsquot;
. OW2 : Telosys project leader laurent.guerin@sogeti.com
1
2. Contexte
et
Industrialisation
Laurent Guérin - 31 mars 2009 2
3. La problématique de la productivité
Productivité
Client -
serveur
L4G
L3G Web
C/C++
COBOL n-tiers Complexité
technique
encore trop
importante !
1970 1980 1990 2000
Années
Laurent Guérin - 31 mars 2009 3
4. La complexité des environnements
Nombreux frameworks (hétérogènes)
Compétences multiples
UML
Design
IHM Patterns
riche !
services
Réseau
métier
navi- appli- persis-
façade
gation cation tence
objets
métier
navigateur AJAX
HTML, CSS SQL
JavaScript, Java
DOM, DHTML,
XML/XSL, …
L3G ! jar hell !
dépendances !
Laurent Guérin - 31 mars 2009 4
5. Problèmes & objectifs
. Assemblage de solutions . Simplifier l'environnement
hétérogènes de développement
. Multiplication des quot;.jarquot; . Assister le développeur
. Objets non transverses . Alléger le processus de
( => mapping inter-couches ) développement
. Multiplication des objets . Réduire de quot;code techniquequot;
( pb d'empreinte mémoire ) . Homogénéiser
. Code technique . Standardiser
( sans valeur ajoutée )
. Perte de contrôle sur la . Cadrer
couche de persistance
. Couche AJAX non intégrée
. etc …
La complexité Simplicité
appelle & Agilité
la complexité !
Laurent Guérin - 31 mars 2009 5
7. Projets Java EE Open Source
• Infrastructure et middlewares :
Linux
Apache
Tomcat 100 %
MySQL ( ou PostgreSQL ) libre
• Frameworks
Telosys 100 %
Spring simple
• IDE
Eclipse ( ou NetBeans )
Outils de génération de code
Laurent Guérin - 31 mars 2009 7
17. Génération de code : principe
• Moteur de template :
application d'un quot;templatequot;
sur un quot;contextequot;
Contexte Fichier
quot;templatequot; Templating
Objets language
Java
Moteur Velocity
FreeMarker
etc …
Fichier
.java, .html, .txt, etc…
généré
Laurent Guérin - 31 mars 2009 17
18. Génération de code : différentes approches
• A partir d'un modèle UML
MDA (exemple quot;Acceleoquot;)
• A partir d'un modèle non UML
notion de quot;modèle légerquot; (référentiel)
• Sans autre modèle que les classes Java
pour les cas simples, récupération
dynamique des informations utiles
(exemple quot;Java Modelquot; d'Eclipse)
Laurent Guérin - 31 mars 2009 18
19. Génération de code : MDA
Le modèle doit être Modélisation UML :
. à jour . Objets Métiers
. fiable . Services Métiers
UML . détaillé
Service
name
Génération de la
+port 0..n
Port Binding Port Type
1
+binding name
name name Param
1 +type
name
StartWithExtensions
+output 0..1
0..1 +input
+operation 0..n
BindingOperation
name
+operation 0..n
1
Operation
name
+input
0..1
Input
0..1 Output
+output
XMI quot;couche métierquot;
( XML )
+message 1
+fault 0..n +fault 0..n
Message
Fault +message
BindingFault name
name
1 1
+part 0..n
Part
name
Code
Outil MDA
Template
Acceleo (OW2)
AndroMDA
etc …
Laurent Guérin - 31 mars 2009 19
20. Génération de code : quot;référentiel légerquot;
fiable
Génération Référentiel (toujours
Base de .dbrep à jour)
données du référentiel ( XML )
Modèle
Physique Génération
de code
Telosys Tools Contexte Fichiers
.vm
( plugin ) Velocity
Wizards
Génération Classes
de squelettes .java
de classes
Laurent Guérin - 31 mars 2009 20
21. Développement de plugins Eclipse
Plugins Telosys
2006-2007 : DAO Generator
. 1er plugin pour Telosys
. Fenêtres modales
2007 : Screen Builder
( prototype )
. 1er plugin avec GEF
. Editeur d'écrans WYSIWYG
2008 : Wizards
. Assistants pour faciliter la
Eclipse = plateforme création des classes Telosys
. assemblage de plugins
. socle OSGi
2009 : Telosys Tools Regroupement
Le développement . Générateurs basés sur des outils non
de plugins est coûteux des quot;editorsquot; graphiques
(génération de
. Assistants ( quot;wizardsquot; ) code & assistants)
Référentiel Préserver l'indépendance => EMF
Laurent Guérin - 31 mars 2009
23. Intégration dans NetBeans
• Prototype en cours de développement
• Pour NetBeans un plugin est
un quot;Modulequot; ( fichier quot;.nbmquot; )
• Principe proche d'Eclipse
• Quelques différences :
Plus simple
Swing ( et non SWT )
FreeMarker est intégré
dans NetBeans
Laurent Guérin - 31 mars 2009 23
24. Bilan
• Pour développer quot;avec agilitéquot;
Réduire le nombre de frameworks
Simplifier l'architecture
Favoriser l'assemblage de composants
indépendants
Frameworks et outils
Outils quot;légersquot;
exemple : génération de code quot;sans contraintequot;
• Surveiller le temps passer à …
gérer les dépendances ( jar hell )
réaliser/tester du quot;code techniquequot;
administrer les outils
Laurent Guérin - 31 mars 2009 24