comparing jvm web frameworks - devoxx 2010
DESCRIPTION
Comparing JVM Web Frameworks Presentation from Devoxx 2010. 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.TRANSCRIPT
![Page 1: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/1.jpg)
© 2010, Raible DesignsImages by Stuck in Customs - http://www.flickr.com/photos/stuckincustoms
© 2010 Raible Designs
COMPARING JVM WEB FRAMEWORKS
Matt Raiblehttp://raibledesigns.com
![Page 2: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/2.jpg)
Introductions
Your experience with web development?
Your experience with Java EE development?
What do you want to get from this session?
Experience with Spring MVC, GWT, Rails, Grails, Wicket or Struts 2?
2
![Page 3: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/3.jpg)
© 2010, Raible Designs
Who is Matt Raible?
Blogger on raibledesigns.com
Founder of AppFuse
Father, Skier, Cyclist
Web Framework ConnoisseurMontana Native
![Page 4: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/4.jpg)
The Problem with Web Frameworks
The Candidates
Comparison Points
The Matrix
Conclusion
Q and A
Session Agenda
4
![Page 5: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/5.jpg)
The Problem
5
![Page 6: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/6.jpg)
How do you choose?
![Page 7: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/7.jpg)
E L I M I N AT E , D O N ’ T I N C L U D E
![Page 8: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/8.jpg)
![Page 9: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/9.jpg)
![Page 10: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/10.jpg)
... 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/2007
h%p://markmail.org/thread/q65sekad33eobh2
10
![Page 11: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/11.jpg)
Choosing a Framework
Choose a short list of frameworks to prototype with.
Create an application prototype with each framework.
Document findings and create a matrix with important criteria.
Create presentation to summarize document.
Deliver document, presentation and recommendation.
11
![Page 12: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/12.jpg)
2007: 6 Important Factors
Request, Component or RIA Framework
Ease of Development
Project Community
Project Future and Roadmap
Maintenance
Technical Features
12
![Page 13: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/13.jpg)
Request, Component or RIA
Are you developing...
– ... a consumer facing site?
– ... a desktop-like, application?
– ... a media-rich site?
If the framework is built for state-fulness, should you use it in a stateless architecture?
13
![Page 14: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/14.jpg)
High-traffic, internet facing, infinite scalability
Intranet-based, behind the firewall, few users
Products, to be maintained for 5-10 years
Legacy Backend
Others?
Types of Applications
14
![Page 15: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/15.jpg)
Types of FrameworksRequest Based Frameworks
– Struts 2, Spring MVC, Rails, Stripes
Component Based Frameworks
– JSF, Tapestry, GWT
Rich Internet Applications
– Flex
One Size Fits All
– Grails15
![Page 16: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/16.jpg)
Do they matchup?
High-traffic, internet facing, infinite scalability
– Request-based frameworks
Intranet-based, behind the firewall, few users
– Component-based frameworks
Products, to be maintained for 5-10 years
– Largest Community, Most Vendor Support
Legacy Backend
– Same Language as backend
16
![Page 17: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/17.jpg)
2010: Now There’s 20
1. Developer Productivity
2. Developer Perception
3. Learning Curve
4. Project Health
5. Developer Availability
6. Job Trends
17
![Page 18: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/18.jpg)
2010: Comparison Points
7. Templating
8. Components
9. Ajax
10.Plugins or Add-Ons
11.Scalability
12.Testing Support
18
![Page 19: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/19.jpg)
2010: Comparison Points
i18n and l10n
Validation
Multi-language Support (Groovy / Scala)
Quality of Documentation/Tutorials
Books Published
REST Support (client and server)
19
![Page 20: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/20.jpg)
2010: Comparison Points
Mobile / iPhone Support
Degree of Risk
20
![Page 21: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/21.jpg)
Comparison Matrix
http://bit.ly/jvm-frameworks-matrix
![Page 22: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/22.jpg)
Matrix Results
0
4.25
8.5
12.75
17
Rating
Spring MVC Rails GWT Grails WicketStruts 2 Stripes Tapestry Flex PlayJSF Vaadin Lift
22
![Page 23: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/23.jpg)
Matrix Results
Spring MVC (17)
GWT (17)
Ruby on Rails (17)
Grails (16.5)
Wicket (14.5)
Struts 2 (14.5)
23
![Page 24: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/24.jpg)
Pros and Cons
![Page 25: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/25.jpg)
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
25
![Page 26: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/26.jpg)
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
26
![Page 27: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/27.jpg)
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
27
![Page 28: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/28.jpg)
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
28
![Page 29: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/29.jpg)
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
29
![Page 30: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/30.jpg)
Rails vs. Grails
http://grails.org/Grails+vs+Rails+Benchmark
– Grails: 40 requests per second, Rails: 32
30
![Page 31: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/31.jpg)
Language Performance
0
200
400
600
Java C++ JRuby PythonGroovy PHP
Time (ms) per iteration
h%p://blog.dhananjaynene.com/2008/07/performance-‐comparison-‐c-‐java-‐python-‐ruby-‐jython-‐jruby-‐groovy/ 31
![Page 32: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/32.jpg)
Jobs in 2010 (US)
0
150
300
450
600
Dice
Spring MVC GWT Rails Grails Wicket
32
![Page 33: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/33.jpg)
Developer Skills (US)
0
2,750
5,500
8,250
11,000
Spring MVC GWT Rails Grails Wicket
33
![Page 34: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/34.jpg)
Developer Skills (World)
0
2,750
5,500
8,250
11,000
Spring MVC GWT Rails Grails Wicket
34
![Page 35: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/35.jpg)
Pretty Graphs
![Page 36: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/36.jpg)
Pretty Graphs
![Page 37: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/37.jpg)
Pretty Graphs
![Page 38: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/38.jpg)
Pretty Graphs
![Page 39: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/39.jpg)
Pretty Graphs
![Page 40: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/40.jpg)
Pretty Graphs
![Page 41: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/41.jpg)
Mailing List Traffic
September 2010
0 1000 2000 3000 4000
Rails Grails GWT Play Wicket
* Spring MVC uses Forums, which don’t provide this data.
![Page 42: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/42.jpg)
Books on Amazon
October 2010
0 50 100 150 200
Spring MVC Rails GWT Grails Wicket
![Page 43: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/43.jpg)
2010 Releases
0 4 8 12
Spring MVC
GWT
Rails
Grails
Wicket
As of October 28, 2010
![Page 44: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/44.jpg)
StackOverflow
0
7,500
15,000
22,500
30,000
Spring MVCGrails
Rails
Tagged Questions (October 26, 2010)
![Page 45: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/45.jpg)
StackOverflow
0
6,250
12,500
18,750
25,000
SpringGWT
GrailsWicket
Rails
Tagged Questions (October 26, 2010)
![Page 46: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/46.jpg)
StackOverflow
0
20000
40000
60000
80000
JavaScala
JRubyClojure
Groovy
Tagged Questions (October 28, 2010)
![Page 47: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/47.jpg)
StackOverflow
0
20000
40000
60000
80000
JavaPHP
.NETPython
Ruby
Tagged Questions (October 28, 2010)
![Page 48: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/48.jpg)
StackOverflow
0
750
1500
2250
3000
TomcatJBoss
GlassfishWebSphere
Jetty
Tagged Questions (October 28, 2010)
![Page 49: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/49.jpg)
Spring MVC
http://www.springsource.org
Apache 2.0 License
Active Community @ http://forum.springsource.org/forumdisplay.php?f=25
Recommended Books:
– Expert Spring MVC– Spring in Action– Pro Spring
49
![Page 50: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/50.jpg)
Google Web Toolkit
http://code.google.com/webtoolkit
Apache 2.0 License
Active Community @ http://groups.google.com/group/Google-Web-Toolkit
Recommended Books:
– GWT in Action– GWT in Practice– Google Web Toolkit Solutions
50
![Page 51: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/51.jpg)
Ruby on Rails
http://rubyonrails.org
MIT License
Active Community @
http://rubyonrails.org/community
Recommended Books:
– Agile Web Development with Rails– Rails for Java Developers
51
![Page 52: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/52.jpg)
Grailshttp://grails.org
Apache 2.0 License
Active Community @
http://grails.org/Community
Recommended Books:
– Getting Started with Grails– Grails: A Quick-Start Guide– Programming Groovy
52
![Page 53: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/53.jpg)
Apache Wicket
http://wicket.apache.org
Apache 2.0 License
Active Community @ http://wicket.apache.org/help/email.html
Recommended Books:
– Wicket in Action– Pro Wicket
53
![Page 54: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/54.jpg)
C O N C L U S I O NWhat if there is no “best” web framework?
![Page 55: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/55.jpg)
How to Choose?
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!
55
![Page 56: Comparing JVM Web Frameworks - Devoxx 2010](https://reader034.vdocument.in/reader034/viewer/2022052505/554f589db4c905b9508b5240/html5/thumbnails/56.jpg)
Questions?
Contact Information
http://raibledesigns.com
http://twitter.com/mraible
Download Presentation
http://slideshare.net/mraible
56