SlideShare une entreprise Scribd logo
1  sur  132
Play Framework
                            (Fun is back in Java)
                                   @basav




Saturday, December 8, 12
About Me
                    • Just another Java developer
                    • have experienced JSP, Struts2, Spring MVC,
                           JSF etc
                    • Fed up with complex Java EE environment
                           for simple Web apps
                    • Current Interests
                     • Clojure, Play, Cloud..
Saturday, December 8, 12
Agenda
                  • Background - 5 mins
                  • Why Play! Framework? - 10 mins
                  • Features and Benefits - 15 mins
                  • Demo - 10 mins
                  • Q &A


Saturday, December 8, 12
Web is taking over..
                    • Web is providing data on
                           HTTP not just web pages
                    •      Browser is acting as an
                           Operating system
                    • Javascript has become very
                           powerful
                    • Webapps are alive

Saturday, December 8, 12
Is Java Development
                            Fun(for webapps)??




Saturday, December 8, 12
Compared to




Saturday, December 8, 12
Compared to




                           Not Anymore....
Saturday, December 8, 12
Saturday, December 8, 12
Web frameworks
                           Non Java   Java based




Saturday, December 8, 12
Non Java Web
                            frameworks




Saturday, December 8, 12
Non Java Web
                            frameworks
                                   •   Are popular




Saturday, December 8, 12
Non Java Web
                            frameworks
                                   •   Are popular

                                   •   HTTP is first class
                                       citizen




Saturday, December 8, 12
Non Java Web
                            frameworks
                                   •   Are popular

                                   •   HTTP is first class
                                       citizen

                                   •   Rapid Development




Saturday, December 8, 12
Non Java Web
                            frameworks
                                   •   Are popular

                                   •   HTTP is first class
                                       citizen

                                   •   Rapid Development

                                   •   Rapid Deployment




Saturday, December 8, 12
Non Java Web
                            frameworks
                                   •   Are popular

                                   •   HTTP is first class
                                       citizen

                                   •   Rapid Development

                                   •   Rapid Deployment

                                   •   Less code



Saturday, December 8, 12
Non Java Web
                            frameworks
                                   •   Are popular

                                   •   HTTP is first class
                                       citizen

                                   •   Rapid Development

                                   •   Rapid Deployment

                                   •   Less code

                                   •   JVM Ecosystem


Saturday, December 8, 12
Java Web frameworks




Saturday, December 8, 12
Java Web frameworks
                           •   on JVM




Saturday, December 8, 12
Java Web frameworks
                           •   on JVM

                           •   Standard based




Saturday, December 8, 12
Java Web frameworks
                           •   on JVM

                           •   Standard based

                           •   Implement Heavy
                               Servlet Specs




Saturday, December 8, 12
Java Web frameworks
                           •   on JVM

                           •   Standard based

                           •   Implement Heavy
                               Servlet Specs

                           •   Embrace HTTP




Saturday, December 8, 12
Java Web frameworks
                           •   on JVM

                           •   Standard based

                           •   Implement Heavy
                               Servlet Specs

                           •   Embrace HTTP

                           •   Rapid Development




Saturday, December 8, 12
Java Web frameworks
                           •   on JVM

                           •   Standard based

                           •   Implement Heavy
                               Servlet Specs

                           •   Embrace HTTP

                           •   Rapid Development

                           •   Rapid Deployment



Saturday, December 8, 12
Java Web frameworks
                           •   on JVM

                           •   Standard based

                           •   Implement Heavy
                               Servlet Specs

                           •   Embrace HTTP

                           •   Rapid Development

                           •   Rapid Deployment

                           •   Less More code

Saturday, December 8, 12
Where is the GAP and
                             What we Need?




Saturday, December 8, 12
Where is the GAP and
                             What we Need?
                      • HTTP as First Class Citizen




Saturday, December 8, 12
Where is the GAP and
                             What we Need?
                      • HTTP as First Class Citizen
                      • Rapid Development




Saturday, December 8, 12
Where is the GAP and
                             What we Need?
                      • HTTP as First Class Citizen
                      • Rapid Development
                      • Rapid Deployment




Saturday, December 8, 12
Where is the GAP and
                             What we Need?
                      • HTTP as First Class Citizen
                      • Rapid Development
                      • Rapid Deployment
                                          +

Saturday, December 8, 12
Where is the GAP and
                             What we Need?
                      • HTTP as First Class Citizen
                      • Rapid Development
                      • Rapid Deployment
                                          +
                      • on JVM Ecosystem (i.e. Pure Java Support)
Saturday, December 8, 12
Conventional Java EE
                           Stack for Web Apps
                    •      Complex

                    •      Lots of

                           •   Specs and Implementations

                           •   Configurations

                    •      Layered

                           •   Defined by Standards / Specs

                           •   Assembled by Interfaces


Saturday, December 8, 12
Conventional Java EE
                           Stack for Web Apps
                    •      Complex

                    •      Lots of

                           • Specs and Implementations
                            OVER ARCHITECTED
                           • Configurations
                    •      Layered

                           •   Defined by Standards / Specs

                           •   Assembled by Interfaces


Saturday, December 8, 12
Why?

                           “Java developers are building
                           Java applications, not web
                           applications”



Saturday, December 8, 12
Why?
                           “Java culture emphasis
                           interfaces and layers of
                           abstraction over solving
                           problems directly.”



Saturday, December 8, 12
What about Developer
                     Productivity?




Saturday, December 8, 12
What about Developer
                     Productivity?

                • code change -> run Maven / Ant -> build war
                           -> copy-> Deploy -> wait (sometimes server
                           restart) -> open-browser-> test
                           (Try developing something on Webpshere, you understand what I mean)




Saturday, December 8, 12
Developer Productivity




Saturday, December 8, 12
Developer Productivity

                • important




Saturday, December 8, 12
Developer Productivity

                • important
                • is of economic value



Saturday, December 8, 12
Developer Productivity

                • important
                • is of economic value
                • Lets not pay for compile-test-deploy
                           cycle




Saturday, December 8, 12
Developer Productivity

                • important
                • is of economic value
                • Lets not pay for compile-test-deploy
                           cycle
                • more importantly - Lets not bore them
Saturday, December 8, 12
Where is the GAP and
                             What we Need?




