26
1 Développement rapide AJAX / JEE avec un outillage libre Laurent Guérin . SOGETI : National Practice Leader "Open Solutions" . OW2 : Telosys project leader [email protected]

Solutions Linux Développement Rapide Java

Embed Size (px)

DESCRIPTION

Conférence salon Solutions Linux 31 mars 2009

Citation preview

Page 1: Solutions Linux Développement Rapide Java

1

Développement rapideAJAX / JEEavec un outillage libre

Laurent Guérin. SOGETI : National Practice Leader "Open Solutions" . OW2 : Telosys project leader [email protected]

Page 2: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009 2

Contexte et Industrialisation

Page 3: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

La problématique de la productivité

3

Pro

du

ctiv

ité

Années

1970 1980 1990 2000

Client -

serveur

L4G

Web

COBOLC/C++

n-tiers

L3G

Complexitétechniqueencore tropimportante !

Page 4: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

La complexité des environnements

4

persis-tence

services métier

objets métier

façade appli-cation

navi-gation

navigateur

HTML, CSS JavaScript,DOM, DHTML,XML/XSL, …

Java

Design Patterns

UML

SQL

L3G !

Rése

au

Nombreux frameworks (hétérogènes)Compétences multiples

AJAX

jar hell !dépendances !

IHM riche !

Page 5: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Problèmes & objectifs

5

