Développement rapide
              AJAX / JEE
              avec un outillage libre
Laurent Guérin
. SOGETI   : National P...
Contexte
                          et
                          Industrialisation


Laurent Guérin - 31 mars 2009         ...
La problématique de la productivité


       Productivité



                                              Client -
      ...
La complexité des environnements

                Nombreux frameworks (hétérogènes)
                Compétences multiples
...
Problèmes & objectifs




      . Assemblage de solutions                  . Simplifier l'environnement
      hétérogènes ...
L'industrialisation




              Méthode
              Méthode                   Outils
                             ...
Projets Java EE Open Source


       • Infrastructure et middlewares :
                Linux
                Apache
      ...
Les frameworks




Laurent Guérin - 31 mars 2009              8
Le quot;cadrequot;

   • Framework = quot;cadrequot;
     ( doit guider le développeur )
                                 ...
Framework quot;globalquot;

   • Telosys = framework quot;multi-aspectsquot;
             = framework quot;globalquot;



...
Architecture : Telosys seul

                                                                 Suffisant pour réaliser une
...
Architecture : Telosys + Spring

                                                       Composants / Services

           ...
Modularité : assemblage progressif


   • Les composants sont indépendants
   • Assemblés progressivement (avancement
    ...
Mapping : écran – objets – base de données

    <%@ taglib uri=quot;/telosys/widgetsquot; prefix=quot;tquot; %>
    <t:scr...
Les outils




Laurent Guérin - 31 mars 2009           15
Orientation Software Factory




 Software
 Factory

 +

 Contrôle
 Qualité
                                       CheckSt...
Génération de code : principe

   • Moteur de template :
     application d'un quot;templatequot;
     sur un quot;context...
Génération de code : différentes approches


   • A partir d'un modèle UML
       MDA (exemple quot;Acceleoquot;)

   • A ...
Génération de code : MDA

                                                                                                ...
Génération de code : quot;référentiel légerquot;

                                                     fiable
            ...
Développement de plugins Eclipse

                                            Plugins Telosys
                            ...
Démo avec Eclipse …




Laurent Guérin - 31 mars 2009        22
Intégration dans NetBeans


   • Prototype en cours de développement
   • Pour NetBeans un plugin est
     un quot;Moduleq...
Bilan

    • Pour développer quot;avec agilitéquot;
              Réduire le nombre de frameworks
              Simplifier...
Questions ?




Laurent Guérin - 31 mars 2009                 25
Quelques liens



    •   Telosys :                   http://telosys.ow2.org
    •   Spring :                    http://ww...
Prochain SlideShare
Chargement dans…5
×

Solutions Linux Développement Rapide Java

1 688 vues

Publié le

Conférence salon Solutions Linux 31 mars 2009

Publié dans : Technologie, Business
0 commentaire
4 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 688
Sur SlideShare
0
Issues des intégrations
0
Intégrations
10
Actions
Partages
0
Téléchargements
51
Commentaires
0
J’aime
4
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Solutions Linux Développement Rapide Java

  1. 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. 2. Contexte et Industrialisation Laurent Guérin - 31 mars 2009 2
  3. 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. 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. 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
  6. 6. L'industrialisation Méthode Méthode Outils Outils Framework Framework ( agile ) ( efficaces ) ( global ) Laurent Guérin - 31 mars 2009 6
  7. 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
  8. 8. Les frameworks Laurent Guérin - 31 mars 2009 8
  9. 9. Le quot;cadrequot; • Framework = quot;cadrequot; ( doit guider le développeur ) . Normes • Qualités recherchées : . Conventions Souplesse, adaptabilité . Best pratices Non intrusif Isolation des composants ( SoC : Separation Of Concerns ) Conventions d'utilisation ( CoC : Convention Over Configuration ) Outils Facile à outiller à terme outillé • Frameworks utilisés : + Laurent Guérin - 31 mars 2009 9
  10. 10. Framework quot;globalquot; • Telosys = framework quot;multi-aspectsquot; = framework quot;globalquot; Un seul quot;.jarquot; ( telosys.jar ) Laurent Guérin - 31 mars 2009 10
  11. 11. Architecture : Telosys seul Suffisant pour réaliser une application web complète Authenti- fication Présentation Application Métier Persistance Services Screen Java Beans Maps ( POJO ) DAO XML conv SQL JSP + taglib Screen AJAX Managers Framework Javascript Services Commons, logging, I18N, … WebApp quot;Pure POJOquot; : Performance classique . aucune adhérence Simplicité ( .war ) . aucune altération du byte code Laurent Guérin - 31 mars 2009 11
  12. 12. Architecture : Telosys + Spring Composants / Services core Authenti- fication IoC + AOP Présentation Application Métier Persistance Services Screen Java Beans Maps ( POJO ) DAO XML conv SQL JSP + taglib Screen AJAX Managers Framework Javascript Commons, logging, I18N, … Laurent Guérin - 31 mars 2009 12
  13. 13. Modularité : assemblage progressif • Les composants sont indépendants • Assemblés progressivement (avancement visible en temps réel par le chef de projet) . Couplage faible . Injection de dépendance . Triggers . Couplage faible . Conventions . AOP Assemblage dynamique Fichiers : Fichiers : . quot;Screens repositoryquot; (XML) . quot;application contextquot; (XML) . quot;ScreenRegistryquot; (Java) . quot;ServiceRegistryquot; (Java) Laurent Guérin - 31 mars 2009 13
  14. 14. Mapping : écran – objets – base de données <%@ taglib uri=quot;/telosys/widgetsquot; prefix=quot;tquot; %> <t:screenbody data=quot;employequot; > JSP + taglib <t:label x=quot;40quot; y=quot;60quot; txt=quot;Code : quot; cl=quot;PK_field_labelquot; /> <t:label x=quot;40quot; y=quot;100quot; txt=quot;Name : quot; /> <t:field x=quot;200quot; y=quot;60quot; id=quot;codequot; data=quot;#quot; size=quot;6quot; maxlength=quot;6quot; /> <t:field x=quot;200quot; y=quot;100quot; id=quot;namequot; data=quot;#quot; size=quot;30quot; maxlength=quot;30quot; /> <t:button x=quot;460quot; y=quot;100quot; id=quot;b1quot; txt=“My buttonquot; onclick=quot;…quot; /> </t:screenbody > ScreenManager ScreenData DAO <employe . code code=quot;quot; quot;employequot; . name mapping EMPLOYE name=quot;quot; /> quot;societequot; . Code ScreenMap XML quot;xxxxquot; . Name JavaBean ( POJO ) Laurent Guérin - 31 mars 2009 14
  15. 15. Les outils Laurent Guérin - 31 mars 2009 15
  16. 16. Orientation Software Factory Software Factory + Contrôle Qualité CheckStyle JDepend JUnit etc … Laurent Guérin - 31 mars 2009 16
  17. 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. 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. 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. 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. 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
  22. 22. Démo avec Eclipse … Laurent Guérin - 31 mars 2009 22
  23. 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. 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
  25. 25. Questions ? Laurent Guérin - 31 mars 2009 25
  26. 26. Quelques liens • Telosys : http://telosys.ow2.org • Spring : http://www.springsource.org/ • OW2 : http://www.ow2.org • Eclipse : http://www.eclipse.org/ • NetBeans : http://www.netbeans.org/ Laurent Guérin - 31 mars 2009 26

×