... while Id *love* to see life made simpler for Java webdevelopers, and a lot of the things happening in Struts2 aregoing that way -- it wont be me doing it.Ive gone over to the dark side :-) and much prefer to develop inRails -- for the conciseness mentioned above, but also because Idont 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 avoideven more "previously Java web developer" defectors like me :-). -- Craig McClanahan, 10/23/2007 h%p://markmail.org/thread/q65sekad33eobh2 10
Choosing a FrameworkChoose a short list of frameworks to prototype with.Create an application prototype with eachframework.Document ﬁndings and create a matrix withimportant criteria.Create presentation to summarize document.Deliver document, presentation andrecommendation. 11
2007: 6 Important FactorsRequest, Component or RIA FrameworkEase of DevelopmentProject CommunityProject Future and RoadmapMaintenanceTechnical Features 12
Request, Component or RIAAre you developing...– ... a consumer facing site?– ... a desktop-like, application?– ... a media-rich site?If the framework is built for state-fulness, shouldyou use it in a stateless architecture? 13
Types of ApplicationsHigh-trafﬁc, internet facing, inﬁnite scalabilityIntranet-based, behind the ﬁrewall, few usersProducts, to be maintained for 5-10 yearsLegacy BackendOthers? 14
Types of FrameworksRequest Based Frameworks– Struts 2, Spring MVC, Rails, StripesComponent Based Frameworks– JSF, Tapestry, GWTRich Internet Applications– FlexOne Size Fits All– Grails 15
Do they matchup?High-trafﬁc, internet facing, inﬁnite scalability– Request-based frameworksIntranet-based, behind the ﬁrewall, few users– Component-based frameworksProducts, to be maintained for 5-10 years– Largest Community, Most Vendor SupportLegacy Backend– Same Language as backend 16
Spring MVCPros– Easy Conﬁguration with Annotations and Conventions– Integrates with many view options seamlessly: JSP/ JSTL, Tiles, FreeMarker, Excel, PDF, JSON– Excellent REST SupportCons– 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!) 25
Ruby on RailsPros Easy to learn and understand for Web Developers Lots and lots of documentation Passionate CommunityCons Slightly less performant by default Dynamic language means more tests Development Tools and Debugging 27
GrailsPros Easy dynamic language transition for Java Developers Groovy Plugins for all types of applicationsCons Groovy learning targets Java Developers Stack traces are horrendous Knowledge of underlying frameworks not required, but helpful 28
WicketPros Great for Java Developers Tight binding between pages and views Active community - support from creatorsCons No Jobs or Developers Stateful by default HTML Templates live next to Java code by default 29
Rails vs. Grailshttp://grails.org/Grails+vs+Rails+Benchmark– Grails: 40 requests per second, Rails: 32 30
Language Performance Time (ms) per iteration600400200 0 Java C++ JRuby PythonGroovy PHPh%p://blog.dhananjaynene.com/2008/07/performance-‐comparison-‐c-‐java-‐python-‐ruby-‐jython-‐jruby-‐groovy/ 31
Jobs in 2010 (US)Spring MVC GWT Rails Grails Wicket 600 450 300 150 0 Dice 32
Spring MVChttp://www.springsource.orgApache 2.0 LicenseActive Community @ http://forum.springsource.org/forumdisplay.php?f=25Recommended Books:– Expert Spring MVC– Spring in Action– Pro Spring 49
Google Web Toolkithttp://code.google.com/webtoolkitApache 2.0 LicenseActive Community @ http://groups.google.com/group/Google-Web-ToolkitRecommended Books:– GWT in Action– GWT in Practice– Google Web Toolkit Solutions 50
Ruby on Railshttp://rubyonrails.orgMIT LicenseActive Community @http://rubyonrails.org/communityRecommended Books:– Agile Web Development with Rails– Rails for Java Developers 51
Grailshttp://grails.orgApache 2.0 LicenseActive Community @http://grails.org/CommunityRecommended Books:– Getting Started with Grails– Grails: A Quick-Start Guide– Programming Groovy 52
Apache Wickethttp://wicket.apache.orgApache 2.0 LicenseActive Community @ http://wicket.apache.org/help/email.htmlRecommended Books:– Wicket in Action– Pro Wicket 53
CONCLUSIONWhat if there is no “best” web framework?
How to Choose?Prioritize a list of features that are important to yourapplication.Pick 3-4 frameworks and do a 1-week spike witheach, developing the same application.Document and rank each framework against yourlist of features.Calculate and choose! 55
Questions?Contact Information http://raibledesigns.com http://twitter.com/mraibleDownload Presentation http://slideshare.net/mraible 56
A particular slide catching your eye?
Clipping is a handy way to collect important slides you want to go back to later.