introduction à play framework 2
DESCRIPTION
Une conférence donnée au Be-Zend 2013 visant à présenter Play! 2 ainsi que Scala.TRANSCRIPT
Introduction àPlay Framework 2
Samy Dindanewww.dinduks.com
@dinduks
Be-Zend 2013 - Saint-Quentin
Au menu
● Introduction Scala
● Play! et ses fonctionnalités
● Démo
● Langage orienté objet et fonctionnel
● Lancé en 2003
● Créé par Martin Odersky
● Utilisé par Twitter, Foursquare, Nasa
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
Utilisation des fonctions
Même chose en Java :
Futures
● Conteneur d'un résultat qui n'existe pas encore
● Permettent de faire des opérations○ Parallèles○ Non bloquantes
Exemple
Pattern Matching
OptionConteneur de valeurs optionnelles
Exemple
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
Java
Scala
Inférence de types
Traits
● Équivalent aux Interfaces de Java
● Possibilité d'en implémenter une partie
Actors● Processus concurrents
● Communiquent en échangeant des messages
● Jobs asynchrones
Interopérable avec JavaPeut utiliser les libs Java
Peut parler avec les classes Java
Adoption incrémentielle
● Écrit en Java et en scala
● Répond aux problématiques du Web moderne
● Scalable
● Simple et productif
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é
Productivité
● Accessible
● Rechargement à chaud (code, templates, config)
● Compilation et exécution des tests automatiques
● Support des IDE
Stateless et respecte HTTP
● Ne stocke pas d'état côté serveur
● Ne cache pas HTTP et l'expose
Support natif deJava et Scala
API propre et maintenue à chaque langage
Type-safety
● Empêche les erreurs de compilation sur les
○ Classes
○ Templates
○ Routes
Réactif
● Programmation asynchrone
● Parallélisme
● I/O non-bloquantes
● Consommer des données en streaming
Exemple de Futures dans Play
Exemple de Futures dans Play
Tranformer une Future en résultat
Exemple plus concret
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
Iteratee IO
Enumerator Iteratee
● Chunk● EOF
● Cont● Done● Error
DémoUne démo vaut mille slides
Questions ?