SlideShare a Scribd company logo
1 of 26
Download to read offline
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
Contexte
                          et
                          Industrialisation


Laurent Guérin - 31 mars 2009                 2
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
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
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
L'industrialisation




              Méthode
              Méthode                   Outils
                                        Outils         Framework
                                                       Framework
                  ( agile )            ( efficaces )     ( global )


Laurent Guérin - 31 mars 2009                                         6
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
Les frameworks




Laurent Guérin - 31 mars 2009              8
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
Framework quot;globalquot;

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




                                                 Un seul quot;.jarquot;
                                                 ( telosys.jar )

Laurent Guérin - 31 mars 2009                                      10
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
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
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
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
Les outils




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




 Software
 Factory

 +

 Contrôle
 Qualité
                                       CheckStyle
                                       JDepend
                                       JUnit
                                       etc …
Laurent Guérin - 31 mars 2009                                  16
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
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
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
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
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
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;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
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
Questions ?




Laurent Guérin - 31 mars 2009                 25
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

More Related Content

Viewers also liked

Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Logico
 
Ajax GTI780 & MTI780 ETS A09
Ajax  GTI780 & MTI780  ETS  A09Ajax  GTI780 & MTI780  ETS  A09
Ajax GTI780 & MTI780 ETS A09Claude Coulombe
 
Ajax - GTI780 & MTI780 - ETS - A08
Ajax - GTI780 & MTI780 - ETS - A08Ajax - GTI780 & MTI780 - ETS - A08
Ajax - GTI780 & MTI780 - ETS - A08Claude Coulombe
 
Ajax et Accessibilite
Ajax et AccessibiliteAjax et Accessibilite
Ajax et Accessibilitemikeh
 
Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)Chris Richardson
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Abdelouahed Abdou
 
Apache Tomcat 8 Application Server
Apache Tomcat 8 Application ServerApache Tomcat 8 Application Server
Apache Tomcat 8 Application Servermohamedmoharam
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationTomcat Expert
 
The Emerging Integration Reference Architecture | MuleSoft
The Emerging Integration Reference Architecture | MuleSoftThe Emerging Integration Reference Architecture | MuleSoft
The Emerging Integration Reference Architecture | MuleSoftMuleSoft
 
Tomcat and apache httpd training
Tomcat and apache httpd trainingTomcat and apache httpd training
Tomcat and apache httpd trainingFranck SIMON
 
Costa Rica Current Partner Workshop 2015
Costa Rica Current Partner Workshop 2015Costa Rica Current Partner Workshop 2015
Costa Rica Current Partner Workshop 2015GlobalGiving
 
Anexo 2 PresentacióN
Anexo 2   PresentacióNAnexo 2   PresentacióN
Anexo 2 PresentacióNjona2than
 
2010 made in marseille
2010   made in marseille2010   made in marseille
2010 made in marseilleciffer louis
 

Viewers also liked (20)

Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)Nashorn: JavaScript Running on Java VM (English)
Nashorn: JavaScript Running on Java VM (English)
 
Tomcat server
 Tomcat server Tomcat server
Tomcat server
 
Ajax GTI780 & MTI780 ETS A09
Ajax  GTI780 & MTI780  ETS  A09Ajax  GTI780 & MTI780  ETS  A09
Ajax GTI780 & MTI780 ETS A09
 
Ajax PPT
Ajax PPTAjax PPT
Ajax PPT
 
Werkstuk ajax
Werkstuk ajaxWerkstuk ajax
Werkstuk ajax
 
Ajax - GTI780 & MTI780 - ETS - A08
Ajax - GTI780 & MTI780 - ETS - A08Ajax - GTI780 & MTI780 - ETS - A08
Ajax - GTI780 & MTI780 - ETS - A08
 
Ajax et Accessibilite
Ajax et AccessibiliteAjax et Accessibilite
Ajax et Accessibilite
 
Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)
 
Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)Ajax (Asynchronous JavaScript and XML)
Ajax (Asynchronous JavaScript and XML)
 
Apache Tomcat 8 Application Server
Apache Tomcat 8 Application ServerApache Tomcat 8 Application Server
Apache Tomcat 8 Application Server
 
Introduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 PresentationIntroduction to Apache Tomcat 7 Presentation
Introduction to Apache Tomcat 7 Presentation
 
The Emerging Integration Reference Architecture | MuleSoft
The Emerging Integration Reference Architecture | MuleSoftThe Emerging Integration Reference Architecture | MuleSoft
The Emerging Integration Reference Architecture | MuleSoft
 
Tomcat Server
Tomcat ServerTomcat Server
Tomcat Server
 
Apache tomcat
Apache tomcatApache tomcat
Apache tomcat
 
EJB .
EJB .EJB .
EJB .
 
Introduction à ASP.NET
Introduction à ASP.NETIntroduction à ASP.NET
Introduction à ASP.NET
 
Tomcat and apache httpd training
Tomcat and apache httpd trainingTomcat and apache httpd training
Tomcat and apache httpd training
 
