comparing java web frameworks
DESCRIPTION
Comparing Java WebFrameworksJSF, Spring MVC, Stripes, Struts 2, Tapestry and WicketTRANSCRIPT
![Page 1: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/1.jpg)
© 2007 Raible Designs, Inc.
Comparing Java Web Frameworks
JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket
Matt [email protected]://raibledesigns.com
![Page 2: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/2.jpg)
© 2007 Raible Designs, Inc.
Today's Agenda
Introductions
Pros and Cons
Smackdown
Conclusion
Q and A
![Page 3: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/3.jpg)
© 2007 Raible Designs, Inc.
Introductions
Your experience with webapps?
Your experience with Java EE?
What do you want to get from this session?
Experience with Maven, Tomcat, Hibernate, Spring?
Web Framework Experience:
Spring MVC, Struts 2, Stripes, JSF, Tapestry, Wicket
![Page 4: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/4.jpg)
© 2007 Raible Designs, Inc.
Power user of Java Open Source Frameworks
Author of Spring Live and Pro JSP 2.0
Founder of AppFuse and AppFuse Light
Member of Java EE 5, JSF 1.2 and Bean Validation Expert Groups
Committer on Apache Projects: Roller and Struts
Java Blogger since 2002
Who is Matt Raible?
![Page 5: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/5.jpg)
© 2007 Raible Designs, Inc.
![Page 6: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/6.jpg)
© 2007 Raible Designs, Inc.
My Experience
![Page 7: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/7.jpg)
© 2007 Raible Designs, Inc.
Pros and Cons
![Page 8: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/8.jpg)
© 2007 Raible Designs, Inc.
JSFPros:
Java EE Standard - lots of demand and jobs
Fast and easy to develop with initially
Lots of component libraries
Cons:
Tag soup for JSPs
Doesn't play well with REST or Security
No single source for implementation
![Page 9: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/9.jpg)
© 2007 Raible Designs, Inc.
Spring MVCPros:
Lifecyle for overriding binding, validation, etc.
Integrates with many view options seamlessly: JSP/JSTL, Tiles, Velocity, FreeMarker, Excel, PDF
Inversion of Control makes it easy to test
Cons:
Configuration intensive - lots of XML
Almost too flexible - no common parent Controller
No built-in Ajax support
![Page 10: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/10.jpg)
© 2007 Raible Designs, Inc.
StripesPros:
No XML - Convention over Configuration
Good documentation (easy to learn)
Enthusiastic community
Cons:
Small Community
Not as actively developed as other projects
Hard-coded URLs in ActionBeans
![Page 11: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/11.jpg)
© 2007 Raible Designs, Inc.
Struts 2Pros:
Simple architecture - easy to extend
Tag Library is easy to customize with FreeMarker or Velocity
Controller-based or page-based navigation
Cons:
Documentation is poorly organized
No feedback for missing properties or invalid OGNL expressions
Googling results in Struts 1.x documentation
![Page 12: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/12.jpg)
© 2007 Raible Designs, Inc.
TapestryPros:
Very productive once you learn it
Templates are HTML - great for designers
Lots of innovation between releases
Cons:
Documentation very conceptual, rather than pragmatic
Steep learning curve
Long release cycles - major upgrades every year
![Page 13: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/13.jpg)
© 2007 Raible Designs, Inc.
WicketPros:
Great for Java developers, not web developers
Tight binding between pages and views
Active community - support from the creators
Cons:
HTML templates live next to Java code
Need to have a good grasp of OO
The Wicket Way - everything done in Java
![Page 14: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/14.jpg)
© 2007 Raible Designs, Inc.
The Smackdown
![Page 15: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/15.jpg)
© 2007 Raible Designs, Inc.
Evaluation Criteria
Ajax Support: Is it built-in and easy to use?
Bookmark-ability: Can users bookmark pages and return to them easily?
Validation: How easy is it to use and does it support client-side (JavaScript) validation?
Testability: How easy is it to test Controllers out of container?
![Page 16: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/16.jpg)
© 2007 Raible Designs, Inc.
Evaluation Criteria, cont.
Post and Redirect: How does the framework handle the duplicate post problem?
Internationalization: How is i18n supported and how easy is it to get messages in Controllers?
Page Decoration: What sort of page decoration/composition mechanisms does the framework support?
Community and Support: Can you get questions answered quickly (and respectfully)?
![Page 17: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/17.jpg)
© 2007 Raible Designs, Inc.
Evaluation Criteria, cont.
Tools: Is there good tool (particularly IDE) support for the framework?
Marketability of Skills: If you learn the framework, will it help you get a job?
Job Count: What is the demand for framework skills on dice.com and indeed.com?
![Page 18: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/18.jpg)
© 2007 Raible Designs, Inc.
Ajax Support
Is Ajax support built-in and easy to use?
JSF: No Ajax support, use ICEfaces and Ajax4JSF
Stripes: No libraries, supports streaming results
Struts 2: Dojo built-in, plugins for GWT, JSON
Spring MVC: No libraries, use DWR & Spring MVC Extras
Tapestry: Dojo built-in in 4.1
Wicket: Dojo and Script.aculo.us (Wicket Stuff)
![Page 19: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/19.jpg)
© 2007 Raible Designs, Inc.
Bookmarking and URLs
JSF does a POST for everything - URLs not even considered
Stripes uses conventions, but you can override
Struts 2 has namespaces - makes it easy
Spring MVC allows full URL control
Tapestry still has somewhat ugly URLs
Wicket allows pages/URLs to be mounted
![Page 20: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/20.jpg)
© 2007 Raible Designs, Inc.
ValidationJSF has ugly default messages, but easiest to configure
Spring MVC allows you to use Commons Validator - a mature solution
Struts 2 uses OGNL for powerful expressions - client-side only works when specifying rules on Actions
Tapestry has very robust validation - good messages without need to customize
Stripes and Wicket do validation in Java - no client-side
![Page 21: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/21.jpg)
© 2007 Raible Designs, Inc.
TestabilitySpring and Struts 2 allow easy testing with mocks (e.g. EasyMock, jMock, Spring Mocks)
Tapestry appears difficult to test because page classes are abstract, Creator class simplifies
JSF page classes can be easily tested and actually look a lot like Struts 2 actions
Wicket has WicketTester, a powerful solution
Stripes has Servlet API Mocks and MockRoundtrip
![Page 22: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/22.jpg)
© 2007 Raible Designs, Inc.
Post and RedirectThe duplicate-post problem: redirect after POST
Is there support for allowing success messages to live through a redirect?
Spring MVC allows you to add parameters to a redirect
Stripes, Tapestry and Wicket all have "flash" support
Struts 2 requires a custom solution
JSF requires a custom solution, i18n messages difficult to get in page beans
![Page 23: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/23.jpg)
© 2007 Raible Designs, Inc.
InternationalizationJSTL’s <fmt:message> tag makes it easy
No standard for getting i18n messages in controller classes
Stripes, Spring MVC and JSF use a single ResourceBundle per locale
Struts 2, Tapestry and Wicket advocate separate files for each page/action
JSF requires resource bundle to be declared on each page
Tapestry's <span key="key.name"> is awesome
![Page 24: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/24.jpg)
© 2007 Raible Designs, Inc.
Page DecorationTiles Experience: used since it first came out
SiteMesh is much easier to setup and use
Tiles can be used in Struts 2, Spring and JSF
Requires configuration for each page
SiteMesh can be used with all frameworks
Requires very little maintenance after setup
SiteMesh not supported or recommended for use with JSF, Tapestry or Wicket
![Page 25: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/25.jpg)
© 2007 Raible Designs, Inc.
Marketability of SkillsStruts 1 is still in high-demand and widely-used
Spring is getting more press, but mostly due to the framework’s other features
JSF is becoming popular; awful with JSP
Struts 2 is gaining ground, but very scarce on job boards
Tapestry has increased in popularity in last couple years
Wicket and Stripes are virtually unknown
![Page 26: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/26.jpg)
© 2007 Raible Designs, Inc.
Pretty Graphs
![Page 27: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/27.jpg)
© 2007 Raible Designs, Inc.
0
200
400
600
800
November 14, 2007
6915
748
20
9877
Struts 2Spring MVCStripesJSFWicketTapestry
Dice.com Job Count
![Page 28: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/28.jpg)
© 2007 Raible Designs, Inc.
0
750
1,500
2,250
3,000
November 14, 2007
2,249
6915
748
209877
Struts 2Spring MVCStripesJSFWicketTapestryStruts 1
Dice Job with Struts 1.x
![Page 29: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/29.jpg)
© 2007 Raible Designs, Inc.
Job Trends
![Page 30: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/30.jpg)
© 2007 Raible Designs, Inc.
Job Trends vs. Struts
![Page 31: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/31.jpg)
© 2007 Raible Designs, Inc.
Job Trends vs. J2EE
![Page 32: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/32.jpg)
© 2007 Raible Designs, Inc.
Job Trends vs. Java
![Page 33: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/33.jpg)
© 2007 Raible Designs, Inc.
0
120
240
360
480
600
49
592
1211
8475
Struts 2Spring MVCStripesWicketJSFTapestry
Employer Search on Monster.comResumes posted in last 2 weeks
![Page 34: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/34.jpg)
© 2007 Raible Designs, Inc.
Struts
Stripes
MyFaces
Tapestry
Wicket
0 500 1,000 1,500 2,000
* Spring MVC is not listed here because they have a forum instead of a mailing list and I couldn’t figure out a way to count the number of messages for each month.
Mailing List Traffic
![Page 35: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/35.jpg)
© 2007 Raible Designs, Inc.
0
2.5
5.0
7.5
10.0
222
1
6
4
Struts 2Spring MVCStripesMyFacesWicketTapestry
Releases in 2007
![Page 36: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/36.jpg)
© 2007 Raible Designs, Inc.
0
3.75
7.50
11.25
15.00
May 2007
7
12
334
Struts 2Spring MVCStripesWicketJSFTapestry
Tools Available
![Page 37: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/37.jpg)
© 2007 Raible Designs, Inc.
0
2.5
5.0
7.5
10.0
October 2007
3
2
10
7
4
Struts 2Spring MVCStripesJSFWicketTapestry
Books on Amazon
![Page 38: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/38.jpg)
© 2007 Raible Designs, Inc.
How do you choose?
![Page 39: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/39.jpg)
© 2007 Raible Designs, Inc.
Eliminate, Don’t Include
![Page 40: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/40.jpg)
© 2007 Raible Designs, Inc.
![Page 41: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/41.jpg)
© 2007 Raible Designs, Inc.
6 Important Factors
What type of Application are you building?
Ease of Development / Is full-stack an option?
Project Community
Project Future and Roadmap
Maintenance
Technical Features
![Page 42: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/42.jpg)
© 2007 Raible Designs, Inc.
Don’t believe the HypeDon’t believe blogs and articles
Try it yourself
Believe developers, not evangelists
Believe developers that are experienced with the framework and have used it in production
Beware of corporate interests - they can twist marketing
Books are a good sign
![Page 43: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/43.jpg)
© 2007 Raible Designs, Inc.
Best Tool for the Job
Frameworks have sweet spots - is your application one of them?
Pick 2-3 frameworks for your type of application...
... and prototype!
If prototyping is painful, switch
Make sure you prototype more than one and do a presentation comparing the pros and cons of each
![Page 44: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/44.jpg)
© 2007 Raible Designs, Inc.
After Choosing...
Document the reasons for your decision
Allow developers to challenge it
Allow your prototype to be written with other frameworks
Don’t be afraid to try new frameworks
Don’t be afraid to use old frameworks
Don’t be afraid to keep your existing framework
![Page 45: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/45.jpg)
© 2007 Raible Designs, Inc.
What do I think?
![Page 46: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/46.jpg)
© 2007 Raible Designs, Inc.
![Page 47: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/47.jpg)
© 2007 Raible Designs, Inc.
The future is bright because of all the competition
Developers should know more than one web framework
You should try a framework before dissing it
The plethora of web frameworks is a good thing!
Doing proper research can save time and money
Testing is the best path to future maintenance
Conclusion
![Page 48: Comparing Java Web Frameworks](https://reader034.vdocuments.us/reader034/viewer/2022042714/552ef015550346231a8b4ada/html5/thumbnails/48.jpg)
© 2007 Raible Designs, Inc.
[email protected]://raibledesigns.com
Download presentation from:http://raibledesigns.com/rd/page/publications