spring roo _presentation

34
Groupe ALTEN Fès shore Département : Systèmes d’information Présentation : Réalisé par : Jeudi 13 Juillet 2017 Brahmi Ismail

Upload: ismail-brahmi

Post on 22-Jan-2018

64 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Spring roo _Presentation

Groupe ALTEN

Fès shore

Département : Systèmes d’information

Présentation :

Réalisé par :

Jeudi 13 Juillet 2017

Brahmi Ismail

Page 2: Spring roo _Presentation

Plan

Motivation

Spring roo et AspectJ

Spring roo par l’exemple

Présentation de Spring roo

Configuration de Spring roo

Les commandes avec Spring roo

Exécution de l’exemple

2Conclusion

Page 3: Spring roo _Presentation

Plan

Motivation

Spring roo et AspectJ

Spring roo par l’exemple

Présentation de Spring roo

Configuration de Spring roo

Les commandes aves Spring roo

Exécution de l’exemple

3Conclusion

Page 4: Spring roo _Presentation

Motivation

L’amélioration de la productivité des développeurs est toujours

une nécessité incontournable et inévitable .

CRUD-Clients

Développement

Rapidité de Réalisation

Langage orienté

objet: java, Spring..

RAD

Create, Read,

Update,Delete

Comment faire pour

s’assurer l’intégrité

et la flexibilité ?

???

4

Page 5: Spring roo _Presentation

Plan

Motivation

Les commandes avec Spring roo

Spring roo par l’exemple

Présentation du Spring roo

Configuration de Spring roo

Spring roo et Aspect j

Exécution de l’exemple

5Conclusion

Page 6: Spring roo _Presentation

Explication du problème

6

Besoin :

L’utilisation d’un outil convention-over-configuration : codage

par convention pour diminuer le nombre de décisions qu’un

développeur doit prendre .

Procédure :

Créer et construire rapidement une application web.

Générer facilement le code java et les fichiers organisées autour du

projet.

Première solution :

Se diriger vers des solutions existantes en autre langages (

développement en Ruby on Rails ,Grails).

Faire réaliser toutes les taches de création traditionnellement ainsi les

opérations de base : CRUD * et DAO**.

Page 7: Spring roo _Presentation

Description

Pour démarrer un nouveau projet il faut tout d’abord :

public class Obj {

private int id;

private String name;

public Obj(){

}

public Obj(String name) {

this.name = name;

}

public void setId(int i) {

id = i;

}

….

}

Id name

.. ..

… ..

… ..

Donc on doit tout effectuer d’une manière

classique pour démarrer notre projet.

7

1.Créer ce projet

2.Decider une base de données

3.Creer les objets du domaine

(contrôleurs , vues, tests…).

Page 8: Spring roo _Presentation

Conséquences

8

Problème du temps :

Ajouter un contrôle de la sécurité et de l’accès.

Gérer les cas limites , les exceptions et les logs.

Problème au niveau du code :

Apres avoir démarrer et structurer le projet commence la phase de

développement :

La structure du code varie d’un développeur à l’autre chacun a ses

propres méthodes et pratiques de programmation .

Code fastidieux, dupliqué, et illisible….

Cela prend beaucoup de temps pour structurer le démarrage d’un nouveau

projet, une journée tout au mieux .

Code raisonné différemment et non standardisé

Page 9: Spring roo _Presentation

Solution ?

ROO : Real Object Oriented

SQL

ligne

attribut

encapsulation

9

Page 10: Spring roo _Presentation

Solution optimale

10

Mettre en place un outil pratique pour accélérer le démarrage d’un projet.

Se concentrer sur le projet plutôt que sa configuration.

Proposer une interface type terminale toute simple.

Avoir un code bien structuré et synthétisé .

N.B : Il d’autres outils de real object oriented le plus

connu : Grails de Ruby on Rails.

Utiliser les outils de real object oriented permettant une bonne

gestion du temps et une bonne génération du code. .

Spring roo

Page 11: Spring roo _Presentation

Plan

Motivation

Les commandes avec Spring roo

Spring roo par l’exemple

Présentation de Spring roo

Configuration de Spring roo

Spring roo et Aspect j

Exécution de l’exemple

