Introduction à Play Framework 2

Preview:

DESCRIPTION

Une conférence donnée au Be-Zend 2013 visant à présenter Play! 2 ainsi que Scala.

Citation preview

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 ?