SlideShare a Scribd company logo
1 of 36
Download to read offline
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 ?

More Related Content

What's hot

BlaBlaCar - Going Native !
BlaBlaCar - Going Native ! BlaBlaCar - Going Native !
BlaBlaCar - Going Native ! Erwann Robin
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsAntoine Rey
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur SpringAntoine Rey
 
Play Framework
Play FrameworkPlay Framework
Play FrameworkArmaklan
 
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrenteCocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrenteCocoaHeads France
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_threadSaber LAJILI
 
L'écosystème Java
L'écosystème JavaL'écosystème Java
L'écosystème Javateejug
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads France
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile AppHabib MAALEM
 
Transition de NIBs/XIBs vers Storyboards
Transition de NIBs/XIBs vers StoryboardsTransition de NIBs/XIBs vers Storyboards
Transition de NIBs/XIBs vers StoryboardsCocoaHeads France
 
Test flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebiaTest flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebiaCocoaHeads France
 
Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeformationobjetdirect
 
Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Microsoft
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Benoît de CHATEAUVIEUX
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilanteejug
 
ToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéNicolas Deverge
 

What's hot (20)

BlaBlaCar - Going Native !
BlaBlaCar - Going Native ! BlaBlaCar - Going Native !
BlaBlaCar - Going Native !
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
 
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
Workshop Spring  3 - Tests et techniques avancées du conteneur SpringWorkshop Spring  3 - Tests et techniques avancées du conteneur Spring
Workshop Spring 3 - Tests et techniques avancées du conteneur Spring
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrenteCocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
CocoaHeads Toulouse - Marc Boudou / FreezySnail - Programmation concurrente
 
4 asynch task_services_thread
4 asynch task_services_thread4 asynch task_services_thread
4 asynch task_services_thread
 
L'écosystème Java
L'écosystème JavaL'écosystème Java
L'écosystème Java
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - Epitez
 
NodeJS for Mobile App
NodeJS for Mobile AppNodeJS for Mobile App
NodeJS for Mobile App
 
Transition de NIBs/XIBs vers Storyboards
Transition de NIBs/XIBs vers StoryboardsTransition de NIBs/XIBs vers Storyboards
Transition de NIBs/XIBs vers Storyboards
 
Test flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebiaTest flight et les outils de distribution continue par simone civetta de xebia
Test flight et les outils de distribution continue par simone civetta de xebia
 
Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonome
 
Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11Les nouveautés de Visual Studio 11
Les nouveautés de Visual Studio 11
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 
Xcode 4.5
Xcode 4.5Xcode 4.5
Xcode 4.5
 
Présentation Angular 2
Présentation Angular 2 Présentation Angular 2
Présentation Angular 2
 
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
Démo Gatling au Performance User Group de Casablanca - 25 sept 2014
 
Presentation swagger
Presentation swaggerPresentation swagger
Presentation swagger
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilan
 
ToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & AgilitéToulouseJUG - REX Flex, Spring & Agilité
ToulouseJUG - REX Flex, Spring & Agilité
 

Viewers also liked

Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! frameworkBenoît Simard
 
Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Saeed Zarinfam
 
Introduction to Play Framework
Introduction to Play FrameworkIntroduction to Play Framework
Introduction to Play FrameworkWarren Zhou
 
Open Source Software and GitHub
Open Source Software and GitHubOpen Source Software and GitHub
Open Source Software and GitHubSamy Dindane
 
Play Framework: The Basics
Play Framework: The BasicsPlay Framework: The Basics
Play Framework: The BasicsPhilip Langer
 
Reactive programming at scale
Reactive programming at scale Reactive programming at scale
Reactive programming at scale John McClean
 
Supercharged java 8 : with cyclops-react
Supercharged java 8 : with cyclops-reactSupercharged java 8 : with cyclops-react
Supercharged java 8 : with cyclops-reactJohn McClean
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaYevgeniy Brikman
 
Reactive Programming in Java 8 with Rx-Java
Reactive Programming in Java 8 with Rx-JavaReactive Programming in Java 8 with Rx-Java
Reactive Programming in Java 8 with Rx-JavaKasun Indrasiri
 
DDS on the Web: Quick Recipes for Real-Time Web Applications
DDS on the Web: Quick Recipes for Real-Time Web ApplicationsDDS on the Web: Quick Recipes for Real-Time Web Applications
DDS on the Web: Quick Recipes for Real-Time Web ApplicationsAngelo Corsaro
 
Fol extincion del contrato por causas objetivas
Fol extincion del contrato por causas objetivasFol extincion del contrato por causas objetivas
Fol extincion del contrato por causas objetivasmaitehortaleza
 
Manual nlite
Manual nliteManual nlite
Manual nliteRey Vaz
 
Las biomoléculas
Las biomoléculasLas biomoléculas
Las biomoléculasalferez32
 
Historia, filosofía de las matemáticas examen
Historia, filosofía de las matemáticas examenHistoria, filosofía de las matemáticas examen
Historia, filosofía de las matemáticas examenhenry0124
 
