Comparing JVM Web Frameworks

download Comparing JVM Web Frameworks

of 56

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/