View
80
Download
5
Category
Preview:
DESCRIPTION
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
Citation preview
COMPARING JVM WEB FRAMEWORKS
Matt Raiblehttp://raibledesigns.com@mraible
© 2013 Raible Designs
Photos by Trish McGinity © 2013 Raible Designs
© 2013 Raible Designs
Blogger on raibledesigns.com
Founder of AppFuse
Father, Skier, Cyclist
Web Framework Connoisseur
Who is Matt Raible?
© 2013 Raible Designs
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
‣ History of JVM Web Frameworks‣ The Paradox of Choice‣ Methods and Metrics‣ Conclusion‣ Q and A
Session Agenda
4
© 2013 Raible Designs
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 19
traditional web frameworks are still relevant
© 2013 Raible Designs
The Paradox of Choice
20
© 2013 Raible Designs
Good Decisions Involve
21
1. Figure out your goal or goals
2. Evaluate the importance of each goal
3. Array the options
4. Evaluate how likely each of the options is to meet your goals
5. Pick the winning option
6. Modify goals
© 2013 Raible Designs
Maximizer vs. Satisficer
22
‣ maximizer - tries to make best possible choice‣ satisficer - tries to find first suitable choice
(Photo: Tori Cat at Flickr)
© 2013 Raible Designs
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
‣ 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 Speed28
How to Constrain Choices
© 2013 Raible Designs
‣ Language‣ Platform ‣ Application Type
29
Predetermined Constraints
© 2013 Raible Designs
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 Frameworks
33
© 2013 Raible Designs
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: Mojarra (RI), MyFaces, Tomahawk, IceFaces, RichFaces,
PrimeFaces‣ Spring MVC, Stripes, RIFE, ZK
38
http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java
© 2013 Raible Designs
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
Comparison Matrix
http://bit.ly/jvm-frameworks-matrix
40
© 2013 Raible Designs
Matrix Results
0
4.5
9
13.5
18
Grail
s
Sprin
g
Rails
GWT
Vaad
inTa
pestr
yW
icket
Stru
ts 2
Play
Strip
es JSF
Flex Lift
11.513.5141414.514.51515.515.5
17171717.5
41
© 2013 Raible Designs
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
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)
44
© 2013 Raible Designs
‣ 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, it's zero.
http://lift.la/my-take-on-matt-raibles-spreadsheet
* Matt's scale is 0-1 and my ratings are on Matt's scale, except mine goes to 11.
45
David Pollack’s Lift Ratings
© 2013 Raible Designs
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
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
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
World Wide Wait - Devoxx
49
http://www.parleys.com/d/2942
© 2013 Raible Designs
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
57
‣ 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
© 2013 Raible Designs
Raible’s Recommendations
58
‣ 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 + ?
© 2013 Raible Designs
The Problem with GWT
59
© 2013 Raible Designs
Comparison Statistics
60
‣ 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)
© 2013 Raible Designs
Jobs on Dice.com
0
75
150
225
300
Grails
JRub
y on R
ails Play Lift
Sprin
g Roo
Full Stack Frameworks, March 2013
61
© 2013 Raible Designs
Jobs on Dice.com
0
150
300
450
600
Sprin
g MVC
Strut
s 2
Wick
et
Tape
stry
Prim
eFac
es
Vaad
in
Pure Web Frameworks, March 2013
62
© 2013 Raible Designs
Jobs on Dice.com
0
75
150
225
300
Back
bone
Embe
r
Angu
lar
JavaScript MVC Frameworks, March 2013
63
© 2013 Raible Designs
Jobs on Dice.com
0
125
250
375
500
Jerse
y
Apac
he C
XF
REST
Easy
Dropwiza
rd
vert.x
JVM API Frameworks, March 2013
64
© 2013 Raible Designs
LinkedIn Skills
0
3,750
7,500
11,250
15,000
Grails
Play
Sprin
g Roo
JRub
y on R
ails Lift
Full Stack Frameworks, March 2013
65
© 2013 Raible Designs
LinkedIn Skills
0
3,750
7,500
11,250
15,000
Sprin
g MVC
Strut
s 2
Wick
et
Prim
eFac
es
Vaad
in
Tape
stry
Pure Web Frameworks, March 2013
66
© 2013 Raible Designs
LinkedIn Skills
0
3,750
7,500
11,250
15,000
Back
bone
Angu
lar
Embe
r
JavaScript MVC Frameworks, March 2013
67
© 2013 Raible Designs
LinkedIn Skills
0
3,750
7,500
11,250
15,000
Jerse
y
Apac
he C
XF
REST
Easy
vert.x
Dropwiza
rd
JVM API Frameworks, March 2013
68
© 2013 Raible Designs
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
AngularJSPlayLift
GrailsWicket
TapestryApache CXFDropwizard
StrutsJersey
Backbone.js
0 750 1500 2250 3000
516882
157432
730790828
10491623
2340
February 2013
* Frameworks not listed here use Forums, which don’t provide this data.
77
© 2013 Raible Designs
StackOverflow
0
3,750
7,500
11,250
15,000
Grails Play Lift Spring Roo JRuby on Rails
Tagged Questions (March 28, 2013)
78
© 2013 Raible Designs
StackOverflow
0
2,500
5,000
7,500
10,000
Spring MVC Struts 2 PrimeFaces Wicket Vaadin Tapestry
Tagged Questions (March 28, 2013)
79
© 2013 Raible Designs
StackOverflow
0
2,000
4,000
6,000
8,000
Backbone.js Angular JS Ember.js
Tagged Questions (March 25, 2013)
80
© 2013 Raible Designs
StackOverflow
0
750
1,500
2,250
3,000
Jersey Apache CXF RESTEasy Dropwizard vert.x
Tagged Questions (March 25, 2013)
81
© 2013 Raible Designs
Java Developers
82
“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/
© 2013 Raible Designs
Modern Principles
83
© 2013 Raible Designs
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
Developer Productivity
85
http://zeroturnaround.com/blog/developer-productivity-report-part-1-developer-timesheet/
© 2013 Raible Designs
Developer Productivity
86
http://zeroturnaround.com/blog/developer-productivity-report-part-3-developer-efficiency/
© 2013 Raible Designs
There is no “best” framework
87
Just lots of awesome choices...
© 2013 Raible Designs
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 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
Questions?
Contact Informationhttp://raibledesigns.com@mraible
Presentationshttp://slideshare.net/mraible
90
Recommended