COMPARING JVM WEBFRAMEWORKSMatt Raiblehttp://raibledesigns.com@mraiblePhotos by Trish McGinity   © 2013 Raible Designs
Who is Matt Raible?                                                       Father, Skier, Cyclist                          ...
Introductions‣   Are you currently developing    web applications for the JVM?‣   Have you written web apps with    Servle...
Session Agenda‣   History of JVM Web Frameworks‣   The Paradox of Choice‣   Methods and Metrics‣   Conclusion‣   Q and A  ...
History of Web Frameworks                                        5                © 2013 Raible Designs
History of Web Frameworks                                        6                © 2013 Raible Designs
History of Web Frameworks                                        7                © 2013 Raible Designs
Comparing Web Frameworks                                      8              © 2013 Raible Designs
History of Web Frameworks                                        9                © 2013 Raible Designs
History of Web Frameworks                                        10                © 2013 Raible Designs
2007                               11       © 2013 Raible Designs
History of Web Frameworks                                        12                © 2013 Raible Designs
© 2013 Raible Designs
Today                                14        © 2013 Raible Designs
Too many web frameworks?                                       15               © 2013 Raible Designs
Remember SOFEA?             © 2013 Raible Designs
SOFEA became a Reality               © 2013 Raible Designs
SOFEA Performance Issues                                       18               © 2013 Raible Designs
traditional web frameworks are still relevant                                                19                   © 2013 R...
The Paradox of Choice                                        20                © 2013 Raible Designs
Good Decisions Involve1. Figure out your goal or goals2. Evaluate the importance of each goal3. Array the options4. Evalua...
Maximizer vs. Satisficer‣   maximizer - tries to make best possible choice‣   satisficer - tries to find first suitable choice...
How do you choose?                                       23               © 2013 Raible Designs
The Real Problem                                           24                   © 2013 Raible Designs
The Real Problem                                           25                   © 2013 Raible Designs
The Real Problem                                           26                   © 2013 Raible Designs
© 2013 Raible Designs
How to Constrain Choices‣   2006: Choose based on the type of app you’re developing‣   2010: Choose based on 20 different ...
Predetermined Constraints‣   Language‣   Platform‣   Application Type                                               29    ...
Choose the JVM                                         30                 © 2013 Raible Designs
Get Fast Hardware                                        31                © 2013 Raible Designs
IntelliJ                                   32           © 2013 Raible Designs
Goals‣   Pure Web Frameworks‣   Full Stack Frameworks‣   SOFEA Frameworks    - API Frameworks    - JavaScript MVC Framewor...
Full Stack Frameworks                                        34                © 2013 Raible Designs
API Frameworks                                         35                 © 2013 Raible Designs
JavaScript MVC Frameworks                                       36               © 2013 Raible Designs
JavaScript MVC Frameworks                                       37               © 2013 Raible Designs
Pure JVM Web Frameworks‣   Apache: Wicket, Struts, Sling, Tapestry, Click‣   GWT: SmartGWT, GXT, Vaadin, Errai‣   JSF: Moj...
Frameworks I’ve Used‣   Apache: Wicket, Struts, Sling, Tapestry, Click‣   GWT: SmartGWT, GXT, Vaadin, Errai‣   JSF: Mojarr...
Comparison Matrix        http://bit.ly/jvm-frameworks-matrix                                              40              ...
Matrix Results   18         17.5   17     17     17                                   15.5 15.5           15  13.5        ...
Matrix Results‣   Grails (17.5)‣   GWT (17)‣   Ruby on Rails (17)‣   Spring MVC (17)‣   Vaadin and Tapestry (15.5)‣   Wick...
Weighted Matrix                                          43                  © 2013 Raible Designs
Weighted Results‣   Grails (90)‣   Play (87.5)‣   Spring MVC (85)‣   Ruby on Rails (82.5)‣   Vaadin (82.5)‣   GWT (80)    ...
David Pollack’s Lift Ratings‣   Developer Productivity: Lift gets a 11, Rails gets a 5, most Java-    based frameworks get...
Peter Thomas’s Perfbench ‣   Seam / JSF vs. Wicket Performance Comparison     -   January 2009: Seam 2.1.1 and Wicket 1.3....
Peter Thomas’s Perfbench ‣   On the Seam / JSF side, the 20 sessions each take up about     800 KB adding up to around 16 ...
Peter Thomas’s Perfbench‣   Added Tapestry 5 and Grails in September 2009:    - Grails was far more productive than Tapest...
World Wide Wait - Devoxx           http://www.parleys.com/d/2942                                             49           ...
World Wide Wait - Devoxx                                        50                © 2013 Raible Designs
World Wide Wait - Devoxx                                        51                © 2013 Raible Designs
World Wide Wait - Devoxx                                        52                © 2013 Raible Designs
World Wide Wait - Devoxx                                        53                © 2013 Raible Designs
InfoQ’s Top 20                                         54                 © 2013 Raible Designs
devrates.com - by rating                                         55                 © 2013 Raible Designs
devrates.com - popular                                         56                 © 2013 Raible Designs
Top JVM Frameworks‣   Raible Matrix: Grails, GWT, Rails, Spring MVC    -   Weighted: Grails, Play, Spring MVC, Rails, Vaad...
Raible’s Recommendations‣   Full Stack: Choose by language (JRuby, Groovy, Java or Scala)‣   Pure Web Framework: Spring MV...
The Problem with GWT                                       59               © 2013 Raible Designs
Comparison Statistics‣   Elimination Criteria    - At least 1 release in 2012    - At least 1 book on Amazon    - At least...
Jobs on Dice.com                    Full Stack Frameworks, March 2013      300      225      150       75        0        ...
Jobs on Dice.com                        Pure Web Frameworks, March 2013      600      450      300      150       0       ...
Jobs on Dice.com            JavaScript MVC Frameworks, March 2013      300      225      150       75        0            ...
Jobs on Dice.com                   JVM API Frameworks, March 2013      500      375      250      125       0             ...
LinkedIn Skills                       Full Stack Frameworks, March 2013      15,000      11,250       7,500       3,750   ...
LinkedIn Skills                           Pure Web Frameworks, March 2013      15,000      11,250       7,500       3,750 ...
LinkedIn Skills               JavaScript MVC Frameworks, March 2013      15,000      11,250       7,500       3,750       ...
LinkedIn Skills                      JVM API Frameworks, March 2013      15,000      11,250       7,500       3,750       ...
Google Trends                                        69                © 2013 Raible Designs
Google Trends                                        70                © 2013 Raible Designs
Google Trends                                        71                © 2013 Raible Designs
Google Trends                                        72                © 2013 Raible Designs
Indeed Job Trends                                        73                © 2013 Raible Designs
Indeed Job Trends                                        74                © 2013 Raible Designs
Indeed Job Trends                                        75                © 2013 Raible Designs
Indeed Job Trends                                        76                © 2013 Raible Designs
Mailing List Traffic                                                           February 2013   AngularJS                   ...
StackOverflow                     Tagged Questions (March 28, 2013)   15,000   11,250    7,500    3,750       0            ...
StackOverflow                           Tagged Questions (March 28, 2013)   10,000    7,500    5,000    2,500       0      ...
StackOverflow                      Tagged Questions (March 25, 2013)    8,000    6,000    4,000    2,000       0           ...
StackOverflow                     Tagged Questions (March 25, 2013)    3,000    2,250    1,500     750       0            J...
Java Developers  “Java remains – in spite of the fragmented programming  language landscape – a viable, growing language.”...
Modern Principles                                        83                © 2013 Raible Designs
The Modern JVM Web Developer‣   Starts with Fast Hardware‣   Uses IntelliJ IDEA‣   Leverages JavaScript, HTML5, and CSS3‣ ...
Developer Productivity                     http://zeroturnaround.com/blog/         developer-productivity-report-part-1-de...
Developer Productivity                     http://zeroturnaround.com/blog/         developer-productivity-report-part-3-de...
There is no “best” framework           Just lots of awesome choices...                                              87    ...
Don’t listen to me!                                          88                  © 2013 Raible Designs
Choose your own!‣   Prioritize a list of goals that are important to your application.‣   Pick 3-4 frameworks and do a spi...
Questions?Contact Information  http://raibledesigns.com  @mraiblePresentations     http://slideshare.net/mraible          ...
Upcoming SlideShare
Loading in...5
×