11Conclusion

Page 12: Spring roo _Presentation

Spring roo : c’est un outil de développement rapide en ligne de

commandes qui permet de faire gagner un temps précieux aux

développeurs d’applications basées sur Spring .

Il estproposé par Ben Alex, l’un des contributeurs de la société SpringSource.

Il est basé sur un générateur du code aller-routeur (round-trip code generator).

C’est quoi Spring roo ?

12

Il aide a gérer l’infrastructure et le paramétrage de l’application développée.

Il est intelligent en aidant pas-a-pas dans la conception de l’application développée en

utilisant deux commandes: hint et help.

Il est fait d’un projet incrémental, ajout et suppression de technologies a tout moment.

Page 13: Spring roo _Presentation

Pourquoi utiliser Spring roo?

Productivité Accrue

Basé sur des standards Java et Spring.

Utilisable et programmable (sensibilisation, propositions).

Interface de type terminale simple.

Facile à supprimer (n’existe pas à l’ exécution).

13

Page 14: Spring roo _Presentation

Historique & Versions :

14

Spring roo a été proposé le 27 avril 2009 par Gavin King avec

des collègues de Cirrus Technologies.

En décembre 2003, La version 1.0.0.RELEASE a été

publiée.

En Octobre 2010 La version 1.1.0, a été déplacée vers une base

OSGi.

En 2014, DSID a fournit le type de développement RAD.

En mars 2017, Spring roo 2.0.0 final a été publié.

Page 15: Spring roo _Presentation

Historique & Versions :

15

Version : Spring Roo 1.X :

Architecture Active Record.

Code généré doit être simple a personnaliser.

Version : Spring Roo 2.0 :

code facile a personnaliser

concentre sur des nouvelles technologies

Page 16: Spring roo _Presentation

Plan

Motivation

Les commandes

Spring roo par l’exemple

Présentation du Spring roo

Configuration du Spring roo

Les requêtes avec Spring roo

Exécution de l’exemple

16Conclusion

Page 17: Spring roo _Presentation

17

L’implémentation de roo?

Page 18: Spring roo _Presentation

Description :

Roo est basé sur des Add-ons, ces derniers vont mettre a jour tous les fichier

du projet, grâce notamment a des annotations.

Les commandes permettent de générer le squelette des applications MVC, ce

code est sou forme de fichiers .java et .aj pour la partie Aspect.

Les fichiers sont organises autour d’un projet maven pour gérer la

dépendance (son fichier pom.xml contient toutes les dépendances et

configurations requises).

Le Développement est en time , roo ne peut pas ralentir le projet lors de

l’exécution in RunTime donc c’est pas un framework.

Page 19: Spring roo _Presentation

Plan

Motivation

Spring roo et AspectJ

Spring roo par l’exemple

Présentation du Spring roo

Configuration du Spring roo

Les commandes avec Spring roo

Exécution de l’exemple

19Conclusion

Page 20: Spring roo _Presentation

20

Technologies compatibles

IDE Eclipse

Apache Maven.

Apache Tomcat

Aspectj Développement Tools.

Nouvelles vues : Tymeleaf, Bootstrap, JQuery

Page 21: Spring roo _Presentation

Télécharger roo sur le site Spring.

Installation de Jdk,

Installation de Apache maven 2.0.9 ou plus.

Utilisation du SpringSource Tools STS comme IDE de

spring base sur eclipse.

21

Préparation de l’IDE

Page 22: Spring roo _Presentation

Plan

Motivation

Spring roo et Aspectj

Spring roo par l’exemple

Présentation de Spring roo

Configuration de Spring roo

Les commandes avec Spring roo

Exécution de l’exemple

22Conclusion

Page 23: Spring roo _Presentation

AspectJ c’est quoi ?

AspectJ est une extension de la proframmation orientée aspect (AOP) créé

pour la programmation en langage java.

Tout programme java est comaptible AspectJ, permet de déclarer des

instruction spéciales.

Intègre les déclarations inter-types pour introduire des méthodes, champs ou

interfaces à des classes existantes depuis aspects.

Exemple: Ajouter la methode acceptVisitor() à la classe Point.

23

Page 24: Spring roo _Presentation

Spring roo et AspectJ

