Comparing JVM Web Frameworks - Jfokus 2012

Matt Raible
Matt RaibleWeb Developer, Java Champion, and Developer Advocate at Okta
COMPARING JVM WEB
 FRAMEWORKS

 Matt Raible
 http://raibledesigns.com




                                Photos by Trish -
Photos by Trish McGinity - http://mcginityphoto.com   http://mcginityphoto.com
Introductions
‣   Your experience with
    web development?
‣   Your experience with
    Java EE development?
‣   What do you want to get
    from this session?
‣   Experience with Grails,
    GWT, Rails, Spring MVC,
    Wicket, Tapestry or
    Play?
                       © 2012 Raible Designs   2
Who is Matt Raible?
                                              Father, Skier, Cyclist




                     Web Framework Connoisseur
Founder of AppFuse




  Blogger on raibledesigns.com
                      © 2012 Raible Designs
Session Agenda

‣   The Problem with Web Frameworks
‣   The Candidates
‣   Comparison Points
‣   The Matrix
‣   Conclusion
‣   Q and A



                        © 2012 Raible Designs   4
The Problem




              © 2012 Raible Designs   5
The Real Problem




           © 2012 Raible Designs   6
The Real Problem




           © 2012 Raible Designs   7
The Real Problem




           © 2012 Raible Designs   8
How do you choose?




           © 2012 Raible Designs   9
Eliminate, Don’t Include
         © 2012 Raible Designs   10
© 2012 Raible Designs
© 2012 Raible Designs
Craig McClanahan on Rails
... 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
                             http://markmail.org/thread/qfb5sekad33eobh2

                         © 2012 Raible Designs                             13
James Gosling on JSF




    http://www.youtube.com/watch?v=9ei-rbULWoA#t=47m

                       © 2012 Raible Designs           14
2010: Comparison Points

‣   Developer Productivity
‣   Developer Perception
‣   Learning Curve
‣   Project Health
‣   Developer Availability
‣   Job Trends


                         © 2012 Raible Designs   15
2010: Comparison Points

‣   Templating
‣   Components
‣   Ajax
‣   Plugins or Add-Ons
‣   Scalability
‣   Testing Support


                         © 2012 Raible Designs   16
2010: Comparison Points

‣   i18n and l10n
‣   Validation
‣   Multi-language Support (Groovy / Scala)
‣   Quality of Documentation/Tutorials
‣   Books Published
‣   REST Support (client and server)



                        © 2012 Raible Designs   17
2010: Comparison Points

‣   Mobile / iPhone Support
‣   Degree of Risk




                       © 2012 Raible Designs   18
Comparison Matrix




    http://bit.ly/jvm-frameworks-matrix

                  © 2012 Raible Designs   19
Matrix Results

   18
         17.5 17 17 17
                                   15.5 15 15
  13.5                                        14.5 14 14
                                                         13.513.5
                                                                 11.5
    9


   4.5


    0
         ails

                g
                        ils

                               T
                                    din

                                                t

                                                         ry

                                                                   2

                                                                          s
                                                                                y

                                                                                      x

                                                                                           F
                                                                                                Lift
                                                e




                                                                               Pla
                                                                         ipe



                                                                                     Fle

                                                                                           JS
                rin


                              GW




                                                      est
                                             ck



                                                                  uts
                      Ra



                                      a
         Gr

              Sp




                                                                        Str
                                   Va

                                          Wi
                                                   Tap

                                                            Str




                                          © 2012 Raible Designs                                        20
Matrix Results

‣   Grails (17.5)
‣   GWT (17)
‣   Ruby on Rails (17)
‣   Spring MVC (17)
‣   Vaadin (15.5)
‣   Tapestry and Wicket (15)



                         © 2012 Raible Designs   21
Weighted Matrix




           © 2012 Raible Designs   22
Weighted Results

‣   Grails (90)
‣   Spring MVC (85)
‣   Ruby on Rails (82.5)
‣   Vaadin (82.5)
‣   Play (82.5)
‣   GWT (80)


                           © 2012 Raible Designs   23
Fighting for 5th

