SlideShare uma empresa Scribd logo
1 de 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

Mais conteúdo relacionado

Mais procurados

What Drove Wordnik Non-Relational?
What Drove Wordnik Non-Relational?What Drove Wordnik Non-Relational?
What Drove Wordnik Non-Relational?DATAVERSITY
 
Javantura 2014 - Java 8 JavaScript Nashorn
Javantura 2014 - Java 8 JavaScript NashornJavantura 2014 - Java 8 JavaScript Nashorn
Javantura 2014 - Java 8 JavaScript NashornMiroslav Resetar
 
Unicon CAS Update March 2013
Unicon CAS Update March 2013Unicon CAS Update March 2013
Unicon CAS Update March 2013Andrew Petro
 
Zabbix - Company, Product and Services
Zabbix - Company, Product and ServicesZabbix - Company, Product and Services
Zabbix - Company, Product and ServicesZabbix
 
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 2011Pascal Rettig
 
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 ImprovementsZabbix
 
Modern Java Concurrency (OSCON 2012)
Modern Java Concurrency (OSCON 2012)Modern Java Concurrency (OSCON 2012)
Modern Java Concurrency (OSCON 2012)Martijn Verburg
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoPaul Withers
 
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 ...smallerror
 
Responsive web design standards?
Responsive web design standards?Responsive web design standards?
Responsive web design standards?Chris Mills
 
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)Martijn Verburg
 
My site is slow
My site is slowMy site is slow
My site is slowhernanibf
 
Polyglot and functional (Devoxx Nov/2011)
Polyglot and functional (Devoxx Nov/2011)Polyglot and functional (Devoxx Nov/2011)
Polyglot and functional (Devoxx Nov/2011)Martijn Verburg
 
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 MySQLDaniel Austin
 
Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)Polyglot and Functional Programming (OSCON 2012)
Polyglot and Functional Programming (OSCON 2012)Martijn Verburg
 

Mais procurados (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)
 

Destaque

CV UK Marco Manoli
CV UK Marco ManoliCV UK Marco Manoli
CV UK Marco Manolimarco manoli
 
Introduction in the play framework
Introduction in the play frameworkIntroduction in the play framework
Introduction in the play frameworkAlexander Reelsen
 
Play 2 Java Framework with TDD
Play 2 Java Framework with TDDPlay 2 Java Framework with TDD
Play 2 Java Framework with TDDBasav Nagur
 
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 monthsManuel Bernhardt
 
Play framework - Bristol Java meetup
Play framework - Bristol Java meetupPlay framework - Bristol Java meetup
Play framework - Bristol Java meetupRobin Warren
 
Play framework 2 : Peter Hilton
Play framework 2 : Peter HiltonPlay framework 2 : Peter Hilton
Play framework 2 : Peter HiltonJAX London
 
Play framework 2.0 Introduction
Play framework 2.0 IntroductionPlay framework 2.0 Introduction
Play framework 2.0 Introductionjorgen99
 
Play Framework: The Basics
Play Framework: The BasicsPlay Framework: The Basics
Play Framework: The BasicsPhilip Langer
 
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...Knoldus Inc.
 
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
 
The Outcome Economy
The Outcome EconomyThe Outcome Economy
The Outcome EconomyHelge Tennø
 

Destaque (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
 

Semelhante a Play

Enterprise javascriptsession1
Enterprise javascriptsession1Enterprise javascriptsession1
Enterprise javascriptsession1Troy 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 BeyondSpike 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 scalabilityJason Ragsdale
 
itft-Java evolution
itft-Java evolutionitft-Java evolution
itft-Java evolutionAtul Sehdev
 
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 IndiaJeremy Grelle
 
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 DrupalPromet Source
 
Beyond Apache: Faster Web Servers
Beyond Apache: Faster Web ServersBeyond Apache: Faster Web Servers
Beyond Apache: Faster Web Serverswebhostingguy
 
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 HostingJon Brown
 
Gradle.Enemy at the gates
Gradle.Enemy at the gatesGradle.Enemy at the gates
Gradle.Enemy at the gatesStrannik_2013
 
Cloud Computing & Scaling Web Apps
Cloud Computing & Scaling Web AppsCloud Computing & Scaling Web Apps
Cloud Computing & Scaling Web AppsMark Slingsby
 
SeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisSeaJUG May 2012 mybatis
SeaJUG May 2012 mybatisWill Iverson
 
Inside the Atlassian OnDemand Private Cloud
Inside the Atlassian OnDemand Private CloudInside the Atlassian OnDemand Private Cloud
Inside the Atlassian OnDemand Private CloudAtlassian
 

Semelhante a 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
 

Último

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
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...Martijn de Jong
 
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...Neo4j
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Último (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
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...
 
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...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

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