Costa Rica Current Partner Workshop 2015
Costa Rica Current Partner Workshop 2015Costa Rica Current Partner Workshop 2015
Costa Rica Current Partner Workshop 2015
 
Anexo 2 PresentacióN
Anexo 2   PresentacióNAnexo 2   PresentacióN
Anexo 2 PresentacióN
 
2010 made in marseille
2010   made in marseille2010   made in marseille
2010 made in marseille
 

Similar to Solutions Linux Développement Rapide Java

Cas de la refonte de STM.info
Cas de la refonte de STM.infoCas de la refonte de STM.info
Cas de la refonte de STM.infoTP1
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?ekino
 
Documation 2013 - Easy Content Access
Documation 2013 - Easy Content AccessDocumation 2013 - Easy Content Access
Documation 2013 - Easy Content AccessJérémy Prioux
 
Rapport Potier : Briques génériques du logiciel embarqué
Rapport Potier : Briques génériques du logiciel embarquéRapport Potier : Briques génériques du logiciel embarqué
Rapport Potier : Briques génériques du logiciel embarquéalain Clapaud
 
Webschool bourges "le monde de google"
Webschool bourges "le monde de google"Webschool bourges "le monde de google"
Webschool bourges "le monde de google"Webschool Bourges
 
Presentation mug-data mapper
Presentation mug-data mapperPresentation mug-data mapper
Presentation mug-data mapperFastConnect
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanneDidier Durand
 
Virtualisation du Poste de Travail - Desktop as a Service - 16h - Atelier VDI...
Virtualisation du Poste de Travail - Desktop as a Service - 16h - Atelier VDI...Virtualisation du Poste de Travail - Desktop as a Service - 16h - Atelier VDI...
Virtualisation du Poste de Travail - Desktop as a Service - 16h - Atelier VDI...DotRiver
 
Solutions mobiles InterTek Ingénierie
Solutions mobiles InterTek IngénierieSolutions mobiles InterTek Ingénierie
Solutions mobiles InterTek IngénieriePhilippe Jeandroz
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Presentation BMIA
Presentation BMIAPresentation BMIA
Presentation BMIAPMarsaud
 
Soft fluent@md day2011
Soft fluent@md day2011Soft fluent@md day2011
Soft fluent@md day2011MDDAY11
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapresLaurent Tardif
 
Ingénierie dirigée par les modèles RTaW
Ingénierie dirigée par les modèles RTaWIngénierie dirigée par les modèles RTaW
Ingénierie dirigée par les modèles RTaWRealTime-at-Work (RTaW)
 
Outillage pour Windows 8 XAML
Outillage pour Windows 8 XAMLOutillage pour Windows 8 XAML
Outillage pour Windows 8 XAMLMicrosoft
 

Similar to Solutions Linux Développement Rapide Java (20)

Cas de la refonte de STM.info
Cas de la refonte de STM.infoCas de la refonte de STM.info
Cas de la refonte de STM.info
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
Documation 2013 - Easy Content Access
Documation 2013 - Easy Content AccessDocumation 2013 - Easy Content Access
Documation 2013 - Easy Content Access
 
Agl2012
Agl2012Agl2012
Agl2012
 
Rapport Potier : Briques génériques du logiciel embarqué
Rapport Potier : Briques génériques du logiciel embarquéRapport Potier : Briques génériques du logiciel embarqué
Rapport Potier : Briques génériques du logiciel embarqué
 
Stratégie Logicielle Sun Aquarium Paris
Stratégie Logicielle Sun Aquarium ParisStratégie Logicielle Sun Aquarium Paris
Stratégie Logicielle Sun Aquarium Paris
 
Webschool bourges "le monde de google"
Webschool bourges "le monde de google"Webschool bourges "le monde de google"
Webschool bourges "le monde de google"
 
Presentation mug-data mapper
Presentation mug-data mapperPresentation mug-data mapper
Presentation mug-data mapper
 
10 ans de l'Adullact
10 ans de l'Adullact10 ans de l'Adullact
10 ans de l'Adullact
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne
 
Virtualisation du Poste de Travail - Desktop as a Service - 16h - Atelier VDI...
Virtualisation du Poste de Travail - Desktop as a Service - 16h - Atelier VDI...Virtualisation du Poste de Travail - Desktop as a Service - 16h - Atelier VDI...
Virtualisation du Poste de Travail - Desktop as a Service - 16h - Atelier VDI...
 
Solutions mobiles InterTek Ingénierie
Solutions mobiles InterTek IngénierieSolutions mobiles InterTek Ingénierie
Solutions mobiles InterTek Ingénierie
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Ecm Open Source
Ecm Open SourceEcm Open Source
Ecm Open Source
 
Presentation BMIA
Presentation BMIAPresentation BMIA
Presentation BMIA
 
Soft fluent@md day2011
Soft fluent@md day2011Soft fluent@md day2011
Soft fluent@md day2011
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapres
 