‣   Top at Devoxx 2010		
    - GWT	 	
    - Rails	 	
    - Spring MVC	 	
    - Grails	 	
    - Wicket / Struts 2



                          © 2012 Raible Designs   24
Fighting for 5th

‣   Top at Rich Web Experience 2010
    - Grails
    - GWT
    - Rails
    - Spring MVC
    - Tapestry / Vaadin



                          © 2012 Raible Designs   25
Fighting for 5th

‣   Top at TheServerSide Java Symposium 2010
    - Grails
    - GWT
    - Rails
    - Spring MVC
    - Vaadin



                    © 2012 Raible Designs      26
Ratings Logic

‣   Developer Productivity
‣   Developer Perception
‣   Learning Curve
‣   Project Health
‣   Developer Availability
‣   Job Trends



                         © 2012 Raible Designs   27
Ratings Logic

‣   Templating
‣   Components
‣   Ajax
‣   Plugins or Add-Ons
‣   Scalability
‣   Testing Support



                         © 2012 Raible Designs   28
Ratings Logic

‣   i18n and l10n
‣   Validation
‣   Multi-language Support (Groovy / Scala)
‣   Quality of Documentation/Tutorials
‣   Books Published
‣   REST Support (client and server)



                        © 2012 Raible Designs   29
Ratings Logic

‣   Mobile / iPhone Support
‣   Degree of Risk

    http://raibledesigns.com/rd/entry/
    how_i_calculated_ratings_for




                                © 2012 Raible Designs   30
David Pollack’s Lift Ratings

‣   Developer Productivity: Lift gets a 11, Rails gets a
    5, most Java-based frameworks get a 1 or less.
‣   Developer Perception: Every web framework gets
    a 1. 
‣   Learning Curve: Lift gets a 2.
‣   Job Trends, yep, it's zero.
      * Matt's scale is 0-1 and my ratings are on Matt's
                scale, except mine goes to 11.
       http://lift.la/my-take-on-matt-raibles-spreadsheet
                          © 2012 Raible Designs             31
Peter Thomas’s Perfbench

‣   Seam / JSF vs. Wicket Performance Comparison
    - January 2009: Seam 2.1.1 and Wicket 1.3.5
    - Average page response time in milliseconds




                        © 2012 Raible Designs      32
Peter Thomas’s Perfbench

‣   On the Seam / JSF side, the 20 sessions each
    take up about 800 KB adding up to around 16
    MB total. On the Wicket side the 20 sessions
    add up to around 1.5 MB.




‣   + Lots of banter between Peter and Seam
    developers @ http://bit.ly/3X50Gc


                      © 2012 Raible Designs        33
Peter Thomas’s Perfbench

‣   Peter’s Observations:
    - Grails was far more productive than Tapestry 5.
    - Grails still has some ways to go in terms of
      performance.
    - Overall, Wicket is fastest, with Tapestry coming a
      close second.
    - Wicket takes up the least amount of heap.
    - Session usage of the Seam + JSF combination is
      significantly higher compared to the rest.

                           © 2012 Raible Designs           34
World Wide Wait - Devoxx




      http://www.parleys.com/d/2942
                 © 2012 Raible Designs   35
World Wide Wait - Devoxx




           © 2012 Raible Designs   36
World Wide Wait - Devoxx




           © 2012 Raible Designs   37
World Wide Wait - Devoxx




           © 2012 Raible Designs   38
World Wide Wait - Devoxx




           © 2012 Raible Designs   39
World Wide Wait - Devoxx




       HybridJava beats JSF, Wicket
      and Spring MVC by perfomance.




               © 2012 Raible Designs   40
HybridJava - Really?




            © 2012 Raible Designs   41
Pros and Cons




           © 2012 Raible Designs   42
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
                            © 2012 Raible Designs            43
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
                           © 2012 Raible Designs           44
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
                           © 2012 Raible Designs        45
Spring MVC
‣   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!)
                            © 2012 Raible Designs              46
Vaadin
‣   Pros
    - Uses GWT API for developing view
    - Vibrant Community and company backing
    - Excellent Themes and Layouts support