Présentation organismes 8 octobre 2014
Présentation organismes 8 octobre 2014Présentation organismes 8 octobre 2014
Présentation organismes 8 octobre 2014Marc-Eric LaRocque
 
Gm trouble codes
Gm trouble codesGm trouble codes
Gm trouble codesantheresc
 

Viewers also liked (20)

Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
 
Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)Web application development using Play Framework (with Java)
Web application development using Play Framework (with Java)
 
Introduction to Play Framework
Introduction to Play FrameworkIntroduction to Play Framework
Introduction to Play Framework
 
Open Source Software and GitHub
Open Source Software and GitHubOpen Source Software and GitHub
Open Source Software and GitHub
 
Play Framework: The Basics
Play Framework: The BasicsPlay Framework: The Basics
Play Framework: The Basics
 
Tp switch
Tp switchTp switch
Tp switch
 
Reactive programming at scale
Reactive programming at scale Reactive programming at scale
Reactive programming at scale
 
Supercharged java 8 : with cyclops-react
Supercharged java 8 : with cyclops-reactSupercharged java 8 : with cyclops-react
Supercharged java 8 : with cyclops-react
 
Introducing Akka
Introducing AkkaIntroducing Akka
Introducing Akka
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
Reactive Programming in Java 8 with Rx-Java
Reactive Programming in Java 8 with Rx-JavaReactive Programming in Java 8 with Rx-Java
Reactive Programming in Java 8 with Rx-Java
 
DDS on the Web: Quick Recipes for Real-Time Web Applications
DDS on the Web: Quick Recipes for Real-Time Web ApplicationsDDS on the Web: Quick Recipes for Real-Time Web Applications
DDS on the Web: Quick Recipes for Real-Time Web Applications
 
Hackers
HackersHackers
Hackers
 
Capitulo 1
Capitulo   1Capitulo   1
Capitulo 1
 
Fol extincion del contrato por causas objetivas
Fol extincion del contrato por causas objetivasFol extincion del contrato por causas objetivas
Fol extincion del contrato por causas objetivas
 
Manual nlite
Manual nliteManual nlite
Manual nlite
 
Las biomoléculas
Las biomoléculasLas biomoléculas
Las biomoléculas
 
Historia, filosofía de las matemáticas examen
Historia, filosofía de las matemáticas examenHistoria, filosofía de las matemáticas examen
Historia, filosofía de las matemáticas examen
 
Présentation organismes 8 octobre 2014
Présentation organismes 8 octobre 2014Présentation organismes 8 octobre 2014
Présentation organismes 8 octobre 2014
 
Gm trouble codes
Gm trouble codesGm trouble codes
Gm trouble codes
 

Similar to Introduction à Play Framework 2

Enib cours c.a.i. web - séance #5 : scala play! framework
Enib   cours c.a.i. web - séance #5 : scala play! frameworkEnib   cours c.a.i. web - séance #5 : scala play! framework
Enib cours c.a.i. web - séance #5 : scala play! frameworkHoracio Gonzalez
 
Tour d’horizon de scala
Tour d’horizon de scalaTour d’horizon de scala
Tour d’horizon de scalaBenoit Wilcox
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lroxmed
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellgdigugli
 
Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016kraeger
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?Rui Carvalho
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Ingénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdfIngénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdfJEANCLAUDECAMARA
 
2 - java : caractéristiques de java
2 - java : caractéristiques de java2 - java : caractéristiques de java
2 - java : caractéristiques de javaopentuto
 
Cours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrCours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrinesrdissi60
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010JUG Lausanne
 
Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvm
Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvmEnib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm
Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvmHoracio Gonzalez
 
20120402 nantes gtug - app engine
20120402   nantes gtug - app engine20120402   nantes gtug - app engine
20120402 nantes gtug - app engineGDG Nantes
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en JavaFlorian Beaufumé
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent Biret
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro javaAmel Morchdi
 

Similar to Introduction à Play Framework 2 (20)

Enib cours c.a.i. web - séance #5 : scala play! framework
Enib   cours c.a.i. web - séance #5 : scala play! frameworkEnib   cours c.a.i. web - séance #5 : scala play! framework
Enib cours c.a.i. web - séance #5 : scala play! framework
 
Tour d’horizon de scala
Tour d’horizon de scalaTour d’horizon de scala
Tour d’horizon de scala
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lr
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshell
 
Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Ingénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdfIngénieur étude et développement JAVA JEE.pdf
Ingénieur étude et développement JAVA JEE.pdf
 
2 - java : caractéristiques de java
2 - java : caractéristiques de java2 - java : caractéristiques de java
2 - java : caractéristiques de java
 
Cours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrrCours n°1.1-Introduction.pdf angularrrrr
Cours n°1.1-Introduction.pdf angularrrrr
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvm
Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvmEnib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm
Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvm
 
20120402 nantes gtug - app engine
20120402   nantes gtug - app engine20120402   nantes gtug - app engine
20120402 nantes gtug - app engine
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Programmation concurrente en Java
Programmation concurrente en JavaProgrammation concurrente en Java
Programmation concurrente en Java
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)
 
Introduction Kotlin
Introduction KotlinIntroduction Kotlin
Introduction Kotlin
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro java
 

Introduction à Play Framework 2