Upgrade to Pro — share decks privately, control downloads, hide ads and more …

play_cours_corrected.pdf

Avatar for badock badock
November 12, 2012
59

 play_cours_corrected.pdf

Avatar for badock

badock

November 12, 2012

Transcript

  1. OBJECTIF DU MODULE • Initiation au développement d’applications WEB avec

    des frameworks “modernes” • Avoir une première expérience du prototypage d’applications web • Introduire des outils de développement rapide d’applications (RAD) avec des frameworks légers • Déterminer le bon outil en fonction de la problématique JEE très (trop?) riche vs Play/RoR moins riches (pour le moment) • Etre capable de développer un site web pour un usage personnel Sunday, October 28, 12
  2. PLAY! • Frameworks web de RAD (Rapid Application Developpement) inspiré

    de Ruby on Rails • Premier développement en 2007 par Guillaume Bot • Simplifier l’écriture d’applications web basées sur Java • Succès rapide auprès des startups • Il existe deux versions: 1.2.5 (Java) et 2.0 (Scala) Sunday, October 28, 12
  3. UN RAD, C’EST QUOI? • Faciliter l’écriture d’une application web

    • Limiter le nombre de fichiers de configuration (pas de web.xml, persistence.xml, hibernate.cfg.xml, ...) • Abstraire la gestion des données (Object relational mapping) • Permettre des modifications “à chaud” • Faciliter le déploiement de l’application • Exemples de Rad: Ruby on Rails, Grails, CakePhp, Django Sunday, October 28, 12
  4. POURQUOI PLAY? • Architecture MVC (Model View Controller) • Framework

    reposant sur Java • Beaucoup de plugins disponibles • Permet de développer des applications web très rapidement en faisant du prototypage Sunday, October 28, 12
  5. POURQUOI PLAY 1.2.5? • Play 1.2.5 (Java) vs Play 2.0

    (Scala) • Les bases sont les mêmes (MVC, ORM, balises html spéciales, ...) • Play 2.0 manque encore de finition et n’est pas rétrocompatible • Les offres d’emploi/stage portent essentiellement (pour l’instant) sur Play 1.2.5 • Le projet sera basé sur Play 1.2.5 Sunday, October 28, 12
  6. LES CONCEPTS DE PLAY • Concepts fondamentaux: ‣ Modèles ‣

    Contrôleurs ‣ Vues ‣ Layouts ‣ Formulaires et liens • Concepts avancés: ‣ Données de test ‣ Sessions Sunday, October 28, 12
  7. MODÈLES • Annotations pour indiquer à Play quelle est la

    multiplicité entre classes • @OneToMany, @ManyToOne, @ManyToMany, @OneToOne • http://www.playframework.org/documentation/1.2.5/cheatsheet/model • http://en.wikipedia.org/wiki/Class_diagram#Multiplicity Sunday, October 28, 12
  8. MODÈLES • Classe Java qui sera persistée dans la base

    de données • Il existe des annotations Sunday, October 28, 12
  9. CONTRÔLEURS • Classe Java qui sert de squelette à l’application,

    elle reçoit des requêtes des utilisateurs et coordonne les modèles avec les vues Sunday, October 28, 12
  10. VUES • Fichier HTML, enrichi de balises propres à Play

    pour manipuler des listes et des objets Java. Sunday, October 28, 12
  11. LAYOUTS • Fichier HTML, qui sert à définir des éléments

    communs à plusieurs pages. Sunday, October 28, 12
  12. FORMULAIRES • Permet de recueillir des informations de l’utilisateur: ‣

    on lui demande d’entrer des informations ‣ Il les valide ‣ le serveur reçoit et traites les informations ‣ le serveur choisit la réponse à apporter Sunday, October 28, 12
  13. LIENS • Permet de faire naviguer l’utilisateur dans le site

    ‣ En cliquant dessus, l’utilisateur invoque une action d’un contrôleur Sunday, October 28, 12
  14. LIENS • Permet de faire naviguer l’utilisateur dans le site

    ‣ En cliquant dessus, l’utilisateur invoque une action d’un contrôleur Sunday, October 28, 12
  15. DONNÉES DE TEST • Permet de rentrer de simuler le

    comportement de l’application ‣ Ajout d’un fichier Bootstrap.java à la racine du dossier app ‣ L’annotation @OnApplicationStart indique qu’il faut exécuter ce code au démarrage du projet ‣ Le travail effectué consiste à charger les données de data.yml Sunday, October 28, 12
  16. DONNÉES DE TEST • Permet de rentrer de simuler le

    comportement de l’application ‣ Ajout d’un fichier data.yml dans le dossier conf ‣ Les objets sont écrits dans le format YML Sunday, October 28, 12
  17. MISE EN CACHE DE DONNÉES • Classe Cache, qui permet

    de stocker des objets dans un cache distribué • session.getId() permet de générer des noms qui sont propres à une session Sunday, October 28, 12
  18. AJAX: REQUÊTES ASYNCHRONES • Permet de rendre une page web

    dynamique • Le navigateur lance une requête au serveur • Le contenu doit être affiché dans un format compréhensible (XML ou JSON) Sunday, October 28, 12
  19. AJAX: REQUÊTES ASYNCHRONES • Permet de rendre une page web

    dynamique • Le navigateur lance une requête au serveur • Le contenu doit être affiché dans un format compréhensible (XML ou JSON) Sunday, October 28, 12
  20. AJAX: REQUÊTES ASYNCHRONES • Permet de rendre une page web

    dynamique • Le navigateur lance une requête au serveur • Le contenu doit être affiché dans un format compréhensible (XML ou JSON) Sunday, October 28, 12
  21. AJAX: REQUÊTES ASYNCHRONES • Permet de rendre une page web

    dynamique • Le navigateur lance une requête au serveur • Le contenu doit être affiché dans un format compréhensible (XML ou JSON) Sunday, October 28, 12
  22. DOCUMENTATION • Bien écrite et concise • De nombreux exemples

    • http://www.playframework.org/ documentation/1.2.5/home Sunday, October 28, 12