‣   Cons
    - Large memory footprint, state stored in session
    - Sketchy (?) because backed by a commercial
      organization
    - Joonas keeps telling me my cons are wrong
                          © 2012 Raible Designs         47
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
                            © 2012 Raible Designs        48
Tapestry
‣   Pros
    - Live Class Reloading
    - Development emphasis on performance and
      scalability
    - Excellent Exception Reporting
‣   Cons
    - No Jobs
    - Prototype baked in for JS Library
    - Annotations vs. Conventions
                          © 2012 Raible Designs   49
Pretty Graphs




            © 2012 Raible Designs   50
LOC in AppFuse Light
        JSF    Spring   Stripes            Struts 2    Tapestry 5   Wicket

 5000


 3750


 2500


 1250


    0
  JavaScript            XML                           CSS               Java


                            © 2012 Raible Designs                              51
Jobs on Dice (World)

     700


     525


     350


     175


       0
            g
                 ils

                        T

                               s

                                         et

                                                try
                                                       din

                                                             F
                             ail




                                                             JS
           rin



                       GW



                                      ick
                 Ra




                                                es

                                                        a
                            Gr
           Sp




                                                     Va
                                    W

                                               p
                                            Ta




                        © 2012 Raible Designs                     52
LinkedIn Skills (World)

     40,000


     30,000


     20,000


     10,000


         0
                ils

                        g

                               T
                                       ails

                                                      ry

                                                            t
                                                                   din

                                                                         F
                                                              e


                                                                         JS
                        rin
                              GW




                                                 est

                                                           ck
              Ra




                                                                     a
                                     Gr
                      Sp




                                                                  Va
                                                       Wi
                                              Tap




                              © 2012 Raible Designs                           53
Pretty Graphs




            © 2012 Raible Designs   54
Pretty Graphs




            © 2012 Raible Designs   55
Pretty Graphs




            © 2012 Raible Designs   56
Pretty Graphs




            © 2012 Raible Designs   57
Pretty Graphs




            © 2012 Raible Designs   58
Pretty Graphs




            © 2012 Raible Designs   59
Pretty Graphs




            © 2012 Raible Designs   60
Pretty Graphs




            © 2012 Raible Designs   61
Pretty Graphs




            © 2012 Raible Designs   62
Mailing List Traffic

             Wicket                                                               1841

               GWT                                                               1753

              Grails                                                       1635

               Rails                                                       1604

           Tapestry                                                      1538

                Play                                                    1451

                       0               475                   950          1425          1900



* Spring MVC and Vaadin use Forums, which don’t provide this data.
                                                © 2012 Raible Designs                          63
Books on Amazon

       Rails

 Spring MVC

       GWT

      Grails

     Wicket

  Tapestry 5

     Vaadin

               0   75                     150   225   300




                        © 2012 Raible Designs               64
2011 Releases
                        As of August 24, 2011


                0   4                  8           12   16
      Grails

       GWT
       Rails
  Spring MVC
      Vaadin
     Tapestry
       Wicket




                           © 2012 Raible Designs             65
StackOverflow
             Tagged Questions (August 24, 2011)


                                                            50,000


                                                           37,500


                                                           25,000


                                                       12,500

    Grails                                             0
                    Rails
                                              Vaadin


                      © 2012 Raible Designs                          66
StackOverflow
             Tagged Questions (August 24, 2011)


                                                            10,000


                                                           7,500


                                                           5,000


                                                       2,500

    Spring                                             0
             JSF
                    GWT
                                    Grails
                                              Wicket


                      © 2012 Raible Designs                          67
StackOverflow
             Tagged Questions (August 24, 2011)


                                                           200000


                                                          150000


                                                          100000


                                                      50000

    Java                                              0
           Scala
                   Groovy
                                 Clojure
                                              JRuby


                      © 2012 Raible Designs                         68
StackOverflow
            Tagged Questions (August 24, 2011)


                                                          6000


                                                         4500


                                                         3000


                                                     1500


    Scala                                            0
            Groovy
                        Clojure
                                             JRuby


                     © 2012 Raible Designs                       69
Framework Popularity




