SlideShare une entreprise Scribd logo
App Engine Et
   Guice


                1
Plan
            •   Introduction
            •   Qu’est ce le cloud computing ?
            •   Vue globale de GAE
 Google     •   Architecture
AppEngine   •   Services
            •   Stockage des données


            •   Qu’est ce que Guice ?
 Google     •   Injection de dépendance
 Guice      •   AOP
            •   Conclusion




                                                 2
Introduction




               3
Qu’est ce que le cloud computing?


 •Avec le cloud computing, les utilisateurs ou les
 entreprises ne sont plus gestionnaires de
 leurs serveurs informatiques.
 • Ils peuvent accéder à une multitude de services en
 ligne sans avoir à gérer l'infrastructure inhérente,
 souvent complexe.
 • Les applications et les données ne se trouvent plus
 sur l'ordinateur local mais dans un «cloud »
 •On déploie dans les nuages et ils se débrouillent
 pour que ça marche !




                                                         4
Trois modèles de service

        Infrastructure as a   • Serveurs virtuels
              service         • Architectes réseau


                              • Environnement pour
          Platform as a         déployer une application
             service          • Développeurs
                                d’application

                              • Logiciels web
          Software as a         configurables prêt à être
                                utilisés
             service
                              • Les utilisateurs finaux




                                                            5
Présentation de GAE
 GAE est un service qui permet de déployer des

 applications web sur l’infrastructure Google

 Au début GAE supporte uniquement Python

 Le service Python n’a pas eu un grand succès

 Java était le langage le plus demandé (devant PHP)

 Google a annoncé le support de Java pour GAE le 07 avril

 2009
                                                        6
Présentation de GAE
 Google App Engine propose un conteneur de Servlet

et une base de données qui permettent d'héberger des

application Java sur les serveurs de Google.

  un environnement de développement local complet

qui simule Google App Engine sur votre ordinateur




                                                       7
Présentation de GAE
 Toutes les applications peuvent utiliser jusqu'à 500 Mo

d'espace de stockage, et assez de temps processeur et

de bande passante gratuitement.

  Basé sur des quotas d’utilisation

 Possibilité de limiter le budget quotidien




                                                           8
Pourquoi Google App engine?

                  •   Montée en charge
                  •   Distribution
                  •   Authentifications
                  •   Performance
                  •   Évolutivité
                  •   Coûts réduits




                                   9
Architecture globale
                                                                 Utilisateurs

                   Administrateurs                                         Utilisateurs




                                                 Cloud Computing Google




Déploiement
                                                                                                   Communication



                                                                                          HTTP/S




                         Déploiement




                                         (Stats, logs, Quotas)
                 (Stats, logs, Quotas)




                                                                                                           10
Java ou Python?




 Vous êtes libres !
 La même infrastructure
 Les mêmes services spécialisés
 La même console d’administration

                                    11
appengine-web.xml
  Fichier de configuration de App engine
 Placé dans le répertoire WEB-INF/
 Il inclut :l’identifiant de l’application , numéro de version et
des listes de fichiers statiques (images ou les feuilles de style
CSS …)




                                                             12
Démo
• Les ingrédients:
  – Java 5 ou 6
  – Eclipse 3.3 ou plus
  – Plugin GAE
     • Site (Eclipse): http://dl.google.com/eclipse/plugin/3.x
     • Doc: http://code.google.com/intl/fr/appengine/docs/java/tools/eclipse.html
  – Un compte GAE
     • http://appengine.google.com/

• La recette:
  – Nouveau projet: « Web Application Project »
  – Deploy to App Engine
  – http://xxxxxxx.appspot.com/

                                                                               13
Les services de GAE
 URL Fetch
 Memcache
 Mail
 Image
 XMPP
 Google Accounts
 Cron jobs: Traitements réguliers




                                    14
Les services de GAE


         •Communiquer via http/https




         •Mémoire cache distribuée persistente
         •Service stable, robuste




                                                 15
