Introduction à
Play Framework 2
      Samy Dindane
     www.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 FP
tout 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
Option
Conteneur 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
Scala




Java
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 Java
         Peut 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 de
 Java 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
                ●   Chunk
                ●   EOF



Enumerator                  Iteratee

                ●   Cont
                ●   Done
                ●   Error
Démo
Une démo vaut mille slides
Questions ?

Introduction à Play Framework 2