Source: ZeroTurnaround's Java EE Productivity Report 2010


                     © 2012 Raible Designs                  70
What we need is...




            © 2012 Raible Designs   71
Innovators




             © 2012 Raible Designs   72
Modern Principles




            © 2012 Raible Designs   73
Web Developers




           © 2012 Raible Designs   74
Java Developers

 “Java remains – in spite of the fragmented
 programming language landscape – a
 viable, growing language.”




  http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/

                            © 2012 Raible Designs                   75
The Modern Web Developer

‣   ... embraces JavaScript
‣   ... is learning mobile frameworks
    - jQuery Mobile, Sencha Touch, PhoneGap or Native
‣   ... is using HTML5 and CSS3
‣   ... is developing REST APIs with the stateless
    framework that best supports their language
‣   IE6 is dead, IE7 isn’t far behind...

                         © 2012 Raible Designs          76
You have to decide...

       Are you a web developer?




               © 2012 Raible Designs   77
You have to decide...

     Or are you a services developer?




                 © 2012 Raible Designs   78
Client-Side MVC




           © 2012 Raible Designs   79
Developer Productivity




                http://zeroturnaround.com/blog/
    developer-productivity-report-part-1-developer-timesheet/


                          © 2012 Raible Designs                 80
Developer Productivity




                http://zeroturnaround.com/blog/
    developer-productivity-report-part-3-developer-efficiency/


                          © 2012 Raible Designs                 81
There is no “best” framework




      Just lots of awesome choices...
                 © 2012 Raible Designs   82
Don’t listen to me!




             © 2012 Raible Designs   83
Choose your own!

‣   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!
‣   ... Or just pick one and get to work...

                          © 2012 Raible Designs           84
But don’t forget...




              © 2012 Raible Designs   85
Questions?

‣   Contact
    - http://raibledesigns.com
    - @mraible
‣   Download
    - http://slideshare.net/mraible




                           © 2012 Raible Designs   86
1 of 86

More Related Content

Viewers also liked(17)

 textile printing textile printing
textile printing
sulaiman khan85.8K views
Classification of MarketClassification of Market
Classification of Market
Nijo Ninan98.3K views
Surviving Google: SEO in 2020Surviving Google: SEO in 2020
Surviving Google: SEO in 2020
Peter "Dr. Pete" Meyers118K views
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
Kapost979.7K views
Collection and Conveyance of WaterCollection and Conveyance of Water
Collection and Conveyance of Water
GAURAV. H .TANDON46.7K views
Vietnam E-commerce Report 2016 Vietnam E-commerce Report 2016
Vietnam E-commerce Report 2016
Canada-Vietnam Entrepreneurs 51.9K views
Anatomy of maxilla and mandibleAnatomy of maxilla and mandible
Anatomy of maxilla and mandible
Fardan Qadeer89.8K views
Fmcg training modules-bfgFmcg training modules-bfg
Fmcg training modules-bfg
Romy Cagampan48K views
Tmj anatomyTmj anatomy
Tmj anatomy
Tony Pious108.9K views
Cardiac cycle ppt (2)Cardiac cycle ppt (2)
Cardiac cycle ppt (2)
Gopi Krishna Rayidi79.8K views
Engaging Learners with TechnologyEngaging Learners with Technology
Engaging Learners with Technology
Dean Shareski24.2K views
OTN for BeginnersOTN for Beginners
OTN for Beginners
MapYourTech110.3K views
Thai tech startup ecosystem report 2017Thai tech startup ecosystem report 2017
Thai tech startup ecosystem report 2017
Techsauce Media67.1K views

More from Matt Raible(20)

Recently uploaded(20)