Les services de GAE

          •Stockage des images.
          •Manipulation des images
                          (rotation, translation….)



          •Pour les envois , on utilise JavaMail
          •L’expéditeur est le compte administrateur
          •Reception des messages sous la forme de
          requêtes HTTP par App Engine qui va les
          transmettre à l’application



                                                  16
Les services de GAE
        •Protocole messagerie instantanée
         •Votre application se connecte aux
         messageries instantannées compatibles
         XMPP (Google Talk)

         •Une URL particulière traite les messages
         entrants

         anything@app-id.appspotchat.com
         App-id@appspot.com




                                                     17
Les services de GAE
    •Service App Engine CRON
     configurer des tâches planifiées qui
    s'exécutent à des heures définies ou à
    intervalles réguliers.
 cron.xml
<cronentries>
<cron>
<url> /tasks/summary</url>
<description> daily summary job </description>
<schedule> every 24 hours</schedule>
</cron>
</cronentries>


                                                 18
Stockage de données
  Le stockage de données s’appuie sur BigTable
  Big table:
• développé en interne par Google
• scalable (capacité de montée en charge)

  Big Table n’est pas
•Une base de données relationnelle classique

  Mais plutôt :
• C’est une base de donnée NoSQL




                                                 19
Stockage de données
        • Dans le Datastore on peut stocker des entités.

        • Une entité se définit par :
          Son genre (Kind)
          Son identifiant
          Un ensemble de propriétés

        • L'application peut exécuter des requêtes sur
          les entités.

         • AppEngine maintient un index pour chaque
            type de requête qu’on peut exécuter dans
            l’application.
   garantir des résultats rapides sur des
   ensembles de données très volumineux             20
Stockage de données
 L’accès aux données:

 •API de bas niveau
 •API de haut niveau Datanucleus : JPA & JDO




                                               21
Fonctionnalités de JPA & JDO non prises en charge


  Relations d'appartenance plusieurs-à-plusieurs
  Requêtes de "jointure".
  Requêtes d'agrégation (GROUP BY, HAVING, SUM,
AVG, MAX, MIN).
  Requêtes polymorphes : Vous ne pouvez pas exécuter
une requête d'une classe pour récupérer des instances
d'une sous-classe.



                                                        22
Stockage de données

   Deux options de stockage de données

High Replication Datastore    Master/Slave

                             •Il réplique les
   •Le type par défaut
                             données de manière
   •les données sont
                             asynchrone dans les
   répliquées dans les
                             centres de données.
   centres de données
                             • un seul centre de
   d’une manière
                             données peut avoir
   synchrone
                             le rôle de maître lors
                             de l'écriture.
                                                      23
Stockage de données




                      24
25
Guice?




C’est un Framework proposé par Google en 2007
Fondé par Bob Lee




                                                26
Guice?

 Un Framework léger d’injection de dépendance pour Java 5

et au dessus

 La version actuelle 3.0 (lancée 4 mars 2011)

 Google Guice est apparu après la solution de Spring
 Développé pour être « meilleur » que Spring IoC

 Utilisé dans la plupart des applications de Google


                                                       27
Guice?
                Les ingrédients
•IOC
•Guice Module
• Injection
•Binding
• Scope
• AOP
• Autres
                                  28
Les injections de dépendances
  Présentation
•Les injections de dépendances ont été inventées par
 Martin Fowler.
• Dérivé du principe d’inversion de contrôle
•Utilisé pour avoir des applications modulaires
•Permet de réduire les dépendances entre les classes
•Utilisé pour la programmation orientée aspect




                                                       29
Les injections de dépendances
  Cas de base:
• Dépendance : utilisation de méthodes d’une autre
classe
•Généralement fait par un « new » dans le code
•Pas modulaire, difficile à maintenir, ne permet pas le
changement




                                                   30
Les injections de dépendances
  Avec une interface
• Permet à la classe A d’utiliser une interface