Saturday, December 8, 12
Where is the GAP and
                              What we Need?
                      •     HTTP as First Class       •   Rapid Development
                            Citizen
                                                      •   Rapid Deployment

                                                  +
                           • on JVM Ecosystem (i.e. Pure Java Support)




Saturday, December 8, 12
Where is the GAP and
                              What we Need?
                      •     HTTP as First Class       •   Rapid Development
                            Citizen
                                                      •   Rapid Deployment

                                                  +
                           • on JVM Ecosystem (i.e. Pure Java Support)
                           • Developer Productivity



Saturday, December 8, 12
Where is the GAP and
                              What we Need?
                      •     HTTP as First Class       •   Rapid Development
                            Citizen
                                                      •   Rapid Deployment

                                                  +
                           • on JVM Ecosystem (i.e. Pure Java Support)
                           • Developer Productivity
                                             =


Saturday, December 8, 12
Where is the GAP and
                              What we Need?
                      •     HTTP as First Class       •   Rapid Development
                            Citizen
                                                      •   Rapid Deployment

                                                  +
                           • on JVM Ecosystem (i.e. Pure Java Support)
                           • Developer Productivity
                                             =


Saturday, December 8, 12
pure Java Web Framework
                    • https://github.com/playframework/play.git



Saturday, December 8, 12
• Founded by Guillaume Bort in 2007
                    •      500,000+ downloads, and counting

                    •      3000+ questions tagged in stackoverflow

                    • 7000+ members on Play google groups
                    • ~7000 topics
                    • 100+ modules

Saturday, December 8, 12
Play is




Saturday, December 8, 12
Play is
                    • Full Stack Framework (from compilation to
                           deployment)




Saturday, December 8, 12
Play is
                    • Full Stack Framework (from compilation to
                           deployment)
                    • Stateless Architecture




Saturday, December 8, 12
Play is
                    • Full Stack Framework (from compilation to
                           deployment)
                    • Stateless Architecture
                    • Not Based on Servlet API




Saturday, December 8, 12
Play is
                    • Full Stack Framework (from compilation to
                           deployment)
                    • Stateless Architecture
                    • Not Based on Servlet API
                    • RESTFul Architecture



Saturday, December 8, 12
Play is
                    • Full Stack Framework (from compilation to
                           deployment)
                    • Stateless Architecture
                    • Not Based on Servlet API
                    • RESTFul Architecture
                    • Shared Philosophy - Heavily borrowed from
                           Rails / Django




Saturday, December 8, 12
Play is
                    • Full Stack Framework (from compilation to
                           deployment)
                    • Stateless Architecture
                    • Not Based on Servlet API
                    • RESTFul Architecture
                    • Shared Philosophy - Heavily borrowed from
                           Rails / Django
                    • Web Framework - Not a Java Framework!!
Saturday, December 8, 12
Play History




                           • Started with Servlet and JSP
Saturday, December 8, 12
Play History
                                • Servlet and JSP replaced by
                                  custom Classloader
                                • Introduced Python support
                                • Groovy for Templates
                                • Async IO


Saturday, December 8, 12
Play History
                                 Introduced
                               • Ivy For Build
                               • Websockets
                               • Scala


Saturday, December 8, 12
Play History
                                  Introduced
                                • Ivy SBT
                                • Groovy Scala Templates
                                • Akka for middleware
                                • First class support for
                                  Scala



Saturday, December 8, 12
Our focus for Today is
                        on Play 1.2.5


Saturday, December 8, 12
Full Stack...




Saturday, December 8, 12
Full Stack...
                • Full Stack - everything “needed” is bundled
                           JDT Compiler     JPA




Saturday, December 8, 12
Full Stack...
                • Full Stack - everything “needed” is bundled
                            JDT Compiler     JPA



                      Can be packaged as standard WARS and
                      deployed in Servlet Containers


Saturday, December 8, 12
What’s in there?




Saturday, December 8, 12
What’s in there?
                             org.eclipse.jdt.core-3.6.0.jar




Saturday, December 8, 12
What’s in there?
                             org.eclipse.jdt.core-3.6.0.jar

                                 netty-3.2.4.Final.jar
                               aync-http-client-1.6.3.jar




Saturday, December 8, 12
What’s in there?
                             org.eclipse.jdt.core-3.6.0.jar

                                 netty-3.2.4.Final.jar
                               aync-http-client-1.6.3.jar




Saturday, December 8, 12
What’s in there?




Saturday, December 8, 12
What’s in there?
                              hibernate-entitymanager-3.6.0.jar
                                 hibernate-jpa-2.0-api-1.0.0.Final.jar
                                             jta-1.1.jar
                                   myql-connector-java-5.1.13.jar
                                         postgressql-9.0.jar
                                           h2-1.3.149.jar




Saturday, December 8, 12
What’s in there?

                               joda-date-time
                                 mem-cache
                                   groovy

                                                jamon-2.7.jar




Saturday, December 8, 12
What’s in there?

                               joda-date-time
                                 mem-cache
                                   groovy

                                                jamon-2.7.jar




Saturday, December 8, 12
What’s in there?




Saturday, December 8, 12
What’s in there?
                               commons-lang
                           commons-fileupload
                                commons-io
                           commons-collections
                             commons-logging
                              commons-email
                             commons-codec
                            commons-beanutis




Saturday, December 8, 12
What’s in there?
                               commons-lang
                           commons-fileupload
                                commons-io
                           commons-collections
                             commons-logging
                              commons-email
                             commons-codec
                            commons-beanutis




Saturday, December 8, 12
My top 10 features




Saturday, December 8, 12
My top 10 features
                •          Pure Java




Saturday, December 8, 12
My top 10 features
                •          Pure Java

                •          Starts fast, runs fast




Saturday, December 8, 12
My top 10 features
                •          Pure Java

                •          Starts fast, runs fast

                •          No compile, deploy,
                           restart cycle - Fix the
                           bug and hit reload!




Saturday, December 8, 12
My top 10 features
                •          Pure Java

                •          Starts fast, runs fast

                •          No compile, deploy,
                           restart cycle - Fix the
                           bug and hit reload!

                •          URL Routing




Saturday, December 8, 12
My top 10 features
                •          Pure Java

                •          Starts fast, runs fast

                •          No compile, deploy,
                           restart cycle - Fix the
                           bug and hit reload!

                •          URL Routing

                •          HTTP Parameter
                           Binding