Comparing JVM Web Frameworks - Jfokus 2012

  • 1. COMPARING JVM WEB FRAMEWORKS Matt Raible http://raibledesigns.com Photos by Trish - Photos by Trish McGinity - http://mcginityphoto.com http://mcginityphoto.com
  • 2. Introductions ‣ Your experience with web development? ‣ Your experience with Java EE development? ‣ What do you want to get from this session? ‣ Experience with Grails, GWT, Rails, Spring MVC, Wicket, Tapestry or Play? © 2012 Raible Designs 2
  • 3. Who is Matt Raible? Father, Skier, Cyclist Web Framework Connoisseur Founder of AppFuse Blogger on raibledesigns.com © 2012 Raible Designs
  • 4. Session Agenda ‣ The Problem with Web Frameworks ‣ The Candidates ‣ Comparison Points ‣ The Matrix ‣ Conclusion ‣ Q and A © 2012 Raible Designs 4
  • 5. The Problem © 2012 Raible Designs 5
  • 6. The Real Problem © 2012 Raible Designs 6
  • 7. The Real Problem © 2012 Raible Designs 7
  • 8. The Real Problem © 2012 Raible Designs 8
  • 9. How do you choose? © 2012 Raible Designs 9
  • 10. Eliminate, Don’t Include © 2012 Raible Designs 10
  • 11. © 2012 Raible Designs
  • 12. © 2012 Raible Designs
  • 13. Craig McClanahan on Rails ... 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 http://markmail.org/thread/qfb5sekad33eobh2 © 2012 Raible Designs 13
  • 14. James Gosling on JSF http://www.youtube.com/watch?v=9ei-rbULWoA#t=47m © 2012 Raible Designs 14
  • 15. 2010: Comparison Points ‣ Developer Productivity ‣ Developer Perception ‣ Learning Curve ‣ Project Health ‣ Developer Availability ‣ Job Trends © 2012 Raible Designs 15
  • 16. 2010: Comparison Points ‣ Templating ‣ Components ‣ Ajax ‣ Plugins or Add-Ons ‣ Scalability ‣ Testing Support © 2012 Raible Designs 16
  • 17. 2010: Comparison Points ‣ i18n and l10n ‣ Validation ‣ Multi-language Support (Groovy / Scala) ‣ Quality of Documentation/Tutorials ‣ Books Published ‣ REST Support (client and server) © 2012 Raible Designs 17
  • 18. 2010: Comparison Points ‣ Mobile / iPhone Support ‣ Degree of Risk © 2012 Raible Designs 18
  • 19. Comparison Matrix http://bit.ly/jvm-frameworks-matrix © 2012 Raible Designs 19
  • 20. Matrix Results 18 17.5 17 17 17 15.5 15 15 13.5 14.5 14 14 13.513.5 11.5 9 4.5 0 ails g ils T din t ry 2 s y x F Lift e Pla ipe Fle JS rin GW est ck uts Ra a Gr Sp Str Va Wi Tap Str © 2012 Raible Designs 20
  • 21. Matrix Results ‣ Grails (17.5) ‣ GWT (17) ‣ Ruby on Rails (17) ‣ Spring MVC (17) ‣ Vaadin (15.5) ‣ Tapestry and Wicket (15) © 2012 Raible Designs 21
  • 22. Weighted Matrix © 2012 Raible Designs 22
  • 23. Weighted Results ‣ Grails (90) ‣ Spring MVC (85) ‣ Ruby on Rails (82.5) ‣ Vaadin (82.5) ‣ Play (82.5) ‣ GWT (80) © 2012 Raible Designs 23
  • 24. Fighting for 5th ‣ Top at Devoxx 2010 - GWT - Rails - Spring MVC - Grails - Wicket / Struts 2 © 2012 Raible Designs 24
  • 25. Fighting for 5th ‣ Top at Rich Web Experience 2010 - Grails - GWT - Rails - Spring MVC - Tapestry / Vaadin © 2012 Raible Designs 25
  • 26. Fighting for 5th ‣ Top at TheServerSide Java Symposium 2010 - Grails - GWT - Rails - Spring MVC - Vaadin © 2012 Raible Designs 26
  • 27. Ratings Logic ‣ Developer Productivity ‣ Developer Perception ‣ Learning Curve ‣ Project Health ‣ Developer Availability ‣ Job Trends © 2012 Raible Designs 27
  • 28. Ratings Logic ‣ Templating ‣ Components ‣ Ajax ‣ Plugins or Add-Ons ‣ Scalability ‣ Testing Support © 2012 Raible Designs 28
  • 29. Ratings Logic ‣ i18n and l10n ‣ Validation ‣ Multi-language Support (Groovy / Scala) ‣ Quality of Documentation/Tutorials ‣ Books Published ‣ REST Support (client and server) © 2012 Raible Designs 29
  • 30. Ratings Logic ‣ Mobile / iPhone Support ‣ Degree of Risk http://raibledesigns.com/rd/entry/ how_i_calculated_ratings_for © 2012 Raible Designs 30
  • 31. David Pollack’s Lift Ratings ‣ Developer Productivity: Lift gets a 11, Rails gets a 5, most Java-based frameworks get a 1 or less. ‣ Developer Perception: Every web framework gets a 1.  ‣ Learning Curve: Lift gets a 2. ‣ Job Trends, yep, it's zero. * Matt's scale is 0-1 and my ratings are on Matt's scale, except mine goes to 11. http://lift.la/my-take-on-matt-raibles-spreadsheet © 2012 Raible Designs 31
  • 32. Peter Thomas’s Perfbench ‣ Seam / JSF vs. Wicket Performance Comparison - January 2009: Seam 2.1.1 and Wicket 1.3.5 - Average page response time in milliseconds © 2012 Raible Designs 32
  • 33. Peter Thomas’s Perfbench ‣ On the Seam / JSF side, the 20 sessions each take up about 800 KB adding up to around 16 MB total. On the Wicket side the 20 sessions add up to around 1.5 MB. ‣ + Lots of banter between Peter and Seam developers @ http://bit.ly/3X50Gc © 2012 Raible Designs 33
  • 34. Peter Thomas’s Perfbench ‣ Peter’s Observations: - Grails was far more productive than Tapestry 5. - Grails still has some ways to go in terms of performance. - Overall, Wicket is fastest, with Tapestry coming a close second. - Wicket takes up the least amount of heap. - Session usage of the Seam + JSF combination is significantly higher compared to the rest. © 2012 Raible Designs 34
  • 35. World Wide Wait - Devoxx http://www.parleys.com/d/2942 © 2012 Raible Designs 35
  • 36. World Wide Wait - Devoxx © 2012 Raible Designs 36
  • 37. World Wide Wait - Devoxx © 2012 Raible Designs 37
  • 38. World Wide Wait - Devoxx © 2012 Raible Designs 38
  • 39. World Wide Wait - Devoxx © 2012 Raible Designs 39
  • 40. World Wide Wait - Devoxx HybridJava beats JSF, Wicket and Spring MVC by perfomance. © 2012 Raible Designs 40
  • 41. HybridJava - Really? © 2012 Raible Designs 41
  • 42. Pros and Cons © 2012 Raible Designs 42
  • 43. 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 © 2012 Raible Designs 43
  • 44. 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 © 2012 Raible Designs 44
  • 45. 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 © 2012 Raible Designs 45
  • 46. Spring MVC ‣ 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!) © 2012 Raible Designs 46
  • 47. Vaadin ‣ Pros - Uses GWT API for developing view - Vibrant Community and company backing - Excellent Themes and Layouts support ‣ Cons - Large memory footprint, state stored in session - Sketchy (?) because backed by a commercial organization - Joonas keeps telling me my cons are wrong © 2012 Raible Designs 47
  • 48. 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 © 2012 Raible Designs 48
  • 49. Tapestry ‣ Pros - Live Class Reloading - Development emphasis on performance and scalability - Excellent Exception Reporting ‣ Cons - No Jobs - Prototype baked in for JS Library - Annotations vs. Conventions © 2012 Raible Designs 49
  • 50. Pretty Graphs © 2012 Raible Designs 50
  • 51. LOC in AppFuse Light JSF Spring Stripes Struts 2 Tapestry 5 Wicket 5000 3750 2500 1250 0 JavaScript XML CSS Java © 2012 Raible Designs 51
  • 52. Jobs on Dice (World) 700 525 350 175 0 g ils T s et try din F ail JS rin GW ick Ra es a Gr Sp Va W p Ta © 2012 Raible Designs 52
  • 53. LinkedIn Skills (World) 40,000 30,000 20,000 10,000 0 ils g T ails ry t din F e JS rin GW est ck Ra a Gr Sp Va Wi Tap © 2012 Raible Designs 53
  • 54. Pretty Graphs © 2012 Raible Designs 54
  • 55. Pretty Graphs © 2012 Raible Designs 55
  • 56. Pretty Graphs © 2012 Raible Designs 56
  • 57. Pretty Graphs © 2012 Raible Designs 57
  • 58. Pretty Graphs © 2012 Raible Designs 58
  • 59. Pretty Graphs © 2012 Raible Designs 59
  • 60. Pretty Graphs © 2012 Raible Designs 60
  • 61. Pretty Graphs © 2012 Raible Designs 61
  • 62. Pretty Graphs © 2012 Raible Designs 62
  • 63. Mailing List Traffic Wicket 1841 GWT 1753 Grails 1635 Rails 1604 Tapestry 1538 Play 1451 0 475 950 1425 1900 * Spring MVC and Vaadin use Forums, which don’t provide this data. © 2012 Raible Designs 63
  • 64. Books on Amazon Rails Spring MVC GWT Grails Wicket Tapestry 5 Vaadin 0 75 150 225 300 © 2012 Raible Designs 64
  • 65. 2011 Releases As of August 24, 2011 0 4 8 12 16 Grails GWT Rails Spring MVC Vaadin Tapestry Wicket © 2012 Raible Designs 65
  • 66. StackOverflow Tagged Questions (August 24, 2011) 50,000 37,500 25,000 12,500 Grails 0 Rails Vaadin © 2012 Raible Designs 66
  • 67. StackOverflow Tagged Questions (August 24, 2011) 10,000 7,500 5,000 2,500 Spring 0 JSF GWT Grails Wicket © 2012 Raible Designs 67
  • 68. StackOverflow Tagged Questions (August 24, 2011) 200000 150000 100000 50000 Java 0 Scala Groovy Clojure JRuby © 2012 Raible Designs 68
  • 69. StackOverflow Tagged Questions (August 24, 2011) 6000 4500 3000 1500 Scala 0 Groovy Clojure JRuby © 2012 Raible Designs 69
  • 70. Framework Popularity Source: ZeroTurnaround's Java EE Productivity Report 2010 © 2012 Raible Designs 70
  • 71. What we need is... © 2012 Raible Designs 71
  • 72. Innovators © 2012 Raible Designs 72
  • 73. Modern Principles © 2012 Raible Designs 73
  • 74. Web Developers © 2012 Raible Designs 74
  • 75. Java Developers “Java remains – in spite of the fragmented programming language landscape – a viable, growing language.” http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/ © 2012 Raible Designs 75
  • 76. The Modern Web Developer ‣ ... embraces JavaScript ‣ ... is learning mobile frameworks - jQuery Mobile, Sencha Touch, PhoneGap or Native ‣ ... is using HTML5 and CSS3 ‣ ... is developing REST APIs with the stateless framework that best supports their language ‣ IE6 is dead, IE7 isn’t far behind... © 2012 Raible Designs 76
  • 77. You have to decide... Are you a web developer? © 2012 Raible Designs 77
  • 78. You have to decide... Or are you a services developer? © 2012 Raible Designs 78
  • 79. Client-Side MVC © 2012 Raible Designs 79
  • 80. Developer Productivity http://zeroturnaround.com/blog/ developer-productivity-report-part-1-developer-timesheet/ © 2012 Raible Designs 80
  • 81. Developer Productivity http://zeroturnaround.com/blog/ developer-productivity-report-part-3-developer-efficiency/ © 2012 Raible Designs 81
  • 82. There is no “best” framework Just lots of awesome choices... © 2012 Raible Designs 82
  • 83. Don’t listen to me! © 2012 Raible Designs 83
  • 84. Choose your own! ‣ 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! ‣ ... Or just pick one and get to work... © 2012 Raible Designs 84
  • 85. But don’t forget... © 2012 Raible Designs 85
  • 86. Questions? ‣ Contact - http://raibledesigns.com - @mraible ‣ Download - http://slideshare.net/mraible © 2012 Raible Designs 86