•Plusieurs implémentations de l’interface

•Toujours un « new » dans le code de A

•Pas beaucoup avancé




                                                  31
Les injections de dépendances
  Avec une factory:
• Un seul «new» de la classe B dans tout le code

•Pattern Factory est lourd à implémenter




                                                   32
Les injections de dépendances avec Guice

  Le principe est simple !
  vous n’avez plus besoin d’instancier les objets ou
d’utiliser des factories, c’est les objets qui viennent à
vous.

  le Framework instancie pour vous et vous n’avez
qu’à les utiliser.




                                                     33
injection de dépendances avec Guice

  Principe de fonctionnement:
•Utilise des abstractModule pour faire la liaison
interfaceimplémentation
•Utilise l’annotation @Inject pour déclarer les classes
à injecter
•Utilise un Injector pour charger le module dans
notre application


                                                    34
injection de dépendances avec Guice

  Principe de fonctionnement (Les modules):

•Étendent la classe AbstractModule de Guice

•Un module peut effectuer plusieurs associations

•Une application peut avoir plusieurs modules

(1module = 1configuration)



                                                   35
injection de dépendances avec Guice
 Principe de fonctionnement (l’injection):


                            injection sur un attribut


Trois formes             injection sur un constructeur


                          injection sur une méthode




                                                         36
injection de dépendances avec Guice

 Principe de fonctionnement (l’injecteur):
• Injecteur Guice pour charger le module dans
notre application
•Injecter les dépendances à sa charge
•Créer une instance de la classe injectée




                                                37
Les scopes
                                Unscoped
                         Créer un objet à chaque
                                utilisation

                              @Singleton
                       créer une seul instance par
                               application
Il existe 4 scopes :
                          @RequestScoped
                       une instance par requête
                             web ou RPC

                           @SessionScoped
                         une instance par http
                                Session
                                                 38
Démo
  Injector    Etudiant



  Module       Filière



 Filière GL
                         39
40
Programmation orientée aspect AOP
C’est un paradigme de programmation qui permet de
séparer les considérations techniques (aspect en anglais)
des descriptions métier dans une application.




                                                        41
Guice AOP
  Comment ça marche ?
• On peut appliquer des méthodes intercepteurs sur
des objets injectés.
•Guice AOP génère des proxies (impersonators)
•Enveloppe un objet cible pour appliquer des aspects
avant et après l’appel à cet objet
•le code entre l’objet et method invocation est appelé
interceptors.



                                                         42
Guice AOP




            43
Integration
 frameworks
    •Struts
    •GIN - GWT
    •Seam
    •Guice and JSF
    •JPA



Mobile
RoboGuice - Guice for Android.
                                 44
Les nouveautés de Guice 3.0
  supporte JSR 330 : une proposition lancée par
Springsource et Google visant à standardiser un jeu
d’annotation pour gérer l’injection de dépendance.

  Building avec Maven

  D’autres annotations:
• @ImplementedBy
• @providedBy
• @Singleton
• @Provides
• @CheckedProvides
• @RequestScoped
• @SessionScoped
.......                                               45
Conclusion
Guice VS Spring
 Spring : le paramétrage des classes se fait via un fichier
de configuration XML
 Guice: se fait directement dans le code via des
annotations.
 Frameworks très similaires

 Spring reste très utilisé pour l’IoC

  Mais lourd et format compliqué

 Guice très léger et plus facile à utiliser
                                                              46
perspectives




                    RoboGuice
RoboGuice est un petit framework permettant d’adapter
Google Guice au cycle de vie particulier des applications
Android. De plus, il ajoute des fonctionnalités
qui simplifient le développement Android.

                                                        47
48

Contenu connexe

