• Save
Play
Upcoming SlideShare
Loading in...5
×
 

Play

on

  • 824 views

 

Statistics

Views

Total Views
824
Views on SlideShare
450
Embed Views
374

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 374

http://www.scoop.it 374

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Play Play Presentation Transcript

  • Play Framework (Fun is back in Java) @basavSaturday, 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 &ASaturday, December 8, 12 View slide
  • 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 aliveSaturday, December 8, 12 View slide
  • Is Java Development Fun(for webapps)??Saturday, December 8, 12
  • Compared toSaturday, December 8, 12
  • Compared to Not Anymore....Saturday, December 8, 12
  • Saturday, December 8, 12
  • Web frameworks Non Java Java basedSaturday, December 8, 12
  • Non Java Web frameworksSaturday, December 8, 12
  • Non Java Web frameworks • Are popularSaturday, December 8, 12
  • Non Java Web frameworks • Are popular • HTTP is first class citizenSaturday, December 8, 12
  • Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid DevelopmentSaturday, December 8, 12
  • Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid Development • Rapid DeploymentSaturday, December 8, 12
  • Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid Development • Rapid Deployment • Less codeSaturday, December 8, 12
  • Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid Development • Rapid Deployment • Less code • JVM EcosystemSaturday, December 8, 12
  • Java Web frameworksSaturday, December 8, 12
  • Java Web frameworks • on JVMSaturday, December 8, 12
  • Java Web frameworks • on JVM • Standard basedSaturday, December 8, 12
  • Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet SpecsSaturday, December 8, 12
  • Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTPSaturday, December 8, 12
  • Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTP • Rapid DevelopmentSaturday, December 8, 12
  • Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTP • Rapid Development • Rapid DeploymentSaturday, December 8, 12
  • Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTP • Rapid Development • Rapid Deployment • Less More codeSaturday, 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 CitizenSaturday, December 8, 12
  • Where is the GAP and What we Need? • HTTP as First Class Citizen • Rapid DevelopmentSaturday, December 8, 12
  • Where is the GAP and What we Need? • HTTP as First Class Citizen • Rapid Development • Rapid DeploymentSaturday, 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 InterfacesSaturday, 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 InterfacesSaturday, 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 ProductivitySaturday, December 8, 12
  • Developer Productivity • importantSaturday, December 8, 12
  • Developer Productivity • important • is of economic valueSaturday, December 8, 12
  • Developer Productivity • important • is of economic value • Lets not pay for compile-test-deploy cycleSaturday, December 8, 12
  • Developer Productivity • important • is of economic value • Lets not pay for compile-test-deploy cycle • more importantly - Lets not bore themSaturday, 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 ProductivitySaturday, 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.gitSaturday, 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+ modulesSaturday, December 8, 12
  • Play isSaturday, 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 ArchitectureSaturday, December 8, 12
  • Play is • Full Stack Framework (from compilation to deployment) • Stateless Architecture • Not Based on Servlet APISaturday, December 8, 12
  • Play is • Full Stack Framework (from compilation to deployment) • Stateless Architecture • Not Based on Servlet API • RESTFul ArchitectureSaturday, 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 / DjangoSaturday, 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 JSPSaturday, December 8, 12
  • Play History • Servlet and JSP replaced by custom Classloader • Introduced Python support • Groovy for Templates • Async IOSaturday, December 8, 12
  • Play History Introduced • Ivy For Build • Websockets • ScalaSaturday, December 8, 12
  • Play History Introduced • Ivy SBT • Groovy Scala Templates • Akka for middleware • First class support for ScalaSaturday, December 8, 12
  • Our focus for Today is on Play 1.2.5Saturday, December 8, 12
  • Full Stack...Saturday, December 8, 12
  • Full Stack... • Full Stack - everything “needed” is bundled JDT Compiler JPASaturday, December 8, 12
  • Full Stack... • Full Stack - everything “needed” is bundled JDT Compiler JPA Can be packaged as standard WARS and deployed in Servlet ContainersSaturday, December 8, 12
  • What’s in there?Saturday, December 8, 12
  • What’s in there? org.eclipse.jdt.core-3.6.0.jarSaturday, 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.jarSaturday, 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.jarSaturday, 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.jarSaturday, December 8, 12
  • What’s in there? joda-date-time mem-cache groovy jamon-2.7.jarSaturday, December 8, 12
  • What’s in there? joda-date-time mem-cache groovy jamon-2.7.jarSaturday, 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-beanutisSaturday, December 8, 12
  • What’s in there? commons-lang commons-fileupload commons-io commons-collections commons-logging commons-email commons-codec commons-beanutisSaturday, December 8, 12
  • My top 10 featuresSaturday, December 8, 12
  • My top 10 features • Pure JavaSaturday, December 8, 12
  • My top 10 features • Pure Java • Starts fast, runs fastSaturday, 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 RoutingSaturday, 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 BindingSaturday, 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 serverSaturday, 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 serverSaturday, 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 serverSaturday, 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 serverSaturday, 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 serverSaturday, December 8, 12
  • URL Routing & HTTP Parameter bindingSaturday, December 8, 12
  • URL Routing & HTTP Parameter binding http://www.myapp.com/items/233Saturday, December 8, 12
  • URL Routing & HTTP Parameter binding http://www.myapp.com/items/233 GET /items/{id} Application.showSaturday, 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 bindingSaturday, December 8, 12
  • URL Routing & HTTP Parameter binding POST /items/save Application.saveSaturday, 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 workaroundSaturday, December 8, 12
  • Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • Play URLs Are RESTFulSaturday, December 8, 12
  • Play URLs Are RESTFul UGLYSaturday, 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 ueSaturday, 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 GRACEFULSaturday, 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/2Saturday, 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/53Saturday, 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 FriendlySaturday, December 8, 12
  • Play Request LifeCycleSaturday, December 8, 12
  • Play Request LifeCycleSaturday, December 8, 12
  • Play HTTP Request PathSaturday, December 8, 12
  • Play HTTP Request PathSaturday, December 8, 12
  • Play ModulesSaturday, December 8, 12
  • Play ModulesSaturday, December 8, 12
  • Informative Error Page No Maven or Ant or Ivy build is requiredSaturday, December 8, 12
  • Informative Error Page No Maven or Ant or Ivy build is requiredSaturday, December 8, 12
  • Tests in the BrowserSaturday, December 8, 12
  • Tests in the BrowserSaturday, December 8, 12
  • Documentation & BooksSaturday, 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, CloudbeesSaturday, 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 learnSaturday, 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’sSaturday, 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 JavaSaturday, 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 DemoSaturday, December 8, 12
  • Q &ASaturday, December 8, 12
  • References • http://www.playframework.org/Saturday, December 8, 12
  • Thank You ! for listeningSaturday, December 8, 12