introduction à play framework 2
DESCRIPTION
Une conférence donnée au Be-Zend 2013 visant à présenter Play! 2 ainsi que Scala.TRANSCRIPT
![Page 1: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/1.jpg)
Introduction àPlay Framework 2
Samy Dindanewww.dinduks.com
@dinduks
Be-Zend 2013 - Saint-Quentin
![Page 2: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/2.jpg)
Au menu
● Introduction Scala
● Play! et ses fonctionnalités
● Démo
![Page 3: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/3.jpg)
![Page 4: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/4.jpg)
● Langage orienté objet et fonctionnel
● Lancé en 2003
● Créé par Martin Odersky
● Utilisé par Twitter, Foursquare, Nasa
![Page 5: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/5.jpg)
Programmation fonctionnelle
Principes de la programmation orientée-objet
Profiter de ce qu'offre la FPtout en ayant une base de code robuste, structurée et maintenable
![Page 6: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/6.jpg)
Utilisation des fonctions
Même chose en Java :
![Page 7: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/7.jpg)
Futures
● Conteneur d'un résultat qui n'existe pas encore
● Permettent de faire des opérations○ Parallèles○ Non bloquantes
![Page 8: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/8.jpg)
Exemple
![Page 9: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/9.jpg)
Pattern Matching
![Page 10: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/10.jpg)
OptionConteneur de valeurs optionnelles
![Page 11: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/11.jpg)
Exemple
![Page 12: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/12.jpg)
Typage● Scala est statiquement typé
● Les types sont vérifiés par le compilateur
○ Plus de sécurité
○ Maintenance plus rapide et efficace
○ Pas besoin de tests unitaires pour tester les types
![Page 13: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/13.jpg)
Java
Scala
![Page 14: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/14.jpg)
Inférence de types
![Page 15: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/15.jpg)
Traits
● Équivalent aux Interfaces de Java
● Possibilité d'en implémenter une partie
![Page 16: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/16.jpg)
Actors● Processus concurrents
● Communiquent en échangeant des messages
● Jobs asynchrones
![Page 17: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/17.jpg)
Interopérable avec JavaPeut utiliser les libs Java
Peut parler avec les classes Java
Adoption incrémentielle
![Page 18: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/18.jpg)
![Page 19: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/19.jpg)
● Écrit en Java et en scala
● Répond aux problématiques du Web moderne
● Scalable
● Simple et productif
![Page 20: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/20.jpg)
Full stack
● Tous les composants nécessaires pour faire du dév. Web
○ Streams, WebSockets, cache, SQL, JSON/XML, formulaires,
validation, routing
○ S'intègre avec des technos client (LESS, JS, CoffeeScript)
○ (Vrai) serveur Web intégré
![Page 21: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/21.jpg)
Productivité
● Accessible
● Rechargement à chaud (code, templates, config)
● Compilation et exécution des tests automatiques
● Support des IDE
![Page 22: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/22.jpg)
![Page 23: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/23.jpg)
![Page 24: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/24.jpg)
![Page 25: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/25.jpg)
Stateless et respecte HTTP
● Ne stocke pas d'état côté serveur
● Ne cache pas HTTP et l'expose
![Page 26: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/26.jpg)
Support natif deJava et Scala
API propre et maintenue à chaque langage
![Page 27: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/27.jpg)
Type-safety
● Empêche les erreurs de compilation sur les
○ Classes
○ Templates
○ Routes
![Page 28: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/28.jpg)
Réactif
● Programmation asynchrone
● Parallélisme
● I/O non-bloquantes
● Consommer des données en streaming
![Page 29: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/29.jpg)
Exemple de Futures dans Play
![Page 30: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/30.jpg)
Exemple de Futures dans Play
![Page 31: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/31.jpg)
Tranformer une Future en résultat
![Page 32: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/32.jpg)
Exemple plus concret
![Page 33: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/33.jpg)
Iteratee IO
● Propose une API pour manipuler des streams
● Permet d'avoir le contrôle sur ces flux
● Composable
● API non bloquante, réactive et performante
![Page 34: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/34.jpg)
Iteratee IO
Enumerator Iteratee
● Chunk● EOF
● Cont● Done● Error
![Page 35: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/35.jpg)
DémoUne démo vaut mille slides
![Page 36: Introduction à Play Framework 2](https://reader035.vdocuments.mx/reader035/viewer/2022081515/558c7c43d8b42a974c8b462a/html5/thumbnails/36.jpg)
Questions ?