PPTX
Formation Google App Engine
PDF
Google App Engine
PPTX
Faire du débordement de charge d’un cluster Windows HPC Server avec Windows A...
PPTX
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
PPTX
Création de visuels personnalisés avec Power BI Visuals CLI
PDF
Windows Azure, plongée en eaux profondes (300)
PPTX
Monter des environnements dev test efficaces avec Windows Azure
PDF
Google End points pour vos applications Android par Didier Girard 3 avril 2013
Formation Google App Engine
Google App Engine
Faire du débordement de charge d’un cluster Windows HPC Server avec Windows A...
Système d’Information à l’Apec : un nouveau coeur de métier mis en place avec...
Création de visuels personnalisés avec Power BI Visuals CLI
Windows Azure, plongée en eaux profondes (300)
Monter des environnements dev test efficaces avec Windows Azure
Google End points pour vos applications Android par Didier Girard 3 avril 2013

En vedette (20)

PPT
PHPConf2010 - Introdução a Search Engine Optimization
PDF
FISL14 - Desmontando uma engine de física
PDF
DigitalHubGO: Search Engine Optimization - SEM
PDF
Condition monitoring case study
PPTX
Search Engine Marketing
PDF
Game Engine Architecture
PDF
App Engine: aplicações escaláveis em poucas horas
PPT
Roary Samsam
PPTX
Google App Engine e Python
PPT
Seo - Search Engine Optimization
PDF
liquid propellant rocket engine (Motor foguete Liquido) part6
PDF
Tendências 2015: Kubernetes & Google Container Engine
PPT
Palestra Search Engine Marketing - Com foco nos resultados
PDF
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
PDF
Introdução ao Desenvolvimento de Jogos
PPTX
Notifications push avec Android
PDF
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
PDF
Marketing online, SEM (Search Engine Marketing)
PPTX
Arduino, Robótica e Computação nas Nuvens
PDF
Criando Jogos 2D com Lua + Corona SDK
PHPConf2010 - Introdução a Search Engine Optimization
FISL14 - Desmontando uma engine de física
DigitalHubGO: Search Engine Optimization - SEM
Condition monitoring case study
Search Engine Marketing
Game Engine Architecture
App Engine: aplicações escaláveis em poucas horas
Roary Samsam
Google App Engine e Python
Seo - Search Engine Optimization
liquid propellant rocket engine (Motor foguete Liquido) part6
Tendências 2015: Kubernetes & Google Container Engine
Palestra Search Engine Marketing - Com foco nos resultados
Aula Desenvolvimento de Jogos - Game Engine (Motor de Jogos)
Introdução ao Desenvolvimento de Jogos
Notifications push avec Android
SOA na Prática – Criando uma Aplicação BPMN com Bonita Open Solution, Mule ES...
Marketing online, SEM (Search Engine Marketing)
Arduino, Robótica e Computação nas Nuvens
Criando Jogos 2D com Lua + Corona SDK
Publicité

Similaire à Google appengine&guice (20)

PPTX
Google App Engine - INTRO
PPTX
Cloud computing cours in power point chap
PDF
Développement d'applications pour la plateforme Java EE
PDF
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
PPTX
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
PPTX
Cloud Computing Démystifié
PPTX
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
PPT
AppEngine
PDF
Saas Libre
PPT
GtugDakar AppEngine, Gwt
PPTX
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
PPTX
Java dans Windows Azure: l'exemple de Jonas
PPTX
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
PDF
Déploiement d’applications
PPTX
Cloud & Google app engine Presentation by Ngiambus Marcus
PDF
CloudUnit le PaaS par TreeptiK
PPTX
Architecturez vos applications mobiles avec Azure et Xamarin
PDF
Sw 100 fr docker conteneurisation des applications
PDF
Développer et déployer dans le cloud
PPT
Formation d'architecte logiciel AFCEPF
Google App Engine - INTRO
Cloud computing cours in power point chap
Développement d'applications pour la plateforme Java EE
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Gab 2017 Lyon - les strategies d'intégration avec Azure iPaaS - Samir Arezki
Cloud Computing Démystifié
Bonita 7.10 - Nathalie Cotté - Bonitaday Paris 2019
AppEngine
Saas Libre
GtugDakar AppEngine, Gwt
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
Java dans Windows Azure: l'exemple de Jonas
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
Déploiement d’applications
Cloud & Google app engine Presentation by Ngiambus Marcus
CloudUnit le PaaS par TreeptiK
Architecturez vos applications mobiles avec Azure et Xamarin
Sw 100 fr docker conteneurisation des applications
Développer et déployer dans le cloud
Formation d'architecte logiciel AFCEPF
Publicité