Comparing JVM Web Frameworks - Devoxx France 2013

79,264

Published on

A comparison on JVM Web Frameworks. Includes strategies for choosing and results from research by InfoQ and devrates.com. Also, lots of pretty graphs.

See blog post about this presentation at http://raibledesigns.com/rd/entry/devoxx_france_a_great_conference and video recording at http://raibledesigns.com/rd/entry/video_of_comparing_jvm_web

Published in: Technology
2 Comments
116 Likes
Statistics
Notes
No Downloads
Views
Total Views
79,264
On Slideshare
0
From Embeds
0
Number of Embeds
78
Actions
Shares
0
Downloads
1,645
Comments
2
Likes
116
Embeds 0
No embeds

No notes for slide

Comparing JVM Web Frameworks - Devoxx France 2013

  1. 1. COMPARING JVM WEBFRAMEWORKSMatt Raiblehttp://raibledesigns.com@mraiblePhotos by Trish McGinity © 2013 Raible Designs
  2. 2. Who is Matt Raible? Father, Skier, Cyclist Web Framework ConnoisseurFounder of AppFuseBlogger on raibledesigns.com © 2013 Raible Designs
  3. 3. Introductions‣ Are you currently developing web applications for the JVM?‣ Have you written web apps with Servlets or JSF?‣ Experience with Grails, GWT, Rails, Spring MVC, Wicket, Tapestry or Play?‣ Does anyone hate a framework? Love a framework? 3 © 2013 Raible Designs
  4. 4. Session Agenda‣ History of JVM Web Frameworks‣ The Paradox of Choice‣ Methods and Metrics‣ Conclusion‣ Q and A 4 © 2013 Raible Designs
  5. 5. History of Web Frameworks 5 © 2013 Raible Designs
  6. 6. History of Web Frameworks 6 © 2013 Raible Designs
  7. 7. History of Web Frameworks 7 © 2013 Raible Designs
  8. 8. Comparing Web Frameworks 8 © 2013 Raible Designs
  9. 9. History of Web Frameworks 9 © 2013 Raible Designs
  10. 10. History of Web Frameworks 10 © 2013 Raible Designs
  11. 11. 2007 11 © 2013 Raible Designs
  12. 12. History of Web Frameworks 12 © 2013 Raible Designs
  13. 13. © 2013 Raible Designs
  14. 14. Today 14 © 2013 Raible Designs
  15. 15. Too many web frameworks? 15 © 2013 Raible Designs
  16. 16. Remember SOFEA? © 2013 Raible Designs
  17. 17. SOFEA became a Reality © 2013 Raible Designs
  18. 18. SOFEA Performance Issues 18 © 2013 Raible Designs
  19. 19. traditional web frameworks are still relevant 19 © 2013 Raible Designs
  20. 20. The Paradox of Choice 20 © 2013 Raible Designs
  21. 21. Good Decisions Involve1. Figure out your goal or goals2. Evaluate the importance of each goal3. Array the options4. Evaluate how likely each of the options is to meet your goals5. Pick the winning option6. Modify goals 21 © 2013 Raible Designs
  22. 22. Maximizer vs. Satisficer‣ maximizer - tries to make best possible choice‣ satisficer - tries to find first suitable choice (Photo: Tori Cat at Flickr) 22 © 2013 Raible Designs
  23. 23. How do you choose? 23 © 2013 Raible Designs
  24. 24. The Real Problem 24 © 2013 Raible Designs
  25. 25. The Real Problem 25 © 2013 Raible Designs
  26. 26. The Real Problem 26 © 2013 Raible Designs
  27. 27. © 2013 Raible Designs
  28. 28. How to Constrain Choices‣ 2006: Choose based on the type of app you’re developing‣ 2010: Choose based on 20 different criteria (the Matrix)‣ 2013: Narrowed it to 5 - Community / Support - HTML5 - REST - Mobile - Performance - Page Speed 28 © 2013 Raible Designs
  29. 29. Predetermined Constraints‣ Language‣ Platform‣ Application Type 29 © 2013 Raible Designs
  30. 30. Choose the JVM 30 © 2013 Raible Designs
  31. 31. Get Fast Hardware 31 © 2013 Raible Designs
  32. 32. IntelliJ 32 © 2013 Raible Designs
  33. 33. Goals‣ Pure Web Frameworks‣ Full Stack Frameworks‣ SOFEA Frameworks - API Frameworks - JavaScript MVC Frameworks 33 © 2013 Raible Designs
  34. 34. Full Stack Frameworks 34 © 2013 Raible Designs
  35. 35. API Frameworks 35 © 2013 Raible Designs
  36. 36. JavaScript MVC Frameworks 36 © 2013 Raible Designs
  37. 37. JavaScript MVC Frameworks 37 © 2013 Raible Designs
  38. 38. Pure JVM Web Frameworks‣ Apache: Wicket, Struts, Sling, Tapestry, Click‣ GWT: SmartGWT, GXT, Vaadin, Errai‣ JSF: Mojarra (RI), MyFaces, Tomahawk, IceFaces, RichFaces, PrimeFaces‣ Spring MVC, Stripes, RIFE, ZK http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java 38 © 2013 Raible Designs
  39. 39. Frameworks I’ve Used‣ Apache: Wicket, Struts, Sling, Tapestry, Click‣ GWT: SmartGWT, GXT, Vaadin, Errai‣ JSF: Mojarra, MyFaces, Tomahawk, IceFaces, RichFaces, PrimeFaces‣ Spring MVC, Stripes, RIFE, ZK 39 © 2013 Raible Designs
  40. 40. Comparison Matrix http://bit.ly/jvm-frameworks-matrix 40 © 2013 Raible Designs
  41. 41. Matrix Results 18 17.5 17 17 17 15.5 15.5 15 13.5 14.5 14.5 14 14 13.5 11.5 9 4.5 0 ails g ils T in ry et 2 y s F x Lift Pla ipe Fle JS rin GW ad est ck uts Ra Gr Sp Str Va Wi Tap Str 41 © 2013 Raible Designs
  42. 42. Matrix Results‣ Grails (17.5)‣ GWT (17)‣ Ruby on Rails (17)‣ Spring MVC (17)‣ Vaadin and Tapestry (15.5)‣ Wicket (15) 42 © 2013 Raible Designs
  43. 43. Weighted Matrix 43 © 2013 Raible Designs
  44. 44. Weighted Results‣ Grails (90)‣ Play (87.5)‣ Spring MVC (85)‣ Ruby on Rails (82.5)‣ Vaadin (82.5)‣ GWT (80) 44 © 2013 Raible Designs
  45. 45. 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 45 © 2013 Raible Designs
  46. 46. 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 46 © 2013 Raible Designs
  47. 47. 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 47 © 2013 Raible Designs
  48. 48. Peter Thomas’s Perfbench‣ Added Tapestry 5 and Grails in September 2009: - 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. 48 © 2013 Raible Designs
  49. 49. World Wide Wait - Devoxx http://www.parleys.com/d/2942 49 © 2013 Raible Designs
  50. 50. World Wide Wait - Devoxx 50 © 2013 Raible Designs
  51. 51. World Wide Wait - Devoxx 51 © 2013 Raible Designs
  52. 52. World Wide Wait - Devoxx 52 © 2013 Raible Designs
  53. 53. World Wide Wait - Devoxx 53 © 2013 Raible Designs
  54. 54. InfoQ’s Top 20 54 © 2013 Raible Designs
  55. 55. devrates.com - by rating 55 © 2013 Raible Designs
  56. 56. devrates.com - popular 56 © 2013 Raible Designs
  57. 57. Top JVM Frameworks‣ Raible Matrix: Grails, GWT, Rails, Spring MVC - Weighted: Grails, Play, Spring MVC, Rails, Vaadin‣ Peter Thomas: Wicket‣ InfoQ: Spring MVC, Play, Grails, JSF, Struts‣ devrates.com: - PrimeFaces, Grails, Tapestry, Vaadin, Wicket 57 © 2013 Raible Designs
  58. 58. Raible’s Recommendations‣ Full Stack: Choose by language (JRuby, Groovy, Java or Scala)‣ Pure Web Framework: Spring MVC, Struts 2, JSF w/ PrimeFaces, Tapestry, Wicket or Vaadin‣ JavaScript MVC: Ember, Angular JS, Backbone - API Framework: Jackson + ? 58 © 2013 Raible Designs
  59. 59. The Problem with GWT 59 © 2013 Raible Designs
  60. 60. Comparison Statistics‣ Elimination Criteria - At least 1 release in 2012 - At least 1 book on Amazon - At least 10 jobs on dice.com - At least 250 questions on Stack Overflow‣ Remove Seam (development halted) 60 © 2013 Raible Designs
  61. 61. Jobs on Dice.com Full Stack Frameworks, March 2013 300 225 150 75 0 ils ils ay t o Lif Ro a Ra Pl Gr ing o n r Sp by u JR 61 © 2013 Raible Designs
  62. 62. Jobs on Dice.com Pure Web Frameworks, March 2013 600 450 300 150 0 VC 2 et try es din ick ts ac s a M pe ru Va eF W ing St Ta im r Sp Pr 62 © 2013 Raible Designs
  63. 63. Jobs on Dice.com JavaScript MVC Frameworks, March 2013 300 225 150 75 0 ne r r be ula bo Em g An ck Ba 63 © 2013 Raible Designs
  64. 64. Jobs on Dice.com JVM API Frameworks, March 2013 500 375 250 125 0 y XF y rd x se as rt. za eC ve r E Je wi ST ch op RE a Dr Ap 64 © 2013 Raible Designs
  65. 65. LinkedIn Skills Full Stack Frameworks, March 2013 15,000 11,250 7,500 3,750 0 ils ay o ils t Lif Ro a Ra Pl Gr ing o n r Sp by u JR 65 © 2013 Raible Designs
  66. 66. LinkedIn Skills Pure Web Frameworks, March 2013 15,000 11,250 7,500 3,750 0 VC 2 et es din try ick ts ac s a M pe ru Va eF W ing St Ta im r Sp Pr 66 © 2013 Raible Designs
  67. 67. LinkedIn Skills JavaScript MVC Frameworks, March 2013 15,000 11,250 7,500 3,750 0 ne r r ula be bo Em g An ck Ba 67 © 2013 Raible Designs
  68. 68. LinkedIn Skills JVM API Frameworks, March 2013 15,000 11,250 7,500 3,750 0 y XF y x rd se as rt. za eC ve r E Je wi ST ch op RE a Dr Ap 68 © 2013 Raible Designs
  69. 69. Google Trends 69 © 2013 Raible Designs
  70. 70. Google Trends 70 © 2013 Raible Designs
  71. 71. Google Trends 71 © 2013 Raible Designs
  72. 72. Google Trends 72 © 2013 Raible Designs
  73. 73. Indeed Job Trends 73 © 2013 Raible Designs
  74. 74. Indeed Job Trends 74 © 2013 Raible Designs
  75. 75. Indeed Job Trends 75 © 2013 Raible Designs
  76. 76. Indeed Job Trends 76 © 2013 Raible Designs
  77. 77. Mailing List Traffic February 2013 AngularJS 2340 Play 1623 Lift 1049 Grails 828 Wicket 790 Tapestry 730 Apache CXF 432 Dropwizard 157 Struts 82 Jersey 68 Backbone.js 51 0 750 1500 2250 3000 * Frameworks not listed here use Forums, which don’t provide this data. 77 © 2013 Raible Designs
  78. 78. StackOverflow Tagged Questions (March 28, 2013) 15,000 11,250 7,500 3,750 0 Grails Play Lift Spring Roo JRuby on Rails 78 © 2013 Raible Designs
  79. 79. StackOverflow Tagged Questions (March 28, 2013) 10,000 7,500 5,000 2,500 0 Spring MVC Struts 2 PrimeFaces Wicket Vaadin Tapestry 79 © 2013 Raible Designs
  80. 80. StackOverflow Tagged Questions (March 25, 2013) 8,000 6,000 4,000 2,000 0 Backbone.js Angular JS Ember.js 80 © 2013 Raible Designs
  81. 81. StackOverflow Tagged Questions (March 25, 2013) 3,000 2,250 1,500 750 0 Jersey Apache CXF RESTEasy Dropwizard vert.x 81 © 2013 Raible Designs
  82. 82. 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/ 82 © 2013 Raible Designs
  83. 83. Modern Principles 83 © 2013 Raible Designs
  84. 84. The Modern JVM Web Developer‣ Starts with Fast Hardware‣ Uses IntelliJ IDEA‣ Leverages JavaScript, HTML5, and CSS3‣ Creates High Performance Web Sites‣ For Mobile Devices‣ In the Cloud‣ And cares about Security 84 © 2013 Raible Designs
  85. 85. Developer Productivity http://zeroturnaround.com/blog/ developer-productivity-report-part-1-developer-timesheet/ 85 © 2013 Raible Designs
  86. 86. Developer Productivity http://zeroturnaround.com/blog/ developer-productivity-report-part-3-developer-efficiency/ 86 © 2013 Raible Designs
  87. 87. There is no “best” framework Just lots of awesome choices... 87 © 2013 Raible Designs
  88. 88. Don’t listen to me! 88 © 2013 Raible Designs
  89. 89. Choose your own!‣ Prioritize a list of goals that are important to your application.‣ Pick 3-4 frameworks and do a spike with each, developing the same application.‣ Document and rank each framework against your list of goals.‣ Calculate and choose!‣ Don’t be a Picker. 89 © 2013 Raible Designs
  90. 90. Questions?Contact Information http://raibledesigns.com @mraiblePresentations http://slideshare.net/mraible 90 © 2013 Raible Designs
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×