Saturday, December 8, 12
My top 10 features
                •          Pure Java

                •          Starts fast, runs fast

                •          No compile, deploy,
                           restart cycle - Fix the
                           bug and hit reload!

                •          URL Routing

                •          HTTP Parameter
                           Binding

                •          Share nothing system -
                           no state in the server


Saturday, December 8, 12
My top 10 features
                •          Pure Java

                •          Starts fast, runs fast
                                                     •   Exact errors (including
                •          No compile, deploy,           line numbers, even for
                                                         groovy templates)
                           restart cycle - Fix the
                           bug and hit reload!

                •          URL Routing

                •          HTTP Parameter
                           Binding

                •          Share nothing system -
                           no state in the server


Saturday, December 8, 12
My top 10 features
                •          Pure Java

                •          Starts fast, runs fast
                                                     •   Exact errors (including
                •          No compile, deploy,           line numbers, even for
                                                         groovy templates)
                           restart cycle - Fix the
                           bug and hit reload!
                                                     •   Extensible by modules
                •          URL Routing

                •          HTTP Parameter
                           Binding

                •          Share nothing system -
                           no state in the server


Saturday, December 8, 12
My top 10 features
                •          Pure Java

                •          Starts fast, runs fast
                                                     •   Exact errors (including
                •          No compile, deploy,           line numbers, even for
                                                         groovy templates)
                           restart cycle - Fix the
                           bug and hit reload!
                                                     •   Extensible by modules
                •          URL Routing
                                                     •   Super Testing support
                •          HTTP Parameter
                           Binding

                •          Share nothing system -
                           no state in the server


Saturday, December 8, 12
My top 10 features
                •          Pure Java

                •          Starts fast, runs fast
                                                     •   Exact errors (including
                •          No compile, deploy,           line numbers, even for
                                                         groovy templates)
                           restart cycle - Fix the
                           bug and hit reload!
                                                     •   Extensible by modules
                •          URL Routing
                                                     •   Super Testing support
                •          HTTP Parameter
                                                     •   Easy deployment on
                           Binding
                                                         Cloud
                •          Share nothing system -
                           no state in the server


Saturday, December 8, 12
URL Routing & HTTP Parameter binding




Saturday, December 8, 12
URL Routing & HTTP Parameter binding

         http://www.myapp.com/items/233




Saturday, December 8, 12
URL Routing & HTTP Parameter binding

         http://www.myapp.com/items/233

        GET                /items/{id}   Application.show




Saturday, December 8, 12
URL Routing & HTTP Parameter binding

         http://www.myapp.com/items/233

        GET                /items/{id}   Application.show


      public static show(Long id) {
           Item item = Item.findById(id);
           render(item);
      }



Saturday, December 8, 12
URL Routing & HTTP Parameter binding

         http://www.myapp.com/items/233

        GET                /items/{id}   Application.show


      public static show(Long id) {
           Item item = Item.findById(id);
           render(item);
      }

     <div><b>Item : </b>${item.name}</div>

Saturday, December 8, 12
URL Routing & HTTP Parameter binding




Saturday, December 8, 12
URL Routing & HTTP Parameter binding

   POST                    /items/save   Application.save




Saturday, December 8, 12
URL Routing & HTTP Parameter binding

   POST                    /items/save   Application.save

    <form action="@{Application.save}" >
    <input type="hidden" name="item.id" value="${item.id}">
    <input type="text" name="item.name" />
    <input type="submit" value="Submit" />
    </form>




Saturday, December 8, 12
URL Routing & HTTP Parameter binding

   POST                    /items/save   Application.save

    <form action="@{Application.save}" >
    <input type="hidden" name="item.id" value="${item.id}">
    <input type="text" name="item.name" />
    <input type="submit" value="Submit" />
    </form>
    public void save(Item item) {
         item.save();
         show(item.id);
    }
Saturday, December 8, 12
Stateless Architecture
                    •      “Share Nothing” Philosophy - Nothing is
                           shared between reach request
                    •      No Session - i.e. No “HTTPSession” Object
                    •      You cannot do :
                           •   session.setAttribute("user" , user); 

                           •   Use HttpSessionListener to count sessions

                           •   ServletFilter , Servlet-related securities

                    •      Instead Play uses (delegates to) memcached as a
                           workaround


Saturday, December 8, 12
Where is the Session?
              Web Browser                    Play! Framework Server




                                                           Application




                           State            Play! Framework Server 2
                                                                          DB


                                                            Application




                                   Crypted signed cookie



Saturday, December 8, 12
Where is the Session?
              Web Browser                    Play! Framework Server




                                                           Application




                           State            Play! Framework Server 2
                                                                          DB


                                                            Application




                                   Crypted signed cookie



Saturday, December 8, 12
Where is the Session?
              Web Browser                    Play! Framework Server




                                                           Application




                           State            Play! Framework Server 2
                                                                          DB


                                                            Application




                                   Crypted signed cookie



Saturday, December 8, 12
Where is the Session?
              Web Browser                    Play! Framework Server




                                                           Application




                           State            Play! Framework Server 2
                                                                          DB


                                                            Application




                                   Crypted signed cookie



Saturday, December 8, 12
Where is the Session?
              Web Browser                    Play! Framework Server




                                                           Application




                           State            Play! Framework Server 2
                                                                          DB


                                                            Application




                                   Crypted signed cookie



Saturday, December 8, 12
Where is the Session?
              Web Browser                    Play! Framework Server




                                                           Application




                           State            Play! Framework Server 2
                                                                          DB


                                                            Application




                                   Crypted signed cookie



Saturday, December 8, 12
Play URLs Are RESTFul




Saturday, December 8, 12
Play URLs Are RESTFul
                           UGLY




Saturday, December 8, 12
Play URLs Are RESTFul
                           UGLY
                •          http://www.myapp.com/cont/servlet/buyService?
                           sessionId=3gh3haaa2gg2&action=nextPage&idExpanse
                           =false&flow=3C&event=s1e1&entityId=23bS&role=p&
                           date=04%2F12%F2010&returnPage=homeS02&out=tr
                           ue




Saturday, December 8, 12
Play URLs Are RESTFul
                           UGLY
                •          http://www.myapp.com/cont/servlet/buyService?
                           sessionId=3gh3haaa2gg2&action=nextPage&idExpanse
                           =false&flow=3C&event=s1e1&entityId=23bS&role=p&
                           date=04%2F12%F2010&returnPage=homeS02&out=tr
                           ue
                           GRACEFUL




