Solutions Linux Développement Rapide Java

1,698 views

Published on

Conférence salon Solutions Linux 31 mars 2009

Published in: Technology, Business
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,698
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
51
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

×