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

Like this? Share it with your network

Share

Play

on

  • 848 views

 

Statistics

Views

Total Views
848
Views on SlideShare
474
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 Presentation Transcript

  • 1. Play Framework (Fun is back in Java) @basavSaturday, 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 &ASaturday, 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 aliveSaturday, December 8, 12
  • 5. Is Java Development Fun(for webapps)??Saturday, December 8, 12
  • 6. Compared toSaturday, December 8, 12
  • 7. Compared to Not Anymore....Saturday, December 8, 12
  • 8. Saturday, December 8, 12
  • 9. Web frameworks Non Java Java basedSaturday, December 8, 12
  • 10. Non Java Web frameworksSaturday, December 8, 12
  • 11. Non Java Web frameworks • Are popularSaturday, December 8, 12
  • 12. Non Java Web frameworks • Are popular • HTTP is first class citizenSaturday, December 8, 12
  • 13. Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid DevelopmentSaturday, December 8, 12
  • 14. Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid Development • Rapid DeploymentSaturday, December 8, 12
  • 15. Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid Development • Rapid Deployment • Less codeSaturday, December 8, 12
  • 16. Non Java Web frameworks • Are popular • HTTP is first class citizen • Rapid Development • Rapid Deployment • Less code • JVM EcosystemSaturday, December 8, 12
  • 17. Java Web frameworksSaturday, December 8, 12
  • 18. Java Web frameworks • on JVMSaturday, December 8, 12
  • 19. Java Web frameworks • on JVM • Standard basedSaturday, December 8, 12
  • 20. Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet SpecsSaturday, December 8, 12
  • 21. Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTPSaturday, December 8, 12
  • 22. Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTP • Rapid DevelopmentSaturday, December 8, 12
  • 23. Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTP • Rapid Development • Rapid DeploymentSaturday, December 8, 12
  • 24. Java Web frameworks • on JVM • Standard based • Implement Heavy Servlet Specs • Embrace HTTP • Rapid Development • Rapid Deployment • Less More codeSaturday, 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 CitizenSaturday, December 8, 12
  • 27. Where is the GAP and What we Need? • HTTP as First Class Citizen • Rapid DevelopmentSaturday, December 8, 12
  • 28. Where is the GAP and What we Need? • HTTP as First Class Citizen • Rapid Development • Rapid DeploymentSaturday, 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 InterfacesSaturday, 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 InterfacesSaturday, 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
  • 37. Developer ProductivitySaturday, December 8, 12
  • 38. Developer Productivity • importantSaturday, December 8, 12
  • 39. Developer Productivity • important • is of economic valueSaturday, December 8, 12
  • 40. Developer Productivity • important • is of economic value • Lets not pay for compile-test-deploy cycleSaturday, December 8, 12
  • 41. Developer Productivity • important • is of economic value • Lets not pay for compile-test-deploy cycle • more importantly - Lets not bore themSaturday, 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 ProductivitySaturday, 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.gitSaturday, 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+ modulesSaturday, December 8, 12
  • 49. Play isSaturday, 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 ArchitectureSaturday, December 8, 12
  • 52. Play is • Full Stack Framework (from compilation to deployment) • Stateless Architecture • Not Based on Servlet APISaturday, December 8, 12
  • 53. Play is • Full Stack Framework (from compilation to deployment) • Stateless Architecture • Not Based on Servlet API • RESTFul ArchitectureSaturday, 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 / DjangoSaturday, 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 JSPSaturday, December 8, 12
  • 57. Play History • Servlet and JSP replaced by custom Classloader • Introduced Python support • Groovy for Templates • Async IOSaturday, December 8, 12
  • 58. Play History Introduced • Ivy For Build • Websockets • ScalaSaturday, December 8, 12
  • 59. Play History Introduced • Ivy SBT • Groovy Scala Templates • Akka for middleware • First class support for ScalaSaturday, December 8, 12
  • 60. Our focus for Today is on Play 1.2.5Saturday, December 8, 12
  • 61. Full Stack...Saturday, December 8, 12
  • 62. Full Stack... • Full Stack - everything “needed” is bundled JDT Compiler JPASaturday, 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 ContainersSaturday, December 8, 12
  • 64. What’s in there?Saturday, December 8, 12
  • 65. What’s in there? org.eclipse.jdt.core-3.6.0.jarSaturday, 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.jarSaturday, 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.jarSaturday, December 8, 12
  • 68. What’s in there?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.jarSaturday, December 8, 12
  • 70. What’s in there? joda-date-time mem-cache groovy jamon-2.7.jarSaturday, December 8, 12
  • 71. What’s in there? joda-date-time mem-cache groovy jamon-2.7.jarSaturday, December 8, 12
  • 72. What’s in there?Saturday, December 8, 12
  • 73. What’s in there? commons-lang commons-fileupload commons-io commons-collections commons-logging commons-email commons-codec commons-beanutisSaturday, December 8, 12
  • 74. What’s in there? commons-lang commons-fileupload commons-io commons-collections commons-logging commons-email commons-codec commons-beanutisSaturday, December 8, 12
  • 75. My top 10 featuresSaturday, December 8, 12
  • 76. My top 10 features • Pure JavaSaturday, December 8, 12
  • 77. My top 10 features • Pure Java • Starts fast, runs fastSaturday, 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 RoutingSaturday, 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 BindingSaturday, 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 serverSaturday, 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 serverSaturday, 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 serverSaturday, 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 serverSaturday, 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 serverSaturday, December 8, 12
  • 86. URL Routing & HTTP Parameter bindingSaturday, December 8, 12
  • 87. URL Routing & HTTP Parameter binding http://www.myapp.com/items/233Saturday, December 8, 12
  • 88. URL Routing & HTTP Parameter binding http://www.myapp.com/items/233 GET /items/{id} Application.showSaturday, 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 bindingSaturday, December 8, 12
  • 92. URL Routing & HTTP Parameter binding POST /items/save Application.saveSaturday, 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 workaroundSaturday, December 8, 12
  • 96. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • 97. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • 98. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • 99. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • 100. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • 101. Where is the Session? Web Browser Play! Framework Server Application State Play! Framework Server 2 DB Application Crypted signed cookieSaturday, December 8, 12
  • 102. Play URLs Are RESTFulSaturday, December 8, 12
  • 103. Play URLs Are RESTFul UGLYSaturday, 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 ueSaturday, 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 GRACEFULSaturday, 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/2Saturday, 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/53Saturday, 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 FriendlySaturday, December 8, 12
  • 109. Play Request LifeCycleSaturday, December 8, 12
  • 110. Play Request LifeCycleSaturday, December 8, 12
  • 111. Play HTTP Request PathSaturday, December 8, 12
  • 112. Play HTTP Request PathSaturday, December 8, 12
  • 113. Play ModulesSaturday, December 8, 12
  • 114. Play ModulesSaturday, December 8, 12
  • 115. Informative Error Page No Maven or Ant or Ivy build is requiredSaturday, December 8, 12
  • 116. Informative Error Page No Maven or Ant or Ivy build is requiredSaturday, December 8, 12
  • 117. Tests in the BrowserSaturday, December 8, 12
  • 118. Tests in the BrowserSaturday, December 8, 12
  • 119. Documentation & BooksSaturday, December 8, 12
  • 120. Saturday, December 8, 12
  • 121. Wait there is more...Saturday, December 8, 12
  • 122. Saturday, December 8, 12
  • 123. • Native Cloud deployment support on Playapps, Heroku, Google App Engine, CloudbeesSaturday, 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 learnSaturday, 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’sSaturday, 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 JavaSaturday, 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
  • 129. Quick DemoSaturday, December 8, 12
  • 130. Q &ASaturday, December 8, 12
  • 131. References • http://www.playframework.org/Saturday, December 8, 12
  • 132. Thank You ! for listeningSaturday, December 8, 12