Saturday, December 8, 12
Play URLs Are RESTFul
                           UGLY
                •          http://www.myapp.com/cont/servlet/buyService?
                           sessionId=3gh3haaa2gg2&action=nextPage&idExpanse
                           =false&flow=3C&event=s1e1&entityId=23bS&role=p&
                           date=04%2F12%F2010&returnPage=homeS02&out=tr
                           ue
                           GRACEFUL
                •          http://mysite.com/list/products/page/2




Saturday, December 8, 12
Play URLs Are RESTFul
                           UGLY
                •          http://www.myapp.com/cont/servlet/buyService?
                           sessionId=3gh3haaa2gg2&action=nextPage&idExpanse
                           =false&flow=3C&event=s1e1&entityId=23bS&role=p&
                           date=04%2F12%F2010&returnPage=homeS02&out=tr
                           ue
                           GRACEFUL
                •          http://mysite.com/list/products/page/2
                •          http://mysite.com/user/53




Saturday, December 8, 12
Play URLs Are RESTFul
                           UGLY
                •          http://www.myapp.com/cont/servlet/buyService?
                           sessionId=3gh3haaa2gg2&action=nextPage&idExpanse
                           =false&flow=3C&event=s1e1&entityId=23bS&role=p&
                           date=04%2F12%F2010&returnPage=homeS02&out=tr
                           ue
                           GRACEFUL
                •          http://mysite.com/list/products/page/2
                •          http://mysite.com/user/53

            You can Read it, Bookmark it, Share it and more over SEO
            Friendly
Saturday, December 8, 12
Play Request LifeCycle




Saturday, December 8, 12
Play Request LifeCycle




Saturday, December 8, 12
Play HTTP Request Path




Saturday, December 8, 12
Play HTTP Request Path




Saturday, December 8, 12
Play Modules




Saturday, December 8, 12
Play Modules




Saturday, December 8, 12
Informative Error Page
                           No Maven or Ant or Ivy build is required




Saturday, December 8, 12
Informative Error Page
                           No Maven or Ant or Ivy build is required




Saturday, December 8, 12
Tests in the Browser




Saturday, December 8, 12
Tests in the Browser




Saturday, December 8, 12
Documentation & Books




Saturday, December 8, 12
Saturday, December 8, 12
Wait there is more...



Saturday, December 8, 12
Saturday, December 8, 12
• Native Cloud deployment support on
                       Playapps, Heroku, Google App Engine,
                       Cloudbees




Saturday, December 8, 12
• Native Cloud deployment support on
                       Playapps, Heroku, Google App Engine,
                       Cloudbees
               • Modules for NoSQL, revert DB, Scaffold,
                       Excel, Senia, MongoDB, Scalate, PDF,
                       search, Excel export, etc.




Saturday, December 8, 12
• Native Cloud deployment support on
                       Playapps, Heroku, Google App Engine,
                       Cloudbees
               • Modules for NoSQL, revert DB, Scaffold,
                       Excel, Senia, MongoDB, Scalate, PDF,
                       search, Excel export, etc.
               • Easy to learn



Saturday, December 8, 12
• Native Cloud deployment support on
                       Playapps, Heroku, Google App Engine,
                       Cloudbees
               • Modules for NoSQL, revert DB, Scaffold,
                       Excel, Senia, MongoDB, Scalate, PDF,
                       search, Excel export, etc.
               • Easy to learn
               • .............................. and it’s


Saturday, December 8, 12
• Native Cloud deployment support on
                       Playapps, Heroku, Google App Engine,
                       Cloudbees
               • Modules for NoSQL, revert DB, Scaffold,
                       Excel, Senia, MongoDB, Scalate, PDF,
                       search, Excel export, etc.
               • Easy to learn
               • .............................. and it’s Java


Saturday, December 8, 12
• Native Cloud deployment support on
                       Playapps, Heroku, Google App Engine,
                       Cloudbees
               • Modules for NoSQL, revert DB, Scaffold,
                       Excel, Senia, MongoDB, Scalate, PDF,
                       search, Excel export, etc.
               • Easy to learn
               • .............................. and it’s Java
                             Give it a Try !
Saturday, December 8, 12
Quick Demo



Saturday, December 8, 12
Q &A



Saturday, December 8, 12
References

                       • http://www.playframework.org/




Saturday, December 8, 12
Thank You !
                           for listening


Saturday, December 8, 12

Contenu connexe

Tendances

Javantura 2014 - Java 8 JavaScript Nashorn
Javantura 2014 - Java 8 JavaScript NashornJavantura 2014 - Java 8 JavaScript Nashorn
Javantura 2014 - Java 8 JavaScript Nashorn
Miroslav Resetar
 
Zabbix - Company, Product and Services
Zabbix - Company, Product and ServicesZabbix - Company, Product and Services
Zabbix - Company, Product and Services
Zabbix
 
Zabbix 2.0 - New Features and Improvements
Zabbix 2.0 - New Features and ImprovementsZabbix 2.0 - New Features and Improvements
Zabbix 2.0 - New Features and Improvements
Zabbix
 
My site is slow
My site is slowMy site is slow
My site is slow
hernanibf
 

Tendances (18)

Devoxx Java Social and Agorava
Devoxx Java Social and AgoravaDevoxx Java Social and Agorava
Devoxx Java Social and Agorava
 
What Drove Wordnik Non-Relational?
What Drove Wordnik Non-Relational?What Drove Wordnik Non-Relational?
What Drove Wordnik Non-Relational?
 
Javantura 2014 - Java 8 JavaScript Nashorn
Javantura 2014 - Java 8 JavaScript NashornJavantura 2014 - Java 8 JavaScript Nashorn
Javantura 2014 - Java 8 JavaScript Nashorn
 
Unicon CAS Update March 2013
Unicon CAS Update March 2013Unicon CAS Update March 2013
Unicon CAS Update March 2013
 
Javascript FTW
Javascript FTWJavascript FTW
Javascript FTW
 
Mobile HTML5
Mobile HTML5Mobile HTML5
Mobile HTML5
 
Zabbix - Company, Product and Services
Zabbix - Company, Product and ServicesZabbix - Company, Product and Services
Zabbix - Company, Product and Services
 
