• Like
  • Save
Play Framework
Upcoming SlideShare
Loading in...5
×
 

Play Framework

on

  • 619 views

 

Statistics

Views

Total Views
619
Views on SlideShare
619
Embed Views
0

Actions

Likes
0
Downloads
9
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Chapitre 1 : C’estlàoù on vatroller un peucontre JEE.Chapitre 2 : Présentation des grandsprincipes de fonctionnements du Frameworks.Chapitre3 : On montre le fonctionnement en direct live avec du code.
  • Java EE c’estcommel’étoile noire :Quandils’agitd’abattreuneplanète, c’est le top.Quandils’agitd’abattre le petit X-Wing qui tourneautour, çadevientdur de viser...Bref, Java EE n’est pas adapté à tous les projets. Il s’agitavant tout d’uneénormeUsine à Gaz.
  • Lanorme J2EE (et particulièrement JSF) estunesurcouche qui se pose au dessus du protocole HTTP de base. Il essayed’étendre les fonctionnalités de base du Web pour créer des applications statefull.Conséquence => Beaucoup de complexité et de traitementscachés.Pour beaucoup de développeur Junior, ceque fait le framework ressemble à de la magie (La force Luke, utilise la Force...).Au final, Java estconsidérécommeComplexe par les développeurs.
  • En front : Cluster, Load Balancing ? Que faire de la session ? Soitchaqueserveur à une session et on garantiqu’unutilisateurconnectéretombetoujourssur le mêmeserveur.Si on veut de la perf, ilfaudra en plus rajouter du cache.Résultat : - Beaucoup de configurations- Attention à la tolérance au panne !
  • Info importante : beaucoup de perte de temps en dev.
  • Où le X-Wing fait exploserl’étoile noire.
  • Play 2 change beaucoup par rapport à Play 1 => Virageversl’éco-systèmeScala.
  • Au centre : Java et Scala.Mais Play! s’appuiesur pas mal de technologies différentes : - Soit en interne pour sesmécanismes - Soit en offrant les interfaces pour les intégréesaiséments
  • REST : URL simple et Bookmarkable Utilisation et respectsdes actions du protocoles HTTP (GET, POST, PUT, DELETE, HEAD...) Stateless (deuxappels HTTP sonttotalementsindépendants).Scalabilité = Capacité de montée en charge.
  • A regarder en mode Diaporama (Shift + F5 :p ) pour êtrecompréhensible.En gros je décrit les différentsélements en donnant un exemples.
  • A regarder en mode Diaporama (Shift + F5 :p ) pour êtrecompréhensible.En gros je décrit les différentsélements en donnant un exemples.
  • A regarder en mode Diaporama (Shift + F5 :p ) pour êtrecompréhensible.En gros je décrit les différentsélements en donnant un exemples.
  • A regarder en mode Diaporama (Shift + F5 :p ) pour êtrecompréhensible.En gros je décrit les différentsélements en donnant un exemples.
  • A regarder en mode Diaporama (Shift + F5 :p ) pour êtrecompréhensible.En gros je décrit les différentsélements en donnant un exemples.
  • On décrit le cycle de vie. Au final on reprend unpeu le slide précédentmais en montrant le mécanismevis à vis de la requête HTTP.
  • Plus de session à gérer.Chaquerequêteestpleinementindépendante : un utilisateurpeutêtre balancer d’un serveur à un autre de façontotalementtransparente.Une session liteexistecoté client maiselleesttranmises à chaquerequête HTTP (mécanisme de cookies).
  • A
  • A partir du slide suivant, cesontavant tout des aides mémoires. Si vousêtes tout seul, le mieux pour la suite est de prendre la doc et d’essayer de refairel’exemple. Le projet Play sera mis à disposition à coté de ses slides.