Plus de Slimen Belhaj Ali (19)

PDF
Solution générique pour la résolution des problèmes statiques de tournées de ...
PPT
BPMN,jBPM,BPEL
PPTX
PPTX
Sécurisation des services WCF avec WS-Security
PPTX
JasperReport
PDF
ERP Universitaire
PPT
PPTX
PPTX
Spring security
PPTX
Spring mvc 3.0 web flow
PPTX
Share point 2010
PPTX
objective C
PPTX
PPTX
Hibernate 3
PPTX
PPTX
Jboss Seam
PPTX
Sonar-Hodson-Maven
PPTX
Administration glassfish 3
Solution générique pour la résolution des problèmes statiques de tournées de ...
BPMN,jBPM,BPEL
Sécurisation des services WCF avec WS-Security
JasperReport
ERP Universitaire
Spring security
Spring mvc 3.0 web flow
Share point 2010
objective C
Hibernate 3
Jboss Seam
Sonar-Hodson-Maven
Administration glassfish 3

Google appengine&guice

  • 1. App Engine Et Guice 1
  • 2. Plan • Introduction • Qu’est ce le cloud computing ? • Vue globale de GAE Google • Architecture AppEngine • Services • Stockage des données • Qu’est ce que Guice ? Google • Injection de dépendance Guice • AOP • Conclusion 2
  • 4. Qu’est ce que le cloud computing? •Avec le cloud computing, les utilisateurs ou les entreprises ne sont plus gestionnaires de leurs serveurs informatiques. • Ils peuvent accéder à une multitude de services en ligne sans avoir à gérer l'infrastructure inhérente, souvent complexe. • Les applications et les données ne se trouvent plus sur l'ordinateur local mais dans un «cloud » •On déploie dans les nuages et ils se débrouillent pour que ça marche ! 4
  • 5. Trois modèles de service Infrastructure as a • Serveurs virtuels service • Architectes réseau • Environnement pour Platform as a déployer une application service • Développeurs d’application • Logiciels web Software as a configurables prêt à être utilisés service • Les utilisateurs finaux 5
  • 6. Présentation de GAE GAE est un service qui permet de déployer des applications web sur l’infrastructure Google Au début GAE supporte uniquement Python Le service Python n’a pas eu un grand succès Java était le langage le plus demandé (devant PHP) Google a annoncé le support de Java pour GAE le 07 avril 2009 6
  • 7. Présentation de GAE Google App Engine propose un conteneur de Servlet et une base de données qui permettent d'héberger des application Java sur les serveurs de Google. un environnement de développement local complet qui simule Google App Engine sur votre ordinateur 7
  • 8. Présentation de GAE Toutes les applications peuvent utiliser jusqu'à 500 Mo d'espace de stockage, et assez de temps processeur et de bande passante gratuitement. Basé sur des quotas d’utilisation Possibilité de limiter le budget quotidien 8
  • 9. Pourquoi Google App engine? • Montée en charge • Distribution • Authentifications • Performance • Évolutivité • Coûts réduits 9
  • 10. Architecture globale Utilisateurs Administrateurs Utilisateurs Cloud Computing Google Déploiement Communication HTTP/S Déploiement (Stats, logs, Quotas) (Stats, logs, Quotas) 10
  • 11. Java ou Python? Vous êtes libres ! La même infrastructure Les mêmes services spécialisés La même console d’administration 11
  • 12. appengine-web.xml Fichier de configuration de App engine Placé dans le répertoire WEB-INF/ Il inclut :l’identifiant de l’application , numéro de version et des listes de fichiers statiques (images ou les feuilles de style CSS …) 12
  • 13. Démo • Les ingrédients: – Java 5 ou 6 – Eclipse 3.3 ou plus – Plugin GAE • Site (Eclipse): http://dl.google.com/eclipse/plugin/3.x • Doc: http://code.google.com/intl/fr/appengine/docs/java/tools/eclipse.html – Un compte GAE • http://appengine.google.com/ • La recette: – Nouveau projet: « Web Application Project » – Deploy to App Engine – http://xxxxxxx.appspot.com/ 13
  • 14. Les services de GAE URL Fetch Memcache Mail Image XMPP Google Accounts Cron jobs: Traitements réguliers 14
  • 15. Les services de GAE •Communiquer via http/https •Mémoire cache distribuée persistente •Service stable, robuste 15
  • 16. Les services de GAE •Stockage des images. •Manipulation des images (rotation, translation….) •Pour les envois , on utilise JavaMail •L’expéditeur est le compte administrateur •Reception des messages sous la forme de requêtes HTTP par App Engine qui va les transmettre à l’application 16
  • 17. Les services de GAE •Protocole messagerie instantanée •Votre application se connecte aux messageries instantannées compatibles XMPP (Google Talk) •Une URL particulière traite les messages entrants anything@app-id.appspotchat.com App-id@appspot.com 17
  • 18. Les services de GAE •Service App Engine CRON configurer des tâches planifiées qui s'exécutent à des heures définies ou à intervalles réguliers. cron.xml <cronentries> <cron> <url> /tasks/summary</url> <description> daily summary job </description> <schedule> every 24 hours</schedule> </cron> </cronentries> 18
  • 19. Stockage de données Le stockage de données s’appuie sur BigTable Big table: • développé en interne par Google • scalable (capacité de montée en charge) Big Table n’est pas •Une base de données relationnelle classique Mais plutôt : • C’est une base de donnée NoSQL 19
  • 20. Stockage de données • Dans le Datastore on peut stocker des entités. • Une entité se définit par : Son genre (Kind) Son identifiant Un ensemble de propriétés • L'application peut exécuter des requêtes sur les entités. • AppEngine maintient un index pour chaque type de requête qu’on peut exécuter dans l’application. garantir des résultats rapides sur des ensembles de données très volumineux 20
  • 21. Stockage de données L’accès aux données: •API de bas niveau •API de haut niveau Datanucleus : JPA & JDO 21
  • 22. Fonctionnalités de JPA & JDO non prises en charge Relations d'appartenance plusieurs-à-plusieurs Requêtes de "jointure". Requêtes d'agrégation (GROUP BY, HAVING, SUM, AVG, MAX, MIN). Requêtes polymorphes : Vous ne pouvez pas exécuter une requête d'une classe pour récupérer des instances d'une sous-classe. 22
  • 23. Stockage de données Deux options de stockage de données High Replication Datastore Master/Slave •Il réplique les •Le type par défaut données de manière •les données sont asynchrone dans les répliquées dans les centres de données. centres de données • un seul centre de d’une manière données peut avoir synchrone le rôle de maître lors de l'écriture. 23
  • 25. 25
  • 26. Guice? C’est un Framework proposé par Google en 2007 Fondé par Bob Lee 26
  • 27. Guice? Un Framework léger d’injection de dépendance pour Java 5 et au dessus La version actuelle 3.0 (lancée 4 mars 2011) Google Guice est apparu après la solution de Spring Développé pour être « meilleur » que Spring IoC Utilisé dans la plupart des applications de Google 27
  • 28. Guice? Les ingrédients •IOC •Guice Module • Injection •Binding • Scope • AOP • Autres 28
  • 29. Les injections de dépendances Présentation •Les injections de dépendances ont été inventées par Martin Fowler. • Dérivé du principe d’inversion de contrôle •Utilisé pour avoir des applications modulaires •Permet de réduire les dépendances entre les classes •Utilisé pour la programmation orientée aspect 29
  • 30. Les injections de dépendances Cas de base: • Dépendance : utilisation de méthodes d’une autre classe •Généralement fait par un « new » dans le code •Pas modulaire, difficile à maintenir, ne permet pas le changement 30
  • 31. Les injections de dépendances Avec une interface • Permet à la classe A d’utiliser une interface •Plusieurs implémentations de l’interface •Toujours un « new » dans le code de A •Pas beaucoup avancé 31
  • 32. Les injections de dépendances Avec une factory: • Un seul «new» de la classe B dans tout le code •Pattern Factory est lourd à implémenter 32
  • 33. Les injections de dépendances avec Guice Le principe est simple ! vous n’avez plus besoin d’instancier les objets ou d’utiliser des factories, c’est les objets qui viennent à vous. le Framework instancie pour vous et vous n’avez qu’à les utiliser. 33
  • 34. injection de dépendances avec Guice Principe de fonctionnement: •Utilise des abstractModule pour faire la liaison interfaceimplémentation •Utilise l’annotation @Inject pour déclarer les classes à injecter •Utilise un Injector pour charger le module dans notre application 34
  • 35. injection de dépendances avec Guice Principe de fonctionnement (Les modules): •Étendent la classe AbstractModule de Guice •Un module peut effectuer plusieurs associations •Une application peut avoir plusieurs modules (1module = 1configuration) 35
  • 36. injection de dépendances avec Guice Principe de fonctionnement (l’injection): injection sur un attribut Trois formes injection sur un constructeur injection sur une méthode 36
  • 37. injection de dépendances avec Guice Principe de fonctionnement (l’injecteur): • Injecteur Guice pour charger le module dans notre application •Injecter les dépendances à sa charge •Créer une instance de la classe injectée 37
  • 38. Les scopes Unscoped Créer un objet à chaque utilisation @Singleton créer une seul instance par application Il existe 4 scopes : @RequestScoped une instance par requête web ou RPC @SessionScoped une instance par http Session 38
  • 39. Démo Injector Etudiant Module Filière Filière GL 39
  • 40. 40
  • 41. Programmation orientée aspect AOP C’est un paradigme de programmation qui permet de séparer les considérations techniques (aspect en anglais) des descriptions métier dans une application. 41
  • 42. Guice AOP Comment ça marche ? • On peut appliquer des méthodes intercepteurs sur des objets injectés. •Guice AOP génère des proxies (impersonators) •Enveloppe un objet cible pour appliquer des aspects avant et après l’appel à cet objet •le code entre l’objet et method invocation est appelé interceptors. 42
  • 43. Guice AOP 43
  • 44. Integration frameworks •Struts •GIN - GWT •Seam •Guice and JSF •JPA Mobile RoboGuice - Guice for Android. 44
  • 45. Les nouveautés de Guice 3.0 supporte JSR 330 : une proposition lancée par Springsource et Google visant à standardiser un jeu d’annotation pour gérer l’injection de dépendance. Building avec Maven D’autres annotations: • @ImplementedBy • @providedBy • @Singleton • @Provides • @CheckedProvides • @RequestScoped • @SessionScoped ....... 45
  • 46. Conclusion Guice VS Spring Spring : le paramétrage des classes se fait via un fichier de configuration XML Guice: se fait directement dans le code via des annotations. Frameworks très similaires Spring reste très utilisé pour l’IoC Mais lourd et format compliqué Guice très léger et plus facile à utiliser 46
  • 47. perspectives RoboGuice RoboGuice est un petit framework permettant d’adapter Google Guice au cycle de vie particulier des applications Android. De plus, il ajoute des fonctionnalités qui simplifient le développement Android. 47
  • 48. 48