Top Banner
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]
26

Solutions Linux Développement Rapide Java

Jun 14, 2015

Download

Technology

Laurent Guérin

Conférence salon Solutions Linux 31 mars 2009
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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/