Comparing JVM Web Frameworks - Spring I/O 2012

32,045 views

Published on

Comparing JVM Web Frameworks Presentation from Spring I/O Conference in Madrid, Spain. 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. Also talks about how web developers might need to learn client-side MVC frameworks and Java developers need to learn web technologies (JavaScript and CSS) or become RESTful services developers.

See video of this talk at https://www.youtube.com/watch?v=QlQMt3W9fpU.

Published in: Technology
5 Comments
59 Likes
Statistics
Notes
No Downloads
Views
Total views
32,045
On SlideShare
0
From Embeds
0
Number of Embeds
1,516
Actions
Shares
0
Downloads
1,191
Comments
5
Likes
59
Embeds 0
No embeds

No notes for slide

Comparing JVM Web Frameworks - Spring I/O 2012

  1. 1. COMPARING JVM WEBFRAMEWORKSMatt Raiblehttp://raibledesigns.com Fotos by Trish - http://mcginityphoto.com
  2. 2. Introductions‣ Your experience with web development?‣ Your experience with Java EE development?‣ What do you want to get from this session?‣ Experience with Grails, GWT, Rails, Spring MVC, Wicket, Tapestry or Play? © 2012 Raible Designs 2
  3. 3. Who is Matt Raible? Father, Skier, Cyclist Web Framework ConnoisseurFounder of AppFuse Blogger on raibledesigns.com © 2012 Raible Designs
  4. 4. Session Agenda‣ The Problem with Web Frameworks‣ The Candidates‣ Comparison Points‣ The Matrix‣ Conclusion‣ Q and A © 2012 Raible Designs 4
  5. 5. The Problem © 2012 Raible Designs 5
  6. 6. The Real Problem © 2012 Raible Designs 6
  7. 7. The Real Problem © 2012 Raible Designs 7
  8. 8. The Real Problem © 2012 Raible Designs 8
  9. 9. How do you choose? © 2012 Raible Designs 9
  10. 10. Eliminate, Don’t Include © 2012 Raible Designs 10
  11. 11. © 2012 Raible Designs
  12. 12. © 2012 Raible Designs
  13. 13. Craig McClanahan on Rails... 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 todevelop in Rails -- for the conciseness mentioned above,but also because I dont ever have to do a "build" or"deploy" step during my development cycle any more. Butyou guys and gals need to be reminded that *this* is the kindof thing you are competing against if you expect to attractRails developers ... or to avoid even more "previously Javaweb developer" defectors like me :-). -- Craig McClanahan, 10/23/2007 http://markmail.org/thread/qfb5sekad33eobh2 © 2012 Raible Designs 13
  14. 14. James Gosling on JSF http://www.youtube.com/watch?v=9ei-rbULWoA#t=47m © 2012 Raible Designs 14
  15. 15. 2010: Comparison Points‣ Developer Productivity‣ Developer Perception‣ Learning Curve‣ Project Health‣ Developer Availability‣ Job Trends © 2012 Raible Designs 15
  16. 16. 2010: Comparison Points‣ Templating‣ Components‣ Ajax‣ Plugins or Add-Ons‣ Scalability‣ Testing Support © 2012 Raible Designs 16
  17. 17. 2010: Comparison Points‣ i18n and l10n‣ Validation‣ Multi-language Support (Groovy / Scala)‣ Quality of Documentation/Tutorials‣ Books Published‣ REST Support (client and server) © 2012 Raible Designs 17
  18. 18. 2010: Comparison Points‣ Mobile / iPhone Support‣ Degree of Risk © 2012 Raible Designs 18
  19. 19. Comparison Matrix http://bit.ly/jvm-frameworks-matrix © 2012 Raible Designs 19
  20. 20. Matrix Results 18 17.5 17 17 17 15.5 15 15 13.5 14.5 14 14 13.513.5 11.5 9 4.5 0 ails g ils T din t ry 2 s y x F Lift e Pla ipe Fle JS rin GW est ck uts Ra a Gr Sp Str Va Wi Tap Str © 2012 Raible Designs 20
  21. 21. Matrix Results‣ Grails (17.5)‣ GWT (17)‣ Ruby on Rails (17)‣ Spring MVC (17)‣ Vaadin (15.5)‣ Tapestry and Wicket (15) © 2012 Raible Designs 21
  22. 22. Weighted Matrix © 2012 Raible Designs 22
  23. 23. Weighted Results‣ Grails (90)‣ Spring MVC (85)‣ Ruby on Rails (82.5)‣ Vaadin (82.5)‣ Play (82.5)‣ GWT (80) © 2012 Raible Designs 23
  24. 24. Fighting for 5th‣ Top at Devoxx 2010 - GWT - Rails - Spring MVC - Grails - Wicket / Struts 2 © 2012 Raible Designs 24
  25. 25. Fighting for 5th‣ Top at Rich Web Experience 2010 - Grails - GWT - Rails - Spring MVC - Tapestry / Vaadin © 2012 Raible Designs 25
  26. 26. Fighting for 5th‣ Top at TheServerSide Java Symposium 2010 - Grails - GWT - Rails - Spring MVC - Vaadin © 2012 Raible Designs 26
  27. 27. Ratings Logic‣ Developer Productivity‣ Developer Perception‣ Learning Curve‣ Project Health‣ Developer Availability‣ Job Trends © 2012 Raible Designs 27
  28. 28. Ratings Logic‣ Templating‣ Components‣ Ajax‣ Plugins or Add-Ons‣ Scalability‣ Testing Support © 2012 Raible Designs 28
  29. 29. Ratings Logic‣ i18n and l10n‣ Validation‣ Multi-language Support (Groovy / Scala)‣ Quality of Documentation/Tutorials‣ Books Published‣ REST Support (client and server) © 2012 Raible Designs 29
  30. 30. Ratings Logic‣ Mobile / iPhone Support‣ Degree of Risk http://raibledesigns.com/rd/entry/ how_i_calculated_ratings_for © 2012 Raible Designs 30
  31. 31. David Pollack’s Lift Ratings‣ Developer 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 © 2012 Raible Designs 31
  32. 32. Peter Thomas’s Perfbench‣ Seam / JSF vs. Wicket Performance Comparison - January 2009: Seam 2.1.1 and Wicket 1.3.5 - Average page response time in milliseconds © 2012 Raible Designs 32
  33. 33. Peter Thomas’s Perfbench‣ On the Seam / JSF side, the 20 sessions each take up about 800 KB adding up to around 16 MB total. On the Wicket side the 20 sessions add up to around 1.5 MB.‣ + Lots of banter between Peter and Seam developers @ http://bit.ly/3X50Gc © 2012 Raible Designs 33
  34. 34. Peter Thomas’s Perfbench‣ Peter’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. © 2012 Raible Designs 34
  35. 35. World Wide Wait - Devoxx http://www.parleys.com/d/2942 © 2012 Raible Designs 35
  36. 36. World Wide Wait - Devoxx © 2012 Raible Designs 36
  37. 37. World Wide Wait - Devoxx © 2012 Raible Designs 37
  38. 38. World Wide Wait - Devoxx © 2012 Raible Designs 38
  39. 39. World Wide Wait - Devoxx © 2012 Raible Designs 39
  40. 40. World Wide Wait - Devoxx HybridJava beats JSF, Wicket and Spring MVC by perfomance. © 2012 Raible Designs 40
  41. 41. HybridJava - Really? © 2012 Raible Designs 41
  42. 42. Pros and Cons © 2012 Raible Designs 42
  43. 43. Grails‣ Pros - Easy dynamic language transition for Java Developers - Groovy - Plugins for all types of applications‣ Cons - Groovy learning targets Java Developers - Stack traces are horrendous - Knowledge of underlying frameworks not required, but helpful © 2012 Raible Designs 43
  44. 44. GWT‣ Pros - Write Java => Produces Optimized JavaScript - Easy to learn and develop with standard Java Tools - Vibrant Community‣ Cons - You have to know Java - Slow to compile, difficult to test - More like a JSP Tag Library than a web framework © 2012 Raible Designs 44
  45. 45. Ruby on Rails‣ Pros - Easy to learn and understand for Web Developers - Lots and lots of documentation - Passionate Community‣ Cons - Slightly less performant by default - Dynamic language means more tests - Development Tools and Debugging © 2012 Raible Designs 45
  46. 46. Spring MVC‣ Pros - Easy Configuration with Annotations and Conventions - Integrates with many view options seamlessly: JSP/ JSTL, Tiles, FreeMarker, Excel, PDF, JSON - Excellent REST Support‣ Cons - 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!) © 2012 Raible Designs 46
  47. 47. Vaadin‣ Pros - Uses GWT API for developing view - Vibrant Community and company backing - Excellent Themes and Layouts support‣ Cons - Large memory footprint, state stored in session - Sketchy (?) because backed by a commercial organization - Joonas keeps telling me my cons are wrong © 2012 Raible Designs 47
  48. 48. Wicket‣ Pros - Great for Java Developers - Tight binding between pages and views - Active community - support from creators‣ Cons - No Jobs or Developers - Stateful by default - HTML Templates live next to Java code by default © 2012 Raible Designs 48
  49. 49. Tapestry‣ Pros - Live Class Reloading - Development emphasis on performance and scalability - Excellent Exception Reporting‣ Cons - No Jobs - Prototype baked in for JS Library - Annotations vs. Conventions © 2012 Raible Designs 49
  50. 50. Pretty Graphs © 2012 Raible Designs 50
  51. 51. LOC in AppFuse Light JSF Spring Stripes Struts 2 Tapestry 5 Wicket 5000 3750 2500 1250 0 JavaScript XML CSS Java © 2012 Raible Designs 51
  52. 52. Jobs on Dice (World) 700 525 350 175 0 g ils T s et try din F ail JS rin GW ick Ra es a Gr Sp Va W p Ta © 2012 Raible Designs 52
  53. 53. LinkedIn Skills (World) 40,000 30,000 20,000 10,000 0 ils g T ails ry t din F e JS rin GW est ck Ra a Gr Sp Va Wi Tap © 2012 Raible Designs 53
  54. 54. Pretty Graphs © 2012 Raible Designs 54
  55. 55. Pretty Graphs © 2012 Raible Designs 55
  56. 56. Pretty Graphs © 2012 Raible Designs 56
  57. 57. Pretty Graphs © 2012 Raible Designs 57
  58. 58. Pretty Graphs © 2012 Raible Designs 58
  59. 59. Pretty Graphs © 2012 Raible Designs 59
  60. 60. Pretty Graphs © 2012 Raible Designs 60
  61. 61. Pretty Graphs © 2012 Raible Designs 61
  62. 62. Pretty Graphs © 2012 Raible Designs 62
  63. 63. Mailing List Traffic Wicket 1841 GWT 1753 Grails 1635 Rails 1604 Tapestry 1538 Play 1451 0 475 950 1425 1900 * Spring MVC and Vaadin use Forums, which don’t provide this data. © 2012 Raible Designs 63
  64. 64. Books on Amazon Rails Spring MVC GWT Grails Wicket Tapestry 5 Vaadin 0 75 150 225 300 © 2012 Raible Designs 64
  65. 65. 2011 Releases As of August 24, 2011 0 4 8 12 16 Grails GWT Rails Spring MVC Vaadin Tapestry Wicket © 2012 Raible Designs 65
  66. 66. StackOverflow Tagged Questions (August 24, 2011) 50,000 37,500 25,000 12,500 Grails 0 GWT Rails Spring MVC Vaadin © 2012 Raible Designs 66
  67. 67. StackOverflow Tagged Questions (August 24, 2011) 10,000 7,500 5,000 2,500 Spring 0 JSF GWT Grails Wicket © 2012 Raible Designs 67
  68. 68. StackOverflow Tagged Questions (August 24, 2011) 200000 150000 100000 50000 Java 0 Scala Groovy Clojure JRuby © 2012 Raible Designs 68
  69. 69. StackOverflow Tagged Questions (August 24, 2011) 6000 4500 3000 1500 Scala 0 Groovy Clojure JRuby © 2012 Raible Designs 69
  70. 70. Framework PopularitySource: ZeroTurnarounds Java EE Productivity Report 2010 © 2012 Raible Designs 70
  71. 71. What we need is... © 2012 Raible Designs 71
  72. 72. Innovators © 2012 Raible Designs 72
  73. 73. Modern Principles © 2012 Raible Designs 73
  74. 74. Web Developers © 2012 Raible Designs 74
  75. 75. Java Developers “Java remains – in spite of the fragmented programming language landscape – a viable, growing language.” http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/ © 2012 Raible Designs 75
  76. 76. The Modern Web Developer‣ ... embraces JavaScript‣ ... is learning mobile frameworks - jQuery Mobile, Sencha Touch, PhoneGap or Native‣ ... is using HTML5 and CSS3‣ ... is developing REST APIs with the stateless framework that best supports their language‣ IE6 is dead, IE7 isn’t far behind... © 2012 Raible Designs 76
  77. 77. You have to decide... Are you a web developer? © 2012 Raible Designs 77
  78. 78. You have to decide... Or are you a services developer? © 2012 Raible Designs 78
  79. 79. Client-Side MVC © 2012 Raible Designs 79
  80. 80. REST Services © 2012 Raible Designs 80
  81. 81. Developer Productivity http://zeroturnaround.com/blog/ developer-productivity-report-part-1-developer-timesheet/ © 2012 Raible Designs 81
  82. 82. Developer Productivity http://zeroturnaround.com/blog/ developer-productivity-report-part-3-developer-efficiency/ © 2012 Raible Designs 82
  83. 83. There is no “best” framework Just lots of awesome choices... © 2012 Raible Designs 83
  84. 84. Don’t listen to me! © 2012 Raible Designs 84
  85. 85. Choose your own!‣ Prioritize a list of features that are important to your application.‣ Pick 3-4 frameworks and do a 1-week spike with each, developing the same application.‣ Document and rank each framework against your list of features.‣ Calculate and choose!‣ ... Or just pick one and get to work... © 2012 Raible Designs 85
  86. 86. But don’t forget... © 2012 Raible Designs 86
  87. 87. Questions?‣ Contact - http://raibledesigns.com - @mraible‣ Download - http://slideshare.net/mraible © 2012 Raible Designs 87

×