Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Play framework - Human Talks Grenoble - 12.02.2013

  • Be the first to comment

  • Be the first to like this

Play framework - Human Talks Grenoble - 12.02.2013

  1. 1. GRENOBLE Play framework (V1) : simplicité et productivité au service du développement WEB en Java Xavier NOPRE – 12/02/2013
  2. 2. Préambule > Sondage Développeur Java ? Qui connait Play Framework ? Qui utilise Play Framework ?  V1 ?  V2 ? Précision … Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  3. 3. Introduction Framework WEB complet Pour des développeurs pour des développeurs Pour une approche + simple et + rapide (vs JEE ou Spring) Constitué de composants choisis (JPA, Hibernate, …) Architecture Model View Controller Rechargement à chaud en mode "dev" Présentation des erreurs "serveur" dans la page HTML (explication et extrait de code) Stateless & REST Basé sur des conventions  Productivité ! Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  4. 4. Installation & démarrage Téléchargement play-1.2.5.zip : http://downloads.typesafe.com/releases/play-1.2.4.zip Extraction et ajout au PATH Création dune nouvelle application : > play new demo-human-talks Préparation pour Eclipse : > play eclipsify Exécution : > play run Accès : http://localhost:9000/  Principes, documentation local, API Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  5. 5. Installation & démarragePlay Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  6. 6. Structure Répertoires :  config/  fichiers de configuration  app/  models/  classes pour les modèles objet (mapping JPA)  controllers/  classes pour les contrôleurs  views/  fichier HTML de templating pour les vues  test/  tests unitaires et tests fonctionnels  public/  ressources statiques (images, CSS, Javascript) Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  7. 7. Configuration Répertoire "conf":  application.conf : configuration générale de lapplication :  Nom, mode (dev / prod), langs  Serveur HTTP et sessions  Logs  Base de donnée : mémoire, fichier, MySQL, PostgreSQL, JDBC, …  JPA, memcached, proxy, mail, …  dependencies.yml  Dépendances (artefacts type Maven ou Ivy)  routes  Routages : URL  controller.action  messages  Internationalisation i18n (multi-langue) Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  8. 8. Configuration > dépendances Artefacts disponibles sur des repositories publiques : conf/dependencies.yml # Application dependencies require: - play - play -> crud - play -> secure - org.apache.commons -> commons-lang3 3.1 - org.mockito -> mockito-all 1.9.5 - org.easytesting -> fest-assert 1.4 Mise à jour des dépendances : > play dependencies Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  9. 9. Configuration > routage URLs Définitions des routages entre URL et actions des contrôleurs, et inversement conf/routes GET / Application.index GET /public/ staticDir:public * /{controller}/{action} {controller}.{action} # Backbone GET /bb/projects BBProjects.getProjects GET /bb/project/{id} BBProjects.getProject POST /bb/project BBProjects.createProject PUT /bb/project/{id} BBProjects.updateProject DELETE /bb/project/{id} BBProjects.deleteProject POST /bb/project/public/{id}/{isPublic} BBProjects.postPublicProject Utilisation dans une vue pour faire un lien : <a href="@{Clients.show(client.id)}">Show</a> Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  10. 10. Models Play utilise Hibernate à travers JPA (Java Persistance Api) Les objets sont annotés @Entity et dérivent de Model Model fournit des méthodes utilitaires statiques :  post.save(), post.delete(), Post.findAll(), Post.findById(5L), Post.find("byTitle", "My first post").fetch() … @Entity public class Post extends Model { public String title; public String content; public Date postDate; @ManyToOne public Author author; @OneToMany public List<Comment> comments; } Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  11. 11. Controllers Traitent les requêtes Dérivent de play.mvc.Controller Méthodes statiques Récupération automatique des paramètres de requête Binding automatique de ces paramètres en objets, selon la signature de la méthode  + Dates selon différents formats  + Uploads POST "multipart/form-data" de fichiers  File Actions :  Rendu : render(), renderJSON(), renderXML(), renderBinary()  Autre : redirect() ou appel dune autre méthode (chainage) Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  12. 12. Controllers > Exemplepublic class Clients extends Controller { public static void list() { List<Client> clients = Client.findAll(); render(clients);  app/views/Clients/list.html } public static void show(Long id) { Client client = Client.findById(id); renderTemplate("Clients/showClient.html", client); }  app/views/Clients/showClient.html public static void create(String name) { Client client = new Client(name); client.save(); show(client.id);  chainage } public static void getUnreadMessages() {} List<Message> unreadMessages = MessagesBox.unreadMessages(); renderJSON(unreadMessages); } Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  13. 13. Vues Templating Groovy  Variable : ${client.name}  Tags : #{script jquery.js /} ou #{list items:clients, as:client }  Tags personnalisés dans app/views/tags  Actions : <a href="@{Clients.show(client.id)}">Show</a>  Textes internationalisés : &{clientName, client.name}  Script Java : %{ fullName = "Name : "+client.getName(); } Système de "decorators" (= template parent, héritage)  Tags #{extends main.html /} et #{doLayout /} Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  14. 14. Mais encore … Gestion dID pour différents déploiements (dev, test,…) Tests unitaires et fonctionnels Gestion de modules  Personnels  Public, grand nombre sur http://www.playframework.com/modules  Notamment modules Secure, CRUD, … Déploiement  En "natif" avec le moteur Play  WAR déployé sur serveur dapplication (Tomcat, …) Macro (tags) pour le templating des vues … Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013
  15. 15. MERCI Xavier NOPRE :  Développeur Java & Web  Formation et accompagnement en ingénierie agile (tests unitaires, TDD, intégration continue, industrialisation Maven, etc…) et technos Java-WEB @xnopre xnopre.blogspot.com Play Framework 1.2.5 - http://www.playframework.com/ - Xavier NOPRE – 12/02/2013

    Be the first to comment

    Login to see the comments

Views

Total views

1,712

On Slideshare

0

From embeds

0

Number of embeds

193

Actions

Downloads

18

Shares

0

Comments

0

Likes

0

×