Ingénierie dirigée par les modèles RTaW
Ingénierie dirigée par les modèles RTaWIngénierie dirigée par les modèles RTaW
Ingénierie dirigée par les modèles RTaW
 
CV-Elhassane-NAIM-FR
CV-Elhassane-NAIM-FRCV-Elhassane-NAIM-FR
CV-Elhassane-NAIM-FR
 
Outillage pour Windows 8 XAML
Outillage pour Windows 8 XAMLOutillage pour Windows 8 XAML
Outillage pour Windows 8 XAML
 

More from Laurent Guérin

Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Laurent Guérin
 
My web application in 20 minutes with Telosys
My web application in 20 minutes with Telosys My web application in 20 minutes with Telosys
My web application in 20 minutes with Telosys Laurent Guérin
 
Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019Laurent Guérin
 
Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...Laurent Guérin
 
MQTT avec Mosquitto et Paho - DevFest Brest 2019
MQTT avec Mosquitto et Paho - DevFest Brest 2019MQTT avec Mosquitto et Paho - DevFest Brest 2019
MQTT avec Mosquitto et Paho - DevFest Brest 2019Laurent Guérin
 
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018Laurent Guérin
 
Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1Laurent Guérin
 
DevOps MeetUp NL - Docker (Oct 2014)
DevOps MeetUp NL - Docker (Oct 2014)DevOps MeetUp NL - Docker (Oct 2014)
DevOps MeetUp NL - Docker (Oct 2014)Laurent Guérin
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Laurent Guérin
 
Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1Laurent Guérin
 
Genie logiciel eseo-v1.1-1spp
Genie logiciel eseo-v1.1-1sppGenie logiciel eseo-v1.1-1spp
Genie logiciel eseo-v1.1-1sppLaurent Guérin
 
Devoxx 2011 - Scaffolding with Telosys
Devoxx 2011 - Scaffolding with TelosysDevoxx 2011 - Scaffolding with Telosys
Devoxx 2011 - Scaffolding with TelosysLaurent Guérin
 
Open World Forum 2009 Migration With Telosys
Open World Forum 2009 Migration With TelosysOpen World Forum 2009 Migration With Telosys
Open World Forum 2009 Migration With TelosysLaurent Guérin
 

More from Laurent Guérin (13)

Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
 
My web application in 20 minutes with Telosys
My web application in 20 minutes with Telosys My web application in 20 minutes with Telosys
My web application in 20 minutes with Telosys
 
Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019Telosys project booster Paris Open Source Summit 2019
Telosys project booster Paris Open Source Summit 2019
 
Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...Telosys tutorial - Code generation for a Python web application based on Bott...
Telosys tutorial - Code generation for a Python web application based on Bott...
 
MQTT avec Mosquitto et Paho - DevFest Brest 2019
MQTT avec Mosquitto et Paho - DevFest Brest 2019MQTT avec Mosquitto et Paho - DevFest Brest 2019
MQTT avec Mosquitto et Paho - DevFest Brest 2019
 
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018
MQTT avec Mosquitto et Paho - Laurent Guerin - JUG Nantes Nov 2018
 
Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1Sogeti labs developer-today-v1.1
Sogeti labs developer-today-v1.1
 
DevOps MeetUp NL - Docker (Oct 2014)
DevOps MeetUp NL - Docker (Oct 2014)DevOps MeetUp NL - Docker (Oct 2014)
DevOps MeetUp NL - Docker (Oct 2014)
 
Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2Telosys tools jug-nantes-2014-v1.2
Telosys tools jug-nantes-2014-v1.2
 
Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1Bean Validation - Cours v 1.1
Bean Validation - Cours v 1.1
 
Genie logiciel eseo-v1.1-1spp
Genie logiciel eseo-v1.1-1sppGenie logiciel eseo-v1.1-1spp
Genie logiciel eseo-v1.1-1spp
 
Devoxx 2011 - Scaffolding with Telosys
Devoxx 2011 - Scaffolding with TelosysDevoxx 2011 - Scaffolding with Telosys
Devoxx 2011 - Scaffolding with Telosys
 
Open World Forum 2009 Migration With Telosys
Open World Forum 2009 Migration With TelosysOpen World Forum 2009 Migration With Telosys
Open World Forum 2009 Migration With Telosys
 

Solutions Linux Développement Rapide Java

  • 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
  • 6. L'industrialisation Méthode Méthode Outils Outils Framework Framework ( agile ) ( efficaces ) ( global ) Laurent Guérin - 31 mars 2009 6
  • 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
  • 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. 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. 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. 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. 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. 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. Les outils Laurent Guérin - 31 mars 2009 15
  • 16. Orientation Software Factory Software Factory + Contrôle Qualité CheckStyle JDepend JUnit etc … Laurent Guérin - 31 mars 2009 16
  • 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
  • 22. Démo avec Eclipse … Laurent Guérin - 31 mars 2009 22
  • 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
  • 25. Questions ? Laurent Guérin - 31 mars 2009 25
  • 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