Comparing JVM Web Frameworks
-
Upload
esteban-abait -
Category
Documents
-
view
220 -
download
0
Transcript of Comparing JVM Web Frameworks
-
8/7/2019 Comparing JVM Web Frameworks
1/56
2010, Raible Designs
2010 Raible Designs
http://raibledesigns.com/http://raibledesigns.com/http://www.flickr.com/photos/stuckincustomshttp://www.flickr.com/photos/stuckincustoms -
8/7/2019 Comparing JVM Web Frameworks
2/56
Introductions
Your experience with webdevelopment?
Your experience with JavaEE development?
What do you want to getfrom this session?
Experience with SpringMVC, GWT, Rails, Grails,Wicket or Struts 2?
2
-
8/7/2019 Comparing JVM Web Frameworks
3/56
2010, Raible Designs
Who is Matt Raible?
Blogger on
Founder of
Father, Skier,
Cyclist
Web Framework Connoisseur
Montana Native
http://appfuse.org/http://appfuse.org/http://appfuse.org/http://raibledesigns.com/http://raibledesigns.com/ -
8/7/2019 Comparing JVM Web Frameworks
4/56
The Problem with Web Frameworks
The Candidates
Comparison Points
The Matrix
Conclusion
Q and A
Session Agenda
4
-
8/7/2019 Comparing JVM Web Frameworks
5/56
-
8/7/2019 Comparing JVM Web Frameworks
6/56
How do you choose?
-
8/7/2019 Comparing JVM Web Frameworks
7/56
-
8/7/2019 Comparing JVM Web Frameworks
8/56
-
8/7/2019 Comparing JVM Web Frameworks
9/56
-
8/7/2019 Comparing JVM Web Frameworks
10/56
... while I'd *love* to see life made simpler for Java webdevelopers, and a lot of the things happening in Struts2 aregoing that way -- it won't be me doing it.
I've gone over to the dark side :-) and much prefer to develop inRails -- for the conciseness mentioned above, but also because Idon't ever have to do a "build" or "deploy" step during mydevelopment cycle any more. But you guys and gals need to bereminded that *this* is the kind of thing you are competingagainst 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
http://markmail.org/thread/qfb5sekad33eobh2http://markmail.org/thread/qfb5sekad33eobh2http://markmail.org/thread/qfb5sekad33eobh2 -
8/7/2019 Comparing JVM Web Frameworks
11/56
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
-
8/7/2019 Comparing JVM Web Frameworks
12/56
2007: 6 Important Factors
Request, Component or RIA Framework
Ease of Development
Project Community
Project Future and Roadmap
Maintenance
Technical Features
12
-
8/7/2019 Comparing JVM Web Frameworks
13/56
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
-
8/7/2019 Comparing JVM Web Frameworks
14/56
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
-
8/7/2019 Comparing JVM Web Frameworks
15/56
Types of Frameworks
Request Based Frameworks
Struts 2, Spring MVC, Rails, Stripes
Component Based Frameworks
JSF, Tapestry, GWT
Rich Internet Applications
Flex
One Size Fits All
Grails15
-
8/7/2019 Comparing JVM Web Frameworks
16/56
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
1
-
8/7/2019 Comparing JVM Web Frameworks
17/56
2010: Now Theres 20
1. Developer Productivity
2. Developer Perception
3. Learning Curve
4. Project Health
5. Developer Availability
6. Job Trends
17
-
8/7/2019 Comparing JVM Web Frameworks
18/56
2010: Comparison Points
7. Templating
8. Components
9. Ajax
10.Plugins or Add-Ons
11.Scalability
12.Testing Support
18
-
8/7/2019 Comparing JVM Web Frameworks
19/56
2010: Comparison Points
i18n and l10n
Validation
Multi-language Support (Groovy / Scala)
Quality of Documentation/Tutorials
Books Published
REST Support (client and server)
19
-
8/7/2019 Comparing JVM Web Frameworks
20/56
2010: Comparison Points
Mobile / iPhone Support
Degree of Risk
20
-
8/7/2019 Comparing JVM Web Frameworks
21/56
Comparison Matrix
http://bit.ly/jvm-frameworks-matrix
http://bit.ly/jvm-frameworks-matrixhttp://bit.ly/jvm-frameworks-matrix -
8/7/2019 Comparing JVM Web Frameworks
22/56
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
-
8/7/2019 Comparing JVM Web Frameworks
23/56
Matrix Results
Spring MVC (17)
GWT (17)
Ruby on Rails (17)
Grails (16.5)
Wicket (14.5)
Struts 2 (14.5)
23
-
8/7/2019 Comparing JVM Web Frameworks
24/56
Pros and Cons
-
8/7/2019 Comparing JVM Web Frameworks
25/56
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
-
8/7/2019 Comparing JVM Web Frameworks
26/56
GWT
Pros
Write Java => Produces Optimized JavaScript
Easy to learn and develop with standard Java ToolsVibrant Community
Cons
You have to know Java
Slow to compile, difficult to test
More like a JSP Tag Library than a web framework
2
-
8/7/2019 Comparing JVM Web Frameworks
27/56
Ruby on Rails
Pros
Easy to learn and understand for Web Developers
Lots and lots of documentationPassionate Community
Cons
Slightly less performant by default
Dynamic language means more tests
Development Tools and Debugging
27
-
8/7/2019 Comparing JVM Web Frameworks
28/56
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
-
8/7/2019 Comparing JVM Web Frameworks
29/56
Wicket
Pros
Great for Java Developers
Tight binding between pages and viewsActive community - support from creators
Cons
No Jobs or Developers
Stateful by default
HTML Templates live next to Java code by default
29
-
8/7/2019 Comparing JVM Web Frameworks
30/56
Rails vs. Grails
http://grails.org/Grails+vs+Rails+Benchmark
Grails: 40 requests per second, Rails: 32
30
http://grails.org/Grails+vs+Rails+Benchmarkhttp://grails.org/Grails+vs+Rails+Benchmark -
8/7/2019 Comparing JVM Web Frameworks
31/56
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
http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ -
8/7/2019 Comparing JVM Web Frameworks
32/56
-
8/7/2019 Comparing JVM Web Frameworks
33/56
Developer Skills (US)
0
2,750
5,500
8,250
11,000
LinkedIn
Spring MVC GWT Rails Grails Wicket
33
-
8/7/2019 Comparing JVM Web Frameworks
34/56
Developer Skills (World)
0
2,750
5,500
8,250
11,000
LinkedIn
Spring MVC GWT Rails Grails Wicket
34
-
8/7/2019 Comparing JVM Web Frameworks
35/56
Pretty Graphs
-
8/7/2019 Comparing JVM Web Frameworks
36/56
Pretty Graphs
-
8/7/2019 Comparing JVM Web Frameworks
37/56
Pretty Graphs
-
8/7/2019 Comparing JVM Web Frameworks
38/56
Pretty Graphs
-
8/7/2019 Comparing JVM Web Frameworks
39/56
Pretty Graphs
-
8/7/2019 Comparing JVM Web Frameworks
40/56
Pretty Graphs
-
8/7/2019 Comparing JVM Web Frameworks
41/56
Mailing List Traffic
September 2010
0 1000 2000 3000 4000
Rails Grails GWT Play Wicket
* Spring MVC uses Forums, which dont provide this data.
-
8/7/2019 Comparing JVM Web Frameworks
42/56
Books on Amazon
October 2010
0 50 100 150 200
Spring MVC Rails GWT Grails Wicket
-
8/7/2019 Comparing JVM Web Frameworks
43/56
2010 Releases
0 4 8 12
Spring MVC
GWT
Rails
Grails
Wicket
As of October 28, 2010
S kO fl
-
8/7/2019 Comparing JVM Web Frameworks
44/56
StackOverflow
0
7,500
15,000
22,500
30,000
Spring MVC
Grails
Rails
Tagged Questions (October 26, 2010)
S kO fl
-
8/7/2019 Comparing JVM Web Frameworks
45/56
StackOverflow
0
6,250
12,500
18,750
25,000
SpringGWT
GrailsWicket
Rails
Tagged Questions (October 26, 2010)
St kO fl
-
8/7/2019 Comparing JVM Web Frameworks
46/56
StackOverflow
0
20000
40000
60000
80000
JavaScala
JRubyClojure
Groovy
Tagged Questions (October 28, 2010)
St kO fl
-
8/7/2019 Comparing JVM Web Frameworks
47/56
StackOverflow
0
20000
40000
60000
80000
JavaPHP
.NETPython
Ruby
Tagged Questions (October 28, 2010)
St kO fl
-
8/7/2019 Comparing JVM Web Frameworks
48/56
StackOverflow
0
750
1500
2250
3000
TomcatJBoss
GlassfishWebSphere
Jetty
Tagged Questions (October 28, 2010)
-
8/7/2019 Comparing JVM Web Frameworks
49/56
G l W b T lki
-
8/7/2019 Comparing JVM Web Frameworks
50/56
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
R b R il
http://groups.google.com/group/Google-Web-Toolkithttp://groups.google.com/group/Google-Web-Toolkithttp://groups.google.com/group/Google-Web-Toolkithttp://groups.google.com/group/Google-Web-Toolkithttp://groups.google.com/group/Google-Web-Toolkithttp://code.google.com/webtoolkithttp://code.google.com/webtoolkit -
8/7/2019 Comparing JVM Web Frameworks
51/56
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
G il
http://www.rubyonrails.org/communityhttp://www.rubyonrails.org/communityhttp://www.rubyonrails.org/communityhttp://www.rubyonrails.org/communityhttp://rubyonrails.org/http://rubyonrails.org/ -
8/7/2019 Comparing JVM Web Frameworks
52/56
Grails
http://grails.orgApache 2.0 License
Active Community @
http://grails.org/Community
Recommended Books:
Getting Started with Grails Grails: A Quick-Start Guide
Programming Groovy
52
A h Wi k t
http://grails.org/Communityhttp://grails.org/Communityhttp://grails.org/Communityhttp://grails.org/http://grails.org/ -
8/7/2019 Comparing JVM Web Frameworks
53/56
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
http://wicket.apache.org/help/email.htmlhttp://wicket.apache.org/help/email.htmlhttp://wicket.apache.org/help/email.htmlhttp://wicket.apache.org/help/email.htmlhttp://wicket.apache.org/help/email.htmlhttp://wicket.apache.org/http://wicket.apache.org/ -
8/7/2019 Comparing JVM Web Frameworks
54/56
H t Ch ?
-
8/7/2019 Comparing JVM Web Frameworks
55/56
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
Q ti ?
-
8/7/2019 Comparing JVM Web Frameworks
56/56
Questions?
Contact Information
http://raibledesigns.com
http://twitter.com/mraible
Download Presentation
http://slideshare.net/mraible
http://slideshare.net/mraiblehttp://twitter.com/mraiblehttp://slideshare.net/mraiblehttp://slideshare.net/mraiblehttp://twitter.com/mraiblehttp://twitter.com/mraiblehttp://raibledesigns.com/http://raibledesigns.com/