Roo est basé sur l’AOP à travers le framework AspectJ.

Le code généré est séparé en un fichier souche minimaliste et en plusieurs

fichiers d’aspects qui sont assemblés par le processeur AspectJ .

Cette séparation rend possible la génération du code et l’écriture manuelle en

parallèle.

Voici un exemple de souche de code :

Les tags de type @RooXXX (annotations)

ne persiste pas dans le bytcode et permettent

d’effectuer le lien avec les aspects au moment

de la compilation.

24

Page 25: Spring roo _Presentation

•@RooJavaBean : Annote une classe, et génère ses getters et setters.

•@RooToString : Annote une classe, et génère sa méthode toString().

•@RooJpaEntity : Annote une classe. Elle permet de générer automatiquement

certains éléments de configuration de Mapping JPA.

Spring Roo inclue de nombreuses annotations, qui vont prendre en charge une partie

de la génération de votre code, grâce à la programmation par aspects.

Il suffit d’annoter les éléments nécessaires et de démarrer Roo Shell, pour que celui-ci

s’occupe du reste : il génère simplement des fichiers .aj pour compléter le code.

Annotations du Spring roo :

Page 26: Spring roo _Presentation

26

Processus d’un compiler AspectJ:

Le compiler AspectJ va se charger de lire les fichiers Java et AspectJ pour former un

fichier .class.

Page 27: Spring roo _Presentation

Plan

Motivation

Spring roo et Aspectj

Spring roo par l’exemple

Présentation de Spring roo

Configuration de Spring roo

Les commandes avec Spring roo

Exécution de l’exemple

27Conclusion

Page 28: Spring roo _Presentation

28

Commandes Spring roo

Les Commandes de base :

• hint : connaitre les actions possibles à l’instant présent.

• help : Affiche l’aide du systeme.

• jpa setup : installer ou mettre à jour une nouvelle persistante JPA avec un

fournisseur (Hibernate par exemple).

• entity jpa : créer les objets du domaine c une entité persistante

• field: Ajouter des champs aux objets du domaine

• filed reference : créer une relation entre les objets du domaine.

• filed set : ajouter une relation entre les objets du domaine.

• web mvc setup : Ajouter les éléments pour utiliser Spring mvc (tags, jspx,

webmvc.xml,…)

• web mvc all : Générer les contrôleurs et tous les web artifacts

• perform tests : Lancer les tests d’ intégrations.

Page 29: Spring roo _Presentation

A voir sur STS !

Démonstration

29

Page 30: Spring roo _Presentation

Plan

Motivation

Configuration de Hibernate

Présentation de Hibernate

Object Relational Mapping

Hibernate par l’exemple

Les requêtes avec Hibernate

Conclusion

30

Exécution de l’exemple

Page 31: Spring roo _Presentation

La productivité: code généré sur des fichiers séparés, indépendant

du projet, et incrémental.

La simplification : de nombreuses ligne de commandes sont simple

a apprendre de plus ont suggérées a l’aide de l’auto complétude.

La performance : l’optimisation des commandes, rapide, exécution

performante non affectée par roo .

La Portabilité : open source (gratuit), et applicable sur les Ses,

compatible avec d’autres technologies java ee.

31

Conclusion

Page 32: Spring roo _Presentation

32

Conclusion

Productivité

Simplification

Performance

Portabilité

Spring roo est une révolution dans le monde développent java, c’est

une passerelle efficace entre la rapidité et l’efficacité rend Java EE

facile à utiliser .

Page 33: Spring roo _Presentation

GitHub :

https://github.com/DISID/gvnix-samples/tree/master/quickstart-

app#create-a-new-project/ [1,2,…,8] Last updated : [28/12/2016].

Spring Framework:

http://docs.spring.io/spring-roo/reference/html/beginning.html [9,…,21]

Last visited : [12/07/2017].

Igm.univ:

http://igm.univ-

mlv.fr/~dr/XPOSE2010/SpringRoo_CERQUEIRA_David/index.html

[**] Last visited : [12/07/2017].

Autres :

Lynda,Udemy,Easy-b, OppenClassrooms, etc.

33

Références

Page 34: Spring roo _Presentation

Merci pour votre

attention