The State of Front End Web Development 2011
The State of Front End Web Development 2011The State of Front End Web Development 2011
The State of Front End Web Development 2011
 
Zabbix 2.0 - New Features and Improvements
Zabbix 2.0 - New Features and ImprovementsZabbix 2.0 - New Features and Improvements
Zabbix 2.0 - New Features and Improvements
 
Modern Java Concurrency (OSCON 2012)
Modern Java Concurrency (OSCON 2012)Modern Java Concurrency (OSCON 2012)
Modern Java Concurrency (OSCON 2012)
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
 
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...Fixing Twitter  Improving The Performance And Scalability Of The Worlds Most ...
Fixing Twitter Improving The Performance And Scalability Of The Worlds Most ...
 
Responsive web design standards?
Responsive web design standards?Responsive web design standards?
Responsive web design standards?
 
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
Adopt OpenJDK - Lessons learned and Where we're going (FOSDEM 2013)
 
My site is slow
My site is slowMy site is slow
My site is slow
 
Polyglot and functional (Devoxx Nov/2011)
Polyglot and functional (Devoxx Nov/2011)Polyglot and functional (Devoxx Nov/2011)
Polyglot and functional (Devoxx Nov/2011)
 
A Global In-memory Data System for MySQL
A Global In-memory Data System for MySQLA Global In-memory Data System for MySQL
A Global In-memory Data System for MySQL
 
Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)
 

En vedette

CV UK Marco Manoli
CV UK Marco ManoliCV UK Marco Manoli
CV UK Marco Manoli
marco manoli
 
Play Framework: The Basics
Play Framework: The BasicsPlay Framework: The Basics
Play Framework: The Basics
Philip Langer
 

En vedette (12)

CV UK Marco Manoli
CV UK Marco ManoliCV UK Marco Manoli
CV UK Marco Manoli
 
Clojure intro
Clojure introClojure intro
Clojure intro
 
Introduction in the play framework
Introduction in the play frameworkIntroduction in the play framework
Introduction in the play framework
 
Play 2 Java Framework with TDD
Play 2 Java Framework with TDDPlay 2 Java Framework with TDD
Play 2 Java Framework with TDD
 
Project Phoenix - From PHP to the Play Framework in 3 months
Project Phoenix - From PHP to the Play Framework in 3 monthsProject Phoenix - From PHP to the Play Framework in 3 months
Project Phoenix - From PHP to the Play Framework in 3 months
 
Play framework - Bristol Java meetup
Play framework - Bristol Java meetupPlay framework - Bristol Java meetup
Play framework - Bristol Java meetup
 
Play framework 2 : Peter Hilton
Play framework 2 : Peter HiltonPlay framework 2 : Peter Hilton
Play framework 2 : Peter Hilton
 
Play framework 2.0 Introduction
Play framework 2.0 IntroductionPlay framework 2.0 Introduction
Play framework 2.0 Introduction
 
Play Framework: The Basics
Play Framework: The BasicsPlay Framework: The Basics
Play Framework: The Basics
 
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
Play framework training by Neelkanth Sachdeva @ Scala traits event , New Delh...
 
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
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome Economy
 

Similaire à Play

Enterprise javascriptsession1
Enterprise javascriptsession1Enterprise javascriptsession1
Enterprise javascriptsession1
Troy Miles
 
Building a Single-Page App: Backbone, Node.js, and Beyond
Building a Single-Page App: Backbone, Node.js, and BeyondBuilding a Single-Page App: Backbone, Node.js, and Beyond
Building a Single-Page App: Backbone, Node.js, and Beyond
Spike Brehm
 
Tulsa tech fest 2010 - web speed and scalability
Tulsa tech fest 2010  - web speed and scalabilityTulsa tech fest 2010  - web speed and scalability
Tulsa tech fest 2010 - web speed and scalability
Jason Ragsdale
 
Architecture of a Modern Web App - SpringOne India
Architecture of a Modern Web App - SpringOne IndiaArchitecture of a Modern Web App - SpringOne India
Architecture of a Modern Web App - SpringOne India
Jeremy Grelle
 
Beyond Apache: Faster Web Servers
Beyond Apache: Faster Web ServersBeyond Apache: Faster Web Servers
Beyond Apache: Faster Web Servers
webhostingguy
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatis
Will Iverson
 

Similaire à Play (20)

Enterprise javascriptsession1
Enterprise javascriptsession1Enterprise javascriptsession1
Enterprise javascriptsession1
 
Iwmn architecture
Iwmn architectureIwmn architecture
Iwmn architecture
 
Building a Single-Page App: Backbone, Node.js, and Beyond
Building a Single-Page App: Backbone, Node.js, and BeyondBuilding a Single-Page App: Backbone, Node.js, and Beyond
Building a Single-Page App: Backbone, Node.js, and Beyond
 
GWT-Basics
GWT-BasicsGWT-Basics
GWT-Basics
 
GWT-Basics
GWT-BasicsGWT-Basics
GWT-Basics
 
Einführung in RavenDB
Einführung in RavenDBEinführung in RavenDB
Einführung in RavenDB
 
Tulsa tech fest 2010 - web speed and scalability
Tulsa tech fest 2010  - web speed and scalabilityTulsa tech fest 2010  - web speed and scalability
Tulsa tech fest 2010 - web speed and scalability
 
HTML5 and Sencha Touch
HTML5 and Sencha TouchHTML5 and Sencha Touch
HTML5 and Sencha Touch
 
itft-Java evolution
itft-Java evolutionitft-Java evolution
itft-Java evolution
 
Architecture of a Modern Web App - SpringOne India
Architecture of a Modern Web App - SpringOne IndiaArchitecture of a Modern Web App - SpringOne India
Architecture of a Modern Web App - SpringOne India
 
Front End page speed performance improvements for Drupal
Front End page speed performance improvements for DrupalFront End page speed performance improvements for Drupal
Front End page speed performance improvements for Drupal
 
Beyond Apache: Faster Web Servers
Beyond Apache: Faster Web ServersBeyond Apache: Faster Web Servers
Beyond Apache: Faster Web Servers
 
Optimizing WordPress Performance on Shared Web Hosting
Optimizing WordPress Performance on Shared Web HostingOptimizing WordPress Performance on Shared Web Hosting
Optimizing WordPress Performance on Shared Web Hosting
 
