Photos by Trish McGinity - http://mcginityphoto.com Photos by Trish - http://mcginityphoto.com
COMPARING JVM WEB FRAMEWORKS
Matt Raiblehttp://raibledesigns.com
© 2012 Raible Designs
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?
2
© 2012 Raible Designs
Blogger on raibledesigns.com
Founder of AppFuse
Father, Skier, Cyclist
Web Framework Connoisseur
Who is Matt Raible?
© 2012 Raible Designs
‣ The Problem with Web Frameworks‣ The Candidates‣ Comparison Points‣ The Matrix‣ Conclusion‣ Q and A
Session Agenda
4
© 2012 Raible Designs
The Problem
5
© 2012 Raible Designs
The Real Problem
6
© 2012 Raible Designs
The Real Problem
7
© 2012 Raible Designs
The Real Problem
8
© 2012 Raible Designs
How do you choose?
9
© 2012 Raible Designs
Eliminate, Don’t Include10
© 2012 Raible Designs
© 2012 Raible Designs
© 2012 Raible Designs
... while I'd *love* to see life made simpler for Java web developers, and a lot of the things happening in Struts2 are going that way -- it won't be me doing it.
I've gone over to the dark side :-) and much prefer to develop in Rails -- for the conciseness mentioned above, but also because I don't ever have to do a "build" or "deploy" step during my development cycle any more. But you guys and gals need to be reminded that *this* is the kind of thing you are competing against if you expect to attract Rails developers ... or to avoid even more "previously Java web developer" defectors like me :-).
-- Craig McClanahan, 10/23/2007http://markmail.org/thread/qfb5sekad33eobh2
Craig McClanahan on Rails
13
© 2012 Raible Designs
James Gosling on JSF
http://www.youtube.com/watch?v=9ei-rbULWoA#t=47m
14
© 2012 Raible Designs
‣ Developer Productivity‣ Developer Perception‣ Learning Curve‣ Project Health‣ Developer Availability‣ Job Trends
15
2010: Comparison Points
© 2012 Raible Designs
2010: Comparison Points
‣ Templating‣ Components‣ Ajax‣ Plugins or Add-Ons‣ Scalability‣ Testing Support
16
© 2012 Raible Designs
‣ i18n and l10n‣ Validation‣ Multi-language Support (Groovy / Scala)‣ Quality of Documentation/Tutorials‣ Books Published‣ REST Support (client and server)
17
2010: Comparison Points
© 2012 Raible Designs
‣ Mobile / iPhone Support‣ Degree of Risk
18
2010: Comparison Points
© 2012 Raible Designs
Comparison Matrix
http://bit.ly/jvm-frameworks-matrix
19
© 2012 Raible Designs
Matrix Results
0
4.5
9
13.5
18Gr
ails
Sprin
gRa
ilsGW
TVa
adin
Wick
etTa
pestr
ySt
ruts
2St
ripes Play
Flex
JSF Lift
11.513.513.5141414.5151515.5
17171717.5
20
© 2012 Raible Designs
Matrix Results
‣ Grails (17.5)‣ GWT (17)‣ Ruby on Rails (17)‣ Spring MVC (17)‣ Vaadin (15.5)‣ Tapestry and Wicket (15)
21
© 2012 Raible Designs
Weighted Matrix
22
© 2012 Raible Designs
Weighted Results
‣ Grails (90)‣ Spring MVC (85)‣ Ruby on Rails (82.5)‣ Vaadin (82.5)‣ Play (82.5)‣ GWT (80)
23
© 2012 Raible Designs
Fighting for 5th
‣ Top at Devoxx 2010- GWT
- Rails
- Spring MVC
- Grails
- Wicket / Struts 2
24
© 2012 Raible Designs
Fighting for 5th
‣ Top at Rich Web Experience 2010- Grails
- GWT
- Rails
- Spring MVC
- Tapestry / Vaadin
25
© 2012 Raible Designs
Fighting for 5th
‣ Top at TheServerSide Java Symposium 2010- Grails
- GWT
- Rails
- Spring MVC
- Vaadin
26
© 2012 Raible Designs
Ratings Logic
‣ Developer Productivity‣ Developer Perception‣ Learning Curve‣ Project Health‣ Developer Availability‣ Job Trends
27
© 2012 Raible Designs
Ratings Logic
‣ Templating‣ Components‣ Ajax‣ Plugins or Add-Ons‣ Scalability‣ Testing Support
28
© 2012 Raible Designs
‣ i18n and l10n‣ Validation‣ Multi-language Support (Groovy / Scala)‣ Quality of Documentation/Tutorials‣ Books Published‣ REST Support (client and server)
29
Ratings Logic
© 2012 Raible Designs
‣ Mobile / iPhone Support‣ Degree of Risk
http://raibledesigns.com/rd/entry/how_i_calculated_ratings_for
30
Ratings Logic
© 2012 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.
31
David Pollack’s Lift Ratings
© 2012 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
32
© 2012 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
33
© 2012 Raible Designs
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.
34
© 2012 Raible Designs
World Wide Wait - Devoxx
35
http://www.parleys.com/d/2942
© 2012 Raible Designs
World Wide Wait - Devoxx
36
© 2012 Raible Designs
World Wide Wait - Devoxx
37
© 2012 Raible Designs
World Wide Wait - Devoxx
38
© 2012 Raible Designs
World Wide Wait - Devoxx
39
© 2012 Raible Designs
World Wide Wait - Devoxx
40
HybridJava beats JSF, Wicket and Spring MVC by perfomance.
© 2012 Raible Designs
HybridJava - Really?
41
© 2012 Raible Designs
Pros and Cons
42
© 2012 Raible Designs
Grails
43
‣ 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
GWT
44
‣ 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
‣ 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
Ruby on Rails
45
© 2012 Raible Designs
‣ 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!)
Spring MVC
46
© 2012 Raible Designs
‣ 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
Vaadin
47
© 2012 Raible Designs
Wicket
48
‣ 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
Tapestry
49
‣ 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
Pretty Graphs
50
© 2012 Raible Designs
LOC in AppFuse Light
51
0
1250
2500
3750
5000
JavaScript XML CSS Java
JSF Spring Stripes Struts 2 Tapestry 5 Wicket
© 2012 Raible Designs
Jobs on Dice (World)
0
175
350
525
700
Sprin
gRa
ilsGWTGrai
lsW
icket
Tape
stry
Vaad
inJS
F52
© 2012 Raible Designs
LinkedIn Skills (World)
0
10,000
20,000
30,000
40,000
Rails
Sprin
gGW
TGr
ails
Tape
stry
Wick
etVa
adin
JSF
53
© 2012 Raible Designs
Pretty Graphs
54
© 2012 Raible Designs
Pretty Graphs
55
© 2012 Raible Designs
Pretty Graphs
56
© 2012 Raible Designs
Pretty Graphs
57
© 2012 Raible Designs
Pretty Graphs
58
© 2012 Raible Designs
Pretty Graphs
59
© 2012 Raible Designs
Pretty Graphs
60
© 2012 Raible Designs
Pretty Graphs
61
© 2012 Raible Designs
Pretty Graphs
62
© 2012 Raible Designs
Mailing List Traffic
Wicket
GWT
Grails
Rails
Tapestry
Play
0 475 950 1425 1900
1451
1538
1604
1635
1753
1841
* Spring MVC and Vaadin use Forums, which don’t provide this data.63
© 2012 Raible Designs
Books on Amazon
Rails
Spring MVC
GWT
Grails
Wicket
Tapestry 5
Vaadin
0 75 150 225 300
64
© 2012 Raible Designs
2011 Releases
0 4 8 12 16Grails
GWT
Rails
Spring MVCVaadin
TapestryWicket
As of August 24, 2011
65
© 2012 Raible Designs
StackOverflow
0
12,500
25,000
37,500
50,000
GrailsRails
Vaadin
Tagged Questions (August 24, 2011)
66
© 2012 Raible Designs
StackOverflow
0
2,500
5,000
7,500
10,000
Spring JSFGWT
GrailsWicket
Tagged Questions (August 24, 2011)
67
© 2012 Raible Designs
StackOverflow
0
50000
100000
150000
200000
Java ScalaGroovy
ClojureJRuby
Tagged Questions (August 24, 2011)
68
© 2012 Raible Designs
StackOverflow
0
1500
3000
4500
6000
ScalaGroovy
ClojureJRuby
Tagged Questions (August 24, 2011)
69
© 2012 Raible Designs
Source: ZeroTurnaround's Java EE Productivity Report 2010
Framework Popularity
70
© 2012 Raible Designs
What we need is...
71
© 2012 Raible Designs
Innovators
72
© 2012 Raible Designs
Modern Principles
73
© 2012 Raible Designs
Web Developers
74
© 2012 Raible Designs
Java Developers
75
“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
The Modern Web Developer
76
‣ ... 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
You have to decide...
77
Are you a web developer?
© 2012 Raible Designs
You have to decide...
78
Or are you a services developer?
© 2012 Raible Designs
Client-Side MVC
79
© 2012 Raible Designs
Developer Productivity
80
http://zeroturnaround.com/blog/developer-productivity-report-part-1-developer-timesheet/
© 2012 Raible Designs
Developer Productivity
81
http://zeroturnaround.com/blog/developer-productivity-report-part-3-developer-efficiency/
© 2012 Raible Designs
There is no “best” framework
82
Just lots of awesome choices...
© 2012 Raible Designs
Don’t listen to me!
83
© 2012 Raible Designs
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...
84
© 2012 Raible Designs
But don’t forget...
85
© 2012 Raible Designs
Questions?
‣ Contact- http://raibledesigns.com
- @mraible
‣ Download- http://slideshare.net/mraible
86