Your SlideShare is downloading. ×
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Comparing JVM Web Frameworks - TSSJS 2011

23,762

Published on

Comparing JVM Web Frameworks Presentation from TheServerSide Java Symposium 2011. Compares many different JVM-based web frameworks, ranks them based on 20 different criteria and compares the Pros, …

Comparing JVM Web Frameworks Presentation from TheServerSide Java Symposium 2011. Compares many different JVM-based web frameworks, ranks them based on 20 different criteria and compares the Pros, Cons and other stats of the top 5.

Published in: Technology
3 Comments
21 Likes
Statistics
Notes
  • Some corrections to slide 36 (Vaadin Pros/Cons):

    1) There is no ’pro version’ of Vaadin. Vaadin is 100% free with Apache license. Just launched ’Vaadin Pro Account’ is a support offering.

    2) Vaadin communication mechanism is in fact JSON based. In practice this does not matter too much as it is only an internal thing - there are API:s for the communications.

    3) Vaadin scales quite well (around 10.000 concurrent users per web server). For details, see http://vaadin.com/wiki/-/wiki/Main/Vaadin%20Scalability%20Testing%20with%20Amazon%20Web%20Services
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Because if a framework includes a JS library, you're stuck with that version. For example, Tapestry has a particular version of Prototype built-in and you can't upgrade or downgrade it.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Why Ajax 3rd part library in Spring can be a good thing ?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
23,762
On Slideshare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
514
Comments
3
Likes
21
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. COMPARING JVM WEB FRAMEWORKSMatt Raiblehttp://raibledesigns.com Images by Stuck in Customs - http://www.flickr.com/photos/stuckincustoms © 2011 Raible Designs
  • 2. INTRODUCTIONSYour experience with webdevelopment?Your experience with JavaEE development?What do you want to getfrom this session?Experience with Grails,GWT, Rails, Spring MVC,Wicket, Tapestry or Play? © 2011, Raible Designs
  • 3. Blogger on raibledesigns.com Father, Skier, CyclistFounder of AppFuse Web Framework Connoisseur Who is Matt Raible? © 2011, Raible Designs
  • 4. SESSION AGENDAThe Problem with Web FrameworksThe CandidatesComparison PointsThe MatrixConclusionQ and A © 2011, Raible Designs
  • 5. THE PROBLEM © 2011, Raible Designs
  • 6. HOW DO YOU CHOOSE? © 2011, Raible Designs
  • 7. E L I M I N AT E , D O N ’ T I N C L U D E
  • 8. © 2011, Raible Designs
  • 9. © 2011, Raible Designs
  • 10. ... while Id *love* to see life made simpler for Java webdevelopers, and a lot of the things happening in Struts2 aregoing that way -- it wont be me doing it.Ive gone over to the dark side :-) and much prefer to developin Rails -- for the conciseness mentioned above, but alsobecause I dont ever have to do a "build" or "deploy" stepduring my development cycle any more. But you guys andgals need to be reminded that *this* is the kind of thing youare competing against if you expect to attract Railsdevelopers ... or to avoid even more "previously Java webdeveloper" defectors like me :-). -- Craig McClanahan, 10/23/2007 http://markmail.org/thread/qfb5sekad33eobh2 © 2011, Raible Designs
  • 11. JAMES GOSLING ON JSF http://www.youtube.com/watch?v=9ei-rbULWoA#t=47m © 2011, Raible Designs
  • 12. 2007: 6 IMPORTANT FACTORSRequest, Component or RIA FrameworkEase of DevelopmentProject CommunityProject Future and RoadmapMaintenanceTechnical Features © 2011, Raible Designs
  • 13. CHOOSING A FRAMEWORKChoose a short list of frameworks to prototype with.Create an application prototype with eachframework.Document findings and create a matrix withimportant criteria.Create presentation to summarize document.Deliver document, presentation andrecommendation. © 2011, Raible Designs
  • 14. 2011: NOW THERE’S 201. Developer Productivity2. Developer Perception3. Learning Curve4. Project Health5. Developer Availability6. Job Trends © 2011, Raible Designs
  • 15. 2011: COMPARISON POINTS7. Templating8. Components9. Ajax10. Plugins or Add-Ons11. Scalability12. Testing Support © 2011, Raible Designs
  • 16. 2011: COMPARISON POINTS13. i18n and l10n14. Validation15. Multi-language Support (Groovy / Scala)16. Quality of Documentation/Tutorials17. Books Published18. REST Support (client and server) © 2011, Raible Designs
  • 17. 2011: COMPARISON POINTS19. Mobile / iPhone Support20. Degree of Risk © 2011, Raible Designs
  • 18. COMPARISON MATRIX http://bit.ly/jvm-frameworks-matrix © 2011, Raible Designs
  • 19. MATRIX RESULTS Grails Spring MVC Rails GWT Vaadin Wicket Tapestry Struts 2 Stripes Play Flex JSF Lift 1813.5 9 4.5 0 Rating © 2011, Raible Designs
  • 20. MATRIX RESULTSGrails (17.5)GWT (17)Ruby on Rails (17)Spring MVC (17)Vaadin (15.5)Tapestry and Wicket (15) © 2011, Raible Designs
  • 21. WEIGHTED MATRIX © 2011, Raible Designs
  • 22. WEIGHTED RESULTSGrails (90)Spring MVC (85)Ruby on Rails (82.5)Vaadin (82.5)Play (82.5)GWT (80) © 2011, Raible Designs
  • 23. RATINGS LOGIC1. Developer Productivity2. Developer Perception3. Learning Curve4. Project Health5. Developer Availability6. Job Trends © 2011, Raible Designs
  • 24. RATINGS LOGIC7. Templating8. Components9. Ajax10. Plugins or Add-Ons11. Scalability12. Testing Support © 2011, Raible Designs
  • 25. RATINGS LOGIC13. i18n and l10n14. Validation15. Multi-language Support (Groovy / Scala)16. Quality of Documentation/Tutorials17. Books Published18. REST Support (client and server) © 2011, Raible Designs
  • 26. RATINGS LOGIC19. Mobile / iPhone Support20. Degree of Riskhttp://raibledesigns.com/rd/entry/how_i_calculated_ratings_for © 2011, Raible Designs
  • 27. DAVID POLLACK’S LIFT RATINGSDeveloper Productivity: Lift gets a 11, Rails gets a 5,most Java-based frameworks get a 1 or less.Developer Perception: Every web framework gets a 1. Learning Curve: Lift gets a 2.Job Trends, yep, its zero.* Matts scale is 0-1 and my ratings are on Matts scale, except mine goes to 11. http://lift.la/my-take-on-matt-raibles-spreadsheet © 2011, Raible Designs
  • 28. PETER THOMAS’S PERFBENCHSeam / JSF vs. Wicket Performance Comparison January 2009: Seam 2.1.1 and Wicket 1.3.5 Average page response time in milliseconds © 2011, Raible Designs
  • 29. PETER THOMAS’S PERFBENCHOn the Seam / JSF side, the 20 sessions each take upabout 800 KB adding up to around 16 MB total. Onthe Wicket side the 20 sessions add up to around 1.5MB.+ Lots of banter between Peter and Seam developers@ http://bit.ly/3X50Gc © 2011, Raible Designs
  • 30. PETER THOMAS’S PERFBENCHPeter’s Observations: Grails was far more productive than Tapestry 5. Grails still has some ways to go in terms of performance. Overall, Wicket is fastest, with Tapestry coming a close second. Wicket takes up the least amount of heap. Session usage of the Seam + JSF combination is significantly higher compared to the rest. © 2011, Raible Designs
  • 31. PROS AND CONS © 2011, Raible Designs
  • 32. GRAILSPros Easy dynamic language transition for Java Developers Groovy Plugins for all types of applicationsCons Groovy learning targets Java Developers Stack traces are horrendous Knowledge of underlying frameworks not required, but helpful © 2011, Raible Designs
  • 33. GWTPros Write Java => Produces Optimized JavaScript Easy to learn and develop with standard Java Tools Vibrant CommunityCons You have to know Java Slow to compile, difficult to test More like a JSP Tag Library than a web framework © 2011, Raible Designs
  • 34. RUBY ON RAILSPros Easy to learn and understand for Web Developers Lots and lots of documentation Passionate CommunityCons Slightly less performant by default Dynamic language means more tests Development Tools and Debugging © 2011, Raible Designs
  • 35. SPRING MVCPros Easy Configuration with Annotations and Conventions Integrates with many view options seamlessly: JSP/JSTL, Tiles, FreeMarker, Excel, PDF, JSON Excellent REST SupportCons Instant reload not built-in, need JRebel or Spring Roo No open development process, need to be SpringSource Ajax requires 3rd-party library (can be a good thing!) © 2011, Raible Designs
  • 36. VAADINPros Uses GWT API for developing view. Vibrant Community and company backing. Excellent Themes and Layouts support.Cons Large memory footprint, state stored in session. Doesn’t use JSON for communication. Commercial backing with Pro version. © 2011, Raible Designs
  • 37. WICKETPros Great for Java Developers Tight binding between pages and views Active community - support from creatorsCons No Jobs or Developers Stateful by default HTML Templates live next to Java code by default © 2011, Raible Designs
  • 38. TAPESTRYPros Live Class Reloading Development emphasis on performance and scalability Excellent Exception ReportingCons No Jobs Prototype baked in for JS Library Annotations vs. Conventions © 2011, Raible Designs
  • 39. LANGUAGE PERFORMANCE Time (ms) per iteration 600 400 200 0 Java C++ JRuby Python Groovy PHPhttp://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython- jruby-groovy/ © 2011, Raible Designs
  • 40. JOBS IN 2011 (US)Grails GWT Rails Spring MVC Tapestry Wicket Vaadin 700 525 350 175 0 Dice © 2011, Raible Designs
  • 41. DEVELOPER SKILLS (US)Grails GWT Rails Spring MVC Tapestry Wicket Vaadin 11,000 8,250 5,500 2,750 0 LinkedIn © 2011, Raible Designs
  • 42. PRETTY GRAPHS © 2011, Raible Designs
  • 43. PRETTY GRAPHS © 2011, Raible Designs
  • 44. PRETTY GRAPHS © 2011, Raible Designs
  • 45. PRETTY GRAPHS © 2011, Raible Designs
  • 46. PRETTY GRAPHS © 2011, Raible Designs
  • 47. PRETTY GRAPHS © 2011, Raible Designs
  • 48. PRETTY GRAPHS © 2011, Raible Designs
  • 49. MAILING LIST TRAFFIC GWT Rails Grails Play Tapestry Wicket January 2011 0 750 1500 2250 3000* Spring MVC and Vaadin use Forums, which don’t provide this data. © 2011, Raible Designs
  • 50. JSF LIST TRAFFIC PrimeFaces RichFaces MyFaces Majorra (RI) January 2011 0 500 1000 1500 2000* ICEfaces uses Forums, which don’t provide this data. © 2011, Raible Designs
  • 51. MAILING LIST TRAFFIC GWT Rails Grails Play PrimeFaces January 2011 0 575 1150 1725 2300* Spring MVC and Vaadin use Forums, which don’t provide this data. © 2011, Raible Designs
  • 52. MAILING LIST TRENDS JRuby Ruby on Rails © 2011, Raible Designs
  • 53. MAILING LIST TRENDS JRuby Ruby on Rails © 2011, Raible Designs
  • 54. MAILING LIST TRENDS Grails TapestrySource: http://markmail.org GWT © 2011, Raible Designs
  • 55. BOOKS ON AMAZON Grails GWT Rails Spring MVC Wicket Tapestry 5 VaadinJanuary 2011 0 50 100 150 200 © 2011, Raible Designs
  • 56. 2010 RELEASES As of October 28, 2010 0 6 12 18 24 Grails GWT RailsSpring MVC Vaadin © 2011, Raible Designs
  • 57. STACKOVERFLOW Tagged Questions (March 8, 2011) 40,000 30,000 20,000 10,000Grails 0 GWT Rails Spring MVC Vaadin © 2011, Raible Designs
  • 58. STACKOVERFLOW Tagged Questions (February 15, 2011) 6,000 4,500 3,000 1,500Spring 0 GWT Grails Wicket Tapestry © 2011, Raible Designs
  • 59. STACKOVERFLOW Tagged Questions (February 15, 2011) 100000 75000 50000 25000Java 0 Scala JRuby Clojure Groovy © 2011, Raible Designs
  • 60. STACKOVERFLOW Tagged Questions (February 15, 2011) 4000 3000 2000 1000Scala 0 JRuby Clojure Groovy © 2011, Raible Designs
  • 61. STACKOVERFLOW Tagged Questions (October 28, 2010) 80000 60000 40000 20000Java 0 PHP .NET Python Ruby © 2011, Raible Designs
  • 62. FRAMEWORK POPULARITYSource: ZeroTurnarounds Java EE Productivity Report 2010 © 2011, Raible Designs
  • 63. CONCLUSIONWhat if there is no “best” web framework? © 2011, Raible Designshttp://www.gladwell.com/2004/2004_09_06_a_ketchup.html
  • 64. DON’T LISTEN TO ME! © 2011, Raible Designs
  • 65. CHOOSE YOUR OWN!Prioritize a list of features that are important to yourapplication.Pick 3-4 frameworks and do a 1-week spike witheach, developing the same application.Document and rank each framework against your listof features.Calculate and choose! © 2011, Raible Designs
  • 66. QUESTIONS?Contact Information http://raibledesigns.com http://twitter.com/mraibleDownload Presentation http://slideshare.net/mraible © 2011, Raible Designs

×