Working and Features of HTML5 and PhoneGap - An Overview
Working and Features of HTML5 and PhoneGap - An OverviewWorking and Features of HTML5 and PhoneGap - An Overview
Working and Features of HTML5 and PhoneGap - An Overview
 
Gradle.Enemy at the gates
Gradle.Enemy at the gatesGradle.Enemy at the gates
Gradle.Enemy at the gates
 
Cloud Computing & Scaling Web Apps
Cloud Computing & Scaling Web AppsCloud Computing & Scaling Web Apps
Cloud Computing & Scaling Web Apps
 
JavaOne 2010 Keynote
JavaOne 2010 Keynote JavaOne 2010 Keynote
JavaOne 2010 Keynote
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatis
 
Inside the Atlassian OnDemand Private Cloud
Inside the Atlassian OnDemand Private CloudInside the Atlassian OnDemand Private Cloud
Inside the Atlassian OnDemand Private Cloud
 
Polyglot Grails
Polyglot GrailsPolyglot Grails
Polyglot Grails
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

Play

  • 1. Play Framework (Fun is back in Java) @basav Saturday, December 8, 12
  • 2. About Me • Just another Java developer • have experienced JSP, Struts2, Spring MVC, JSF etc • Fed up with complex Java EE environment for simple Web apps • Current Interests • Clojure, Play, Cloud.. Saturday, December 8, 12
  • 3. Agenda • Background - 5 mins • Why Play! Framework? - 10 mins • Features and Benefits - 15 mins • Demo - 10 mins • Q &A Saturday, December 8, 12
  • 4. Web is taking over.. • Web is providing data on HTTP not just web pages • Browser is acting as an Operating system • Javascript has become very powerful • Webapps are alive Saturday, December 8, 12
  • 5. Is Java Development Fun(for webapps)?? Saturday, December 8, 12
  • 7. Compared to Not Anymore.... Saturday, December 8, 12
  • 9. Web frameworks Non Java Java based Saturday, December 8, 12
  • 10. Non Java Web frameworks Saturday, December 8, 12
  • 11. Non Java Web frameworks • Are popular Saturday, December 8, 12
  • 12. Non Java Web frameworks • Are popular • HTTP is first class citizen Saturday, December 8, 12
  • 13. Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid Development Saturday, December 8, 12
  • 14. Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid Development • Rapid Deployment Saturday, December 8, 12
  • 15. Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid Development • Rapid Deployment • Less code Saturday, December 8, 12
  • 16. Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid Development • Rapid Deployment • Less code • JVM Ecosystem Saturday, December 8, 12
  • 18. Java Web frameworks • on JVM Saturday, December 8, 12
  • 19. Java Web frameworks • on JVM • Standard based Saturday, December 8, 12
  • 20. Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs Saturday, December 8, 12
  • 21. Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTP Saturday, December 8, 12
  • 22. Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTP • Rapid Development Saturday, December 8, 12
  • 23. Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTP • Rapid Development • Rapid Deployment Saturday, December 8, 12
  • 24. Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTP • Rapid Development • Rapid Deployment • Less More code Saturday, December 8, 12
  • 25. Where is the GAP and What we Need? Saturday, December 8, 12
  • 26. Where is the GAP and What we Need? • HTTP as First Class Citizen Saturday, December 8, 12
  • 27. Where is the GAP and What we Need? • HTTP as First Class Citizen • Rapid Development Saturday, December 8, 12
  • 28. Where is the GAP and What we Need? • HTTP as First Class Citizen • Rapid Development • Rapid Deployment Saturday, December 8, 12
  • 29. Where is the GAP and What we Need? • HTTP as First Class Citizen • Rapid Development • Rapid Deployment + Saturday, December 8, 12
  • 30. Where is the GAP and What we Need? • HTTP as First Class Citizen • Rapid Development • Rapid Deployment + • on JVM Ecosystem (i.e. Pure Java Support) Saturday, December 8, 12
  • 31. Conventional Java EE Stack for Web Apps • Complex • Lots of • Specs and Implementations • Configurations • Layered • Defined by Standards / Specs • Assembled by Interfaces Saturday, December 8, 12
  • 32. Conventional Java EE Stack for Web Apps • Complex • Lots of • Specs and Implementations OVER ARCHITECTED • Configurations • Layered • Defined by Standards / Specs • Assembled by Interfaces Saturday, December 8, 12
  • 33. Why? “Java developers are building Java applications, not web applications” Saturday, December 8, 12
  • 34. Why? “Java culture emphasis interfaces and layers of abstraction over solving problems directly.” Saturday, December 8, 12
  • 35. What about Developer Productivity? Saturday, December 8, 12
  • 36. What about Developer Productivity? • code change -> run Maven / Ant -> build war -> copy-> Deploy -> wait (sometimes server restart) -> open-browser-> test (Try developing something on Webpshere, you understand what I mean) Saturday, December 8, 12
  • 38. Developer Productivity • important Saturday, December 8, 12
  • 39. Developer Productivity • important • is of economic value Saturday, December 8, 12
  • 40. Developer Productivity • important • is of economic value • Lets not pay for compile-test-deploy cycle Saturday, December 8, 12
  • 41. Developer Productivity • important • is of economic value • Lets not pay for compile-test-deploy cycle • more importantly - Lets not bore them Saturday, December 8, 12
  • 42. Where is the GAP and What we Need? Saturday, December 8, 12
  • 43. Where is the GAP and What we Need? • HTTP as First Class • Rapid Development Citizen • Rapid Deployment + • on JVM Ecosystem (i.e. Pure Java Support) Saturday, December 8, 12
  • 44. Where is the GAP and What we Need? • HTTP as First Class • Rapid Development Citizen • Rapid Deployment + • on JVM Ecosystem (i.e. Pure Java Support) • Developer Productivity Saturday, December 8, 12
  • 45. Where is the GAP and What we Need? • HTTP as First Class • Rapid Development Citizen • Rapid Deployment + • on JVM Ecosystem (i.e. Pure Java Support) • Developer Productivity = Saturday, December 8, 12
  • 46. Where is the GAP and What we Need? • HTTP as First Class • Rapid Development Citizen • Rapid Deployment + • on JVM Ecosystem (i.e. Pure Java Support) • Developer Productivity = Saturday, December 8, 12
  • 47. pure Java Web Framework • https://github.com/playframework/play.git Saturday, December 8, 12
  • 48. • Founded by Guillaume Bort in 2007 • 500,000+ downloads, and counting • 3000+ questions tagged in stackoverflow • 7000+ members on Play google groups • ~7000 topics • 100+ modules Saturday, December 8, 12
  • 50. Play is • Full Stack Framework (from compilation to deployment) Saturday, December 8, 12
  • 51. Play is • Full Stack Framework (from compilation to deployment) • Stateless Architecture Saturday, December 8, 12
  • 52. Play is • Full Stack Framework (from compilation to deployment) • Stateless Architecture • Not Based on Servlet API Saturday, December 8, 12
  • 53. Play is • Full Stack Framework (from compilation to deployment) • Stateless Architecture • Not Based on Servlet API • RESTFul Architecture Saturday, December 8, 12
  • 54. Play is • Full Stack Framework (from compilation to deployment) • Stateless Architecture • Not Based on Servlet API • RESTFul Architecture • Shared Philosophy - Heavily borrowed from Rails / Django Saturday, December 8, 12
  • 55. Play is • Full Stack Framework (from compilation to deployment) • Stateless Architecture • Not Based on Servlet API • RESTFul Architecture • Shared Philosophy - Heavily borrowed from Rails / Django • Web Framework - Not a Java Framework!! Saturday, December 8, 12
  • 56. Play History • Started with Servlet and JSP Saturday, December 8, 12
  • 57. Play History • Servlet and JSP replaced by custom Classloader • Introduced Python support • Groovy for Templates • Async IO Saturday, December 8, 12
  • 58. Play History Introduced • Ivy For Build • Websockets • Scala Saturday, December 8, 12
  • 59. Play History Introduced • Ivy SBT • Groovy Scala Templates • Akka for middleware • First class support for Scala Saturday, December 8, 12
  • 60. Our focus for Today is on Play 1.2.5 Saturday, December 8, 12
  • 62. Full Stack... • Full Stack - everything “needed” is bundled JDT Compiler JPA Saturday, December 8, 12
  • 63. Full Stack... • Full Stack - everything “needed” is bundled JDT Compiler JPA Can be packaged as standard WARS and deployed in Servlet Containers Saturday, December 8, 12
  • 65. What’s in there? org.eclipse.jdt.core-3.6.0.jar Saturday, December 8, 12
  • 66. What’s in there? org.eclipse.jdt.core-3.6.0.jar netty-3.2.4.Final.jar aync-http-client-1.6.3.jar Saturday, December 8, 12
  • 67. What’s in there? org.eclipse.jdt.core-3.6.0.jar netty-3.2.4.Final.jar aync-http-client-1.6.3.jar Saturday, December 8, 12
  • 69. What’s in there? hibernate-entitymanager-3.6.0.jar hibernate-jpa-2.0-api-1.0.0.Final.jar jta-1.1.jar myql-connector-java-5.1.13.jar postgressql-9.0.jar h2-1.3.149.jar Saturday, December 8, 12
  • 70. What’s in there? joda-date-time mem-cache groovy jamon-2.7.jar Saturday, December 8, 12
  • 71. What’s in there? joda-date-time mem-cache groovy jamon-2.7.jar Saturday, December 8, 12
  • 73. What’s in there? commons-lang commons-fileupload commons-io commons-collections commons-logging commons-email commons-codec commons-beanutis Saturday, December 8, 12
  • 74. What’s in there? commons-lang commons-fileupload commons-io commons-collections commons-logging commons-email commons-codec commons-beanutis Saturday, December 8, 12
  • 75. My top 10 features Saturday, December 8, 12
  • 76. My top 10 features • Pure Java Saturday, December 8, 12
  • 77. My top 10 features • Pure Java • Starts fast, runs fast Saturday, December 8, 12
  • 78. My top 10 features • Pure Java • Starts fast, runs fast • No compile, deploy, restart cycle - Fix the bug and hit reload! Saturday, December 8, 12
  • 79. My top 10 features • Pure Java • Starts fast, runs fast • No compile, deploy, restart cycle - Fix the bug and hit reload! • URL Routing Saturday, December 8, 12
  • 80. My top 10 features • Pure Java • Starts fast, runs fast • No compile, deploy, restart cycle - Fix the bug and hit reload! • URL Routing • HTTP Parameter Binding Saturday, December 8, 12
  • 81. My top 10 features • Pure Java • Starts fast, runs fast • No compile, deploy, restart cycle - Fix the bug and hit reload! • URL Routing • HTTP Parameter Binding • Share nothing system - no state in the server Saturday, December 8, 12
  • 82. My top 10 features • Pure Java • Starts fast, runs fast • Exact errors (including • No compile, deploy, line numbers, even for groovy templates) restart cycle - Fix the bug and hit reload! • URL Routing • HTTP Parameter Binding • Share nothing system - no state in the server Saturday, December 8, 12
  • 83. My top 10 features • Pure Java • Starts fast, runs fast • Exact errors (including • No compile, deploy, line numbers, even for groovy templates) restart cycle - Fix the bug and hit reload! • Extensible by modules • URL Routing • HTTP Parameter Binding • Share nothing system - no state in the server Saturday, December 8, 12
  • 84. My top 10 features • Pure Java • Starts fast, runs fast • Exact errors (including • No compile, deploy, line numbers, even for groovy templates) restart cycle - Fix the bug and hit reload! • Extensible by modules • URL Routing • Super Testing support • HTTP Parameter Binding • Share nothing system - no state in the server Saturday, December 8, 12
  • 85. My top 10 features • Pure Java • Starts fast, runs fast • Exact errors (including • No compile, deploy, line numbers, even for groovy templates) restart cycle - Fix the bug and hit reload! • Extensible by modules • URL Routing • Super Testing support • HTTP Parameter • Easy deployment on Binding Cloud • Share nothing system - no state in the server Saturday, December 8, 12
  • 86. URL Routing & HTTP Parameter binding Saturday, December 8, 12
  • 87. URL Routing & HTTP Parameter binding http://www.myapp.com/items/233 Saturday, December 8, 12
  • 88. URL Routing & HTTP Parameter binding http://www.myapp.com/items/233 GET /items/{id} Application.show Saturday, December 8, 12
  • 89. URL Routing & HTTP Parameter binding http://www.myapp.com/items/233 GET /items/{id} Application.show public static show(Long id) { Item item = Item.findById(id); render(item); } Saturday, December 8, 12
  • 90. URL Routing & HTTP Parameter binding http://www.myapp.com/items/233 GET /items/{id} Application.show public static show(Long id) { Item item = Item.findById(id); render(item); } <div><b>Item : </b>${item.name}</div> Saturday, December 8, 12
  • 91. URL Routing & HTTP Parameter binding Saturday, December 8, 12
  • 92. URL Routing & HTTP Parameter binding POST /items/save Application.save Saturday, December 8, 12
  • 93. URL Routing & HTTP Parameter binding POST /items/save Application.save <form action="@{Application.save}" > <input type="hidden" name="item.id" value="${item.id}"> <input type="text" name="item.name" /> <input type="submit" value="Submit" /> </form> Saturday, December 8, 12
  • 94. URL Routing & HTTP Parameter binding POST /items/save Application.save <form action="@{Application.save}" > <input type="hidden" name="item.id" value="${item.id}"> <input type="text" name="item.name" /> <input type="submit" value="Submit" /> </form> public void save(Item item) { item.save(); show(item.id); } Saturday, December 8, 12
  • 95. Stateless Architecture • “Share Nothing” Philosophy - Nothing is shared between reach request • No Session - i.e. No “HTTPSession” Object • You cannot do : • session.setAttribute("user" , user);  • Use HttpSessionListener to count sessions • ServletFilter , Servlet-related securities • Instead Play uses (delegates to) memcached as a workaround Saturday, December 8, 12
  • 96. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookie Saturday, December 8, 12
  • 97. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookie Saturday, December 8, 12
  • 98. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookie Saturday, December 8, 12
  • 99. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookie Saturday, December 8, 12
  • 100. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookie Saturday, December 8, 12
  • 101. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookie Saturday, December 8, 12
  • 102. Play URLs Are RESTFul Saturday, December 8, 12
  • 103. Play URLs Are RESTFul UGLY Saturday, December 8, 12
  • 104. Play URLs Are RESTFul UGLY • http://www.myapp.com/cont/servlet/buyService? sessionId=3gh3haaa2gg2&action=nextPage&idExpanse =false&flow=3C&event=s1e1&entityId=23bS&role=p& date=04%2F12%F2010&returnPage=homeS02&out=tr ue Saturday, December 8, 12
  • 105. Play URLs Are RESTFul UGLY • http://www.myapp.com/cont/servlet/buyService? sessionId=3gh3haaa2gg2&action=nextPage&idExpanse =false&flow=3C&event=s1e1&entityId=23bS&role=p& date=04%2F12%F2010&returnPage=homeS02&out=tr ue GRACEFUL Saturday, December 8, 12
  • 106. Play URLs Are RESTFul UGLY • http://www.myapp.com/cont/servlet/buyService? sessionId=3gh3haaa2gg2&action=nextPage&idExpanse =false&flow=3C&event=s1e1&entityId=23bS&role=p& date=04%2F12%F2010&returnPage=homeS02&out=tr ue GRACEFUL • http://mysite.com/list/products/page/2 Saturday, December 8, 12
  • 107. Play URLs Are RESTFul UGLY • http://www.myapp.com/cont/servlet/buyService? sessionId=3gh3haaa2gg2&action=nextPage&idExpanse =false&flow=3C&event=s1e1&entityId=23bS&role=p& date=04%2F12%F2010&returnPage=homeS02&out=tr ue GRACEFUL • http://mysite.com/list/products/page/2 • http://mysite.com/user/53 Saturday, December 8, 12
  • 108. Play URLs Are RESTFul UGLY • http://www.myapp.com/cont/servlet/buyService? sessionId=3gh3haaa2gg2&action=nextPage&idExpanse =false&flow=3C&event=s1e1&entityId=23bS&role=p& date=04%2F12%F2010&returnPage=homeS02&out=tr ue GRACEFUL • http://mysite.com/list/products/page/2 • http://mysite.com/user/53 You can Read it, Bookmark it, Share it and more over SEO Friendly Saturday, December 8, 12
  • 111. Play HTTP Request Path Saturday, December 8, 12
  • 112. Play HTTP Request Path Saturday, December 8, 12
  • 115. Informative Error Page No Maven or Ant or Ivy build is required Saturday, December 8, 12
  • 116. Informative Error Page No Maven or Ant or Ivy build is required Saturday, December 8, 12
  • 117. Tests in the Browser Saturday, December 8, 12
  • 118. Tests in the Browser Saturday, December 8, 12
  • 121. Wait there is more... Saturday, December 8, 12
  • 123. • Native Cloud deployment support on Playapps, Heroku, Google App Engine, Cloudbees Saturday, December 8, 12
  • 124. • Native Cloud deployment support on Playapps, Heroku, Google App Engine, Cloudbees • Modules for NoSQL, revert DB, Scaffold, Excel, Senia, MongoDB, Scalate, PDF, search, Excel export, etc. Saturday, December 8, 12
  • 125. • Native Cloud deployment support on Playapps, Heroku, Google App Engine, Cloudbees • Modules for NoSQL, revert DB, Scaffold, Excel, Senia, MongoDB, Scalate, PDF, search, Excel export, etc. • Easy to learn Saturday, December 8, 12
  • 126. • Native Cloud deployment support on Playapps, Heroku, Google App Engine, Cloudbees • Modules for NoSQL, revert DB, Scaffold, Excel, Senia, MongoDB, Scalate, PDF, search, Excel export, etc. • Easy to learn • .............................. and it’s Saturday, December 8, 12
  • 127. • Native Cloud deployment support on Playapps, Heroku, Google App Engine, Cloudbees • Modules for NoSQL, revert DB, Scaffold, Excel, Senia, MongoDB, Scalate, PDF, search, Excel export, etc. • Easy to learn • .............................. and it’s Java Saturday, December 8, 12
  • 128. • Native Cloud deployment support on Playapps, Heroku, Google App Engine, Cloudbees • Modules for NoSQL, revert DB, Scaffold, Excel, Senia, MongoDB, Scalate, PDF, search, Excel export, etc. • Easy to learn • .............................. and it’s Java Give it a Try ! Saturday, December 8, 12
  • 131. References • http://www.playframework.org/ Saturday, December 8, 12
  • 132. Thank You ! for listening Saturday, December 8, 12