Play Framework Play Framework Presentation Transcript

  • Framework Play! ZUBER Lionel
  • Ordre du jour Le problème Java EE Play! Principe de fonctionnement Play in action ! Et pour les questions… N’attendez pas la fin ! 2
  • Le problème Java EE
  • Architecture JEE standard Réponse HTTP Spring / CDI Requête HTTP • Mapping URI / Actions • Constitution objets métiers a partir de la • • • • requête Constitution objets sessions à partir de la session Restaurations d’états Conversions Validations 4 JPA JSF XML Serveur d’Applications
  • Et quand on monte en charge... Serveur d’Applications Serveur d’Applications Serveur d’Applications 5 CACHE Serveur d’Applications SESSIONS Serveur d’Applications
  • Et coté développements... Code • En moyenne coté déploiement… • Démarrage du serveur : 2 min • Redéploiement d’une application : 30s Test Compilation • Effectués 50 fois par jour • Presque 30 min de pertes • En phase de « debug », la partie Déploiement déploiement est parfois la plus longue du cycle. 6
  • Présentation générale du Framework
  • Historiques • Base du framework posée en 2007 par Guillaume Bort • Version 1.0 en Octobre 2009 • Entreprise Zenexity • Version purement Java • Version 2.0 en Mars 2012 • Entreprise Zenexity et Typesafe • 1 version Java et 1 version Scala • Se rapproche de l’eco-système Scala 8
  • Play! Un ensemble de technologie Sbt CoffeeScript Less Ebean Google Closure Compile Jdbc Yaml Memcached Akka Heroku Selenium Logback Junit 9
  • Les grands principes • Respect de l’architecture Web (principe REST) • Full-Stack Framework • • Couvre toutes les phases : du développement à la production Fournit une API pour les fonctionnalités nécessaires à l’élaboration d’une application Web • Productif • • Basé sur des concepts simples et prévisibles Architecture minimum • Forte Scalabilité • • Framework stateless Peu d’instanciation d’objets • Testabilité • • Intégration d’outils de test (Junit, Selenium) Helper pour aider à leurs mises en places 10
  • Les petits plus • Outils en ligne de commande complet (initialisation, packaging, console, …) • Gestions des dépendances par le Framework • Documentation disponible via le serveur de développement • Compilation et déploiement « à la volée » • Extensible • Du source : toute API Java peut être incluse • Du noyau : système de plugins 11
  • Architecture MVC Annotations JPA routes Controller Java Template Scala 12 Models Ebean
  • Architecture MVC Annotations JPA routes Controller Java Template Scala @(form: Form[forms.Login]) @main {BOUM} {Dashboard} { @helper.form(routes.Application.authenticate) { <h1>Sign in</h1> @if(form.hasGlobalErrors) { <p class="error"> @form.globalError.message </p> } } } 13 Models Ebean
  • Architecture MVC Annotations JPA routes Controller Java Template Scala Models Ebean # Map static resources from the /public folder to the /assets URL path GET /assets/*file controllers.Assets.at(path="/public", file) # Authentication GET /login controllers.Application.login() POST /login controllers.Application.authenticate() # Application de gestion de flux GET /flux controllers.GesFlux.search(page:Int ?= 0, sortBy ?= "answerDate", sortOrder ?= "asc", ip ?= "", status:Int ?= 0) 14
  • Architecture MVC Annotations JPA routes Controller Java Template Scala public class Application extends Controller { @Security.Authenticated(Secured.class) public static Result index() { return ok(index.render("")); } } 15 Models Ebean
  • Architecture MVC Annotations JPA routes Controller Java Template Scala */ @Entity public class UserEntity extends Model implements BoumModel { @Id public String login; public static Model.Finder<String,UserEntity> find = new Finder<String, UserEntity>(String.class, UserEntity.class); public static List<UserEntity> findAll() { return find.all(); } } 16 Models Ebean
  • Cycle de vie 17
  • Et quand on monte en charge... Serveur Play! Load Balancing Serveur Play! Serveur Play! Serveur Play! 18 CACHE Serveur Play!
  • Les points faibles • Documentation • • • • Bonne approche mais pas assez exhaustive Javadoc inexistante pour la partie template Doc sur certains outils annexes (YML) inexistante Exemple internet périmé (Play 1) • Non-Standard • Incompatible JEE • Forte dépendance vis-à-vis du Framework • Se séparer de Play! = Refondre complètement l’application 19
  • Démonstration
  • Cas pratique • Vador veut une application pour gérer son tableau de chasse. • Le lot 1 de l’application devra permettre au Jedi • • • D’afficher la liste de ses victimes D’effectuer une recherche dans la liste De rajouter un nouveau Jedi à la liste de ses victimes • Yoda l’a nargué à de nombreuses reprises avec le pouvoir de Play! Le seigneur noir veut donc voir cette étrange puissance en action… 21
  • Outils en ligne de commande Les commandes externes Play • play new: commande de création d’un nouveau projet. Crée l’arborescence et la paramétrage par défaut. • play : lance le shell play en mode standard • play debug : lance le shell play en mode debug Les commandes du Shell • run : lance le serveur d’application en mode développement (rechargement automatique) • • • • • • test : lance les tests automatisés (unitaire et fonctionnel) compile : lance la compilation clean : fait le ménage dans les fichiers générés eclipsify : prépare le projet eclipse dist: crée le jar pour un déploiement standalone console : passe en console interactive scala 22
  • Getting Started Eclipse 1. play new : on initialise le projet 2. play eclipsify : on initialise les fichiers de configurations eclipse 3. Import du projet dans Eclipse Eclipse compile le code comme un projet standard. Après l’ajout d’un nouveau template ou d’une nouvelle dépendance, relancer eclipsify, et rafraichir le projet. 23
  • Arborescence • /app: dossier contenant les sources applicatives • /test : dossier contenant les sources des tests unitaires ou fonctionnels • /conf : configuration général de l’application • /application.conf : properties principales de l’application (bdd, logger, langue) • /routes : configuration des urls • /logs : log applicatif de l’application • /project : fichier concernant le packaging et la configuration play • /Build.scala : packaging (dépendances, fonctions spécifiques, versionning) • /plugins.sbt : ajout et mise à disposition de plugin Play • /public : ressources utilisable dans l’application (Fichier css, images, javascript) • /target : dossier contenant les binaires et résultats de packaging 24
  • Package Applicatif • controllers : contient toutes les classes de controllers de l’application. • models : modèles de données persistés en base (class Ebean). • views : template scala 25
  • Des questions ? Site officiel : http://www.playframework.com/