. Assemblage de solutions hétérogènes. Multiplication des ".jar". Objets non transverses ( => mapping inter-couches ). Multiplication des objets( pb d'empreinte mémoire ). Code technique ( sans valeur ajoutée ). Perte de contrôle sur la couche de persistance. Couche AJAX non intégrée. etc …

. Simplifier l'environnement de développement. Assister le développeur . Alléger le processus de développement. Réduire de "code technique". Homogénéiser. Standardiser . Cadrer

La complexitéappelle la complexité !

Simplicité& Agilité

Page 6: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

L'industrialisation

6

Méthode Méthode Outils Outils Framework Framework

( agile ) ( efficaces ) ( global )

Page 7: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Projets Java EE Open Source

7

• Infrastructure et middlewares :� Linux

� Apache

� Tomcat

� MySQL ( ou PostgreSQL )

• Frameworks� Telosys

� Spring

• IDE� Eclipse ( ou NetBeans )

� Outils de génération de code

100 %libre

100 %simple

Page 8: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009 8

Les frameworks

Page 9: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Le "cadre"

9

• Framework = "cadre"( doit guider le développeur )

• Qualités recherchées :� Souplesse, adaptabilité

� Non intrusif

� Isolation des composants ( SoC : Separation Of Concerns )

� Conventions d'utilisation ( CoC : Convention Over Configuration )

� Facile à outiller � à terme outillé

• Frameworks utilisés :

. Normes

. Conventions

. Best pratices

Outils

+

Page 10: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Framework "global"

10

• Telosys = framework "multi-aspects"= framework "global"

Un seul ".jar" ( telosys.jar )

Page 11: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Persistance

Architecture : Telosys seul

11

Présentation Application

ScreenMaps

Services

ScreenManagers

Métier

DAO

Java Beans( POJO )

XML conv

Authenti-fication

Commons, logging, I18N, …

AJAXJSP + taglib

FrameworkJavascript

SQL

"Pure POJO" : . aucune adhérence . aucune altération du byte code

Services

Suffisant pour réaliser une application web complète

PerformanceSimplicité

WebAppclassique( .war )

Page 12: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Persistance

Architecture : Telosys + Spring

12

Présentation Application

ScreenMaps

Services

ScreenManagers

Métier

DAO

Java Beans( POJO )

XML conv

Authenti-fication

Commons, logging, I18N, …

AJAXJSP + taglib

FrameworkJavascript

SQL

Composants / Services

coreIoC + AOP

Page 13: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Modularité : assemblage progressif

13

• Les composants sont indépendants

• Assemblés progressivement (avancement visible en temps réel par le chef de projet)

. Injection de dépendance

. Couplage faible

. AOP

Fichiers :. "application context" (XML)

. Couplage faible

. Triggers

. Conventions � Assemblage dynamique

Fichiers :. "Screens repository" (XML). "ScreenRegistry" (Java). "ServiceRegistry" (Java)

Page 14: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

ScreenData

Mapping : écran – objets – base de données

14

<%@ taglib uri="/telosys/widgets" prefix="t" %><t: screenbody data= "employe" >

<t: label x="40" y="60" txt="Code : " cl="PK_field_label" / > <t: label x="40" y="100" txt="Name : " />

<t: field x="200" y="60" id= "code" data=" #" size="6" maxlength="6" /> <t: field x="200" y="100" id= "name" data=" #" size="30" maxlength="30" />

<t: button x="460" y="100" id="b1" txt=“My button" onclick="…" />

</t: screenbody >

. code

. name"employe"

"societe"

"xxxx"

DAO

mappingEMPLOYE. Code. Name

ScreenManager

XML

<employecode="" name="" />

JSP + taglib

ScreenMap

JavaBean( POJO )

Page 15: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009 15

Les outils

Page 16: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Orientation Software Factory

16

Software Factory

+

Contrôle Qualité

���� CheckStyle���� JDepend���� JUnit���� etc …

Page 17: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Génération de code : principe

17

Fichier"template"

Fichiergénéré

Moteur

Contexte

• Moteur de template :application d'un "template" sur un "contexte"

TemplatinglanguageObjets

Java

VelocityFreeMarkeretc …

.java, .html, .txt, etc…

Page 18: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Génération de code : différentes approches

18

• A partir d'un modèle UML� MDA (exemple "Acceleo")

• A partir d'un modèle non UML ���� notion de "modèle léger" (référentiel)

• Sans autre modèle que les classes Java � pour les cas simples, récupération dynamique des informations utiles (exemple "Java Model" d'Eclipse)

Page 19: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Génération de code : MDA

19

Code

UML

Part

name

Message

name

0..n+part 0..n

Service

name

Port

name

0..n+port 0..nPort Type

nameBinding

name1

+binding

1

1

+type

1

Param

name

1+message 1

Output

Input

StartWithExtensions

BindingFaultFault

name1

+message

11

BindingOperation

name

0..n+operation 0..n0..1 +input0..10..1+output 0..1

0..n

Operation

name0..1

+input

0..10..1

+output

0..1

0..n+fault 0..n

0..n+operation 0..n

11

1

+fault 0..n

Outil MDA

X M I( XML )

Template

Le modèle doit être . à jour. fiable. détaillé

Acceleo (OW2)AndroMDAetc …

Modélisation UML :. Objets Métiers. Services Métiers

Génération de la"couche métier"

Page 20: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Génération de code : "référentiel léger"

20

Fichiers.vm

Classes.java

Référentiel.dbrep

( XML )

Velocity

Contexte

Génération

du référentiel

Générationde code

Générationde squelettesde classes

Wizards

Telosys Tools

( plugin )

fiable(toujoursà jour)

ModèlePhysique

Base dedonnées

Page 21: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Développement de plugins Eclipse

2006-2007 : DAO Generator. 1er plugin pour Telosys. Fenêtres modales

2008 : Wizards. Assistants pour faciliter la création des classes Telosys

2007 : Screen Builder( prototype ). 1er plugin avec GEF. Editeur d'écrans WYSIWYG

2009 : Telosys Tools. Générateurs basés sur

des "editors". Assistants ( "wizards" )

Plugins Telosys

Eclipse = plateforme . assemblage de plugins. socle OSGi

Regroupementdes outils nongraphiques(génération decode & assistants)

Le développementde plugins est coûteux

Référentiel � Préserver l'indépendance => EMF

Page 22: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009 22

Démo avec Eclipse …

Page 23: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Intégration dans NetBeans

23

• Prototype en cours de développement

• Pour NetBeans un plugin est un "Module" ( fichier ".nbm" )

• Principe proche d'Eclipse

• Quelques différences :� Plus simple

� Swing ( et non SWT )

� FreeMarker est intégrédans NetBeans

Page 24: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Bilan

24

• Pour développer "avec agilité"� Réduire le nombre de frameworks

� Simplifier l'architecture

� Favoriser l'assemblage de composants indépendants

� Frameworks et outils

� Outils "légers" exemple : génération de code "sans contrainte"

• Surveiller le temps passer à …� gérer les dépendances ( jar hell )

� réaliser/tester du "code technique"

� administrer les outils

Page 25: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009 25

Questions ?

Page 26: Solutions Linux Développement Rapide Java

Laurent Guérin - 31 mars 2009

Quelques liens

26

• 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/