SlideShare a Scribd company logo
COMPARING JVM WEB
FRAMEWORKS

Matt Raible
http://raibledesigns.com




               Fotos by Trish - 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
             GWT
                     Rails
                               Spring MVC
                                                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
REST Services




           © 2012 Raible Designs   80
Developer Productivity




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


                          © 2012 Raible Designs                 81
Developer Productivity




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


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




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




             © 2012 Raible Designs   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           85
But don’t forget...




              © 2012 Raible Designs   86
Questions?

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




                           © 2012 Raible Designs   87

More Related Content

What's hot

DEFCON-23-Nadeem-Douba-BurpKit
DEFCON-23-Nadeem-Douba-BurpKitDEFCON-23-Nadeem-Douba-BurpKit
DEFCON-23-Nadeem-Douba-BurpKitNadeem Douba
 
I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"kwatch
 
Common Traits of High Performing Websites, WebPerfDays Amsterdam 07-Nov-2018
Common Traits of High Performing Websites, WebPerfDays Amsterdam 07-Nov-2018Common Traits of High Performing Websites, WebPerfDays Amsterdam 07-Nov-2018
Common Traits of High Performing Websites, WebPerfDays Amsterdam 07-Nov-2018
Paul Calvano
 
Secrets of Successful Digital Transformers
Secrets of Successful Digital TransformersSecrets of Successful Digital Transformers
Secrets of Successful Digital Transformers
VMware Tanzu
 
VisionX Prototyping.
VisionX Prototyping.VisionX Prototyping.
VisionX Prototyping.
SIB Visions GmbH
 
Reactive Data Access with Spring Data
Reactive Data Access with Spring DataReactive Data Access with Spring Data
Reactive Data Access with Spring Data
VMware Tanzu
 
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
Gavin Pickin
 
Rails01
Rails01Rails01
BootsFaces, AngularFaces und ein Blck unter die Motorhaube
BootsFaces, AngularFaces und ein Blck unter die MotorhaubeBootsFaces, AngularFaces und ein Blck unter die Motorhaube
BootsFaces, AngularFaces und ein Blck unter die Motorhaube
OPITZ CONSULTING Deutschland
 
Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8
Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8
Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8
Angela Byron
 
Full Stack Reactive with React and Spring WebFlux - PWX 2019
Full Stack Reactive with React and Spring WebFlux - PWX 2019Full Stack Reactive with React and Spring WebFlux - PWX 2019
Full Stack Reactive with React and Spring WebFlux - PWX 2019
Matt Raible
 
Full Stack Reactive with React and Spring WebFlux - Switzerland JUG 2020
Full Stack Reactive with React and Spring WebFlux - Switzerland JUG 2020Full Stack Reactive with React and Spring WebFlux - Switzerland JUG 2020
Full Stack Reactive with React and Spring WebFlux - Switzerland JUG 2020
Matt Raible
 
Html5 with Vaadin and Scala
Html5 with Vaadin and ScalaHtml5 with Vaadin and Scala
Html5 with Vaadin and Scala
Joonas Lehtinen
 
Magic with groovy & grails
Magic with groovy & grailsMagic with groovy & grails
Magic with groovy & grails
George Platon
 
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 updateDrupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Angela Byron
 
OCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 RoadmapOCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 Roadmap
Angela Byron
 
DSAG Tech Days 2018 - DevOps in SAP ABAP Landscapes
DSAG Tech Days 2018 - DevOps in SAP ABAP LandscapesDSAG Tech Days 2018 - DevOps in SAP ABAP Landscapes
DSAG Tech Days 2018 - DevOps in SAP ABAP Landscapes
Sascha Junkert
 
CMSDITA2012_Maass_Quinlan_20120412
CMSDITA2012_Maass_Quinlan_20120412CMSDITA2012_Maass_Quinlan_20120412
CMSDITA2012_Maass_Quinlan_20120412Patrick Quinlan
 
Angular vs. React
Angular vs. ReactAngular vs. React
Angular vs. React
OPITZ CONSULTING Deutschland
 
Let Non-Developers Develop your Site. Manu Raivio
Let Non-Developers Develop your Site. Manu RaivioLet Non-Developers Develop your Site. Manu Raivio
Let Non-Developers Develop your Site. Manu Raivio
Future Insights
 

What's hot (20)

DEFCON-23-Nadeem-Douba-BurpKit
DEFCON-23-Nadeem-Douba-BurpKitDEFCON-23-Nadeem-Douba-BurpKit
DEFCON-23-Nadeem-Douba-BurpKit
 
I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"I have something to say about the buzz word "From Java to Ruby"
I have something to say about the buzz word "From Java to Ruby"
 
Common Traits of High Performing Websites, WebPerfDays Amsterdam 07-Nov-2018
Common Traits of High Performing Websites, WebPerfDays Amsterdam 07-Nov-2018Common Traits of High Performing Websites, WebPerfDays Amsterdam 07-Nov-2018
Common Traits of High Performing Websites, WebPerfDays Amsterdam 07-Nov-2018
 
Secrets of Successful Digital Transformers
Secrets of Successful Digital TransformersSecrets of Successful Digital Transformers
Secrets of Successful Digital Transformers
 
VisionX Prototyping.
VisionX Prototyping.VisionX Prototyping.
VisionX Prototyping.
 
Reactive Data Access with Spring Data
Reactive Data Access with Spring DataReactive Data Access with Spring Data
Reactive Data Access with Spring Data
 
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
ColdBox APIs + VueJS - powering Mobile, Desktop and Web Apps with 1 VueJS cod...
 
Rails01
Rails01Rails01
Rails01
 
BootsFaces, AngularFaces und ein Blck unter die Motorhaube
BootsFaces, AngularFaces und ein Blck unter die MotorhaubeBootsFaces, AngularFaces und ein Blck unter die Motorhaube
BootsFaces, AngularFaces und ein Blck unter die Motorhaube
 
Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8
Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8
Drupal 9 and Backwards Compatibility: Why now is the time to upgrade to Drupal 8
 
Full Stack Reactive with React and Spring WebFlux - PWX 2019
Full Stack Reactive with React and Spring WebFlux - PWX 2019Full Stack Reactive with React and Spring WebFlux - PWX 2019
Full Stack Reactive with React and Spring WebFlux - PWX 2019
 
Full Stack Reactive with React and Spring WebFlux - Switzerland JUG 2020
Full Stack Reactive with React and Spring WebFlux - Switzerland JUG 2020Full Stack Reactive with React and Spring WebFlux - Switzerland JUG 2020
Full Stack Reactive with React and Spring WebFlux - Switzerland JUG 2020
 
Html5 with Vaadin and Scala
Html5 with Vaadin and ScalaHtml5 with Vaadin and Scala
Html5 with Vaadin and Scala
 
Magic with groovy & grails
Magic with groovy & grailsMagic with groovy & grails
Magic with groovy & grails
 
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 updateDrupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
Drupal 8 and 9, Backwards Compatibility, and Drupal 8.5 update
 
OCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 RoadmapOCTO On-Site Off-Site Update on D8 Roadmap
OCTO On-Site Off-Site Update on D8 Roadmap
 
DSAG Tech Days 2018 - DevOps in SAP ABAP Landscapes
DSAG Tech Days 2018 - DevOps in SAP ABAP LandscapesDSAG Tech Days 2018 - DevOps in SAP ABAP Landscapes
DSAG Tech Days 2018 - DevOps in SAP ABAP Landscapes
 
CMSDITA2012_Maass_Quinlan_20120412
CMSDITA2012_Maass_Quinlan_20120412CMSDITA2012_Maass_Quinlan_20120412
CMSDITA2012_Maass_Quinlan_20120412
 
Angular vs. React
Angular vs. ReactAngular vs. React
Angular vs. React
 
Let Non-Developers Develop your Site. Manu Raivio
Let Non-Developers Develop your Site. Manu RaivioLet Non-Developers Develop your Site. Manu Raivio
Let Non-Developers Develop your Site. Manu Raivio
 

Similar to Comparing JVM Web Frameworks - Spring I/O 2012

HTML5 with Play Scala, CoffeeScript and Jade - UberConf 2012
HTML5 with Play Scala, CoffeeScript and Jade - UberConf 2012HTML5 with Play Scala, CoffeeScript and Jade - UberConf 2012
HTML5 with Play Scala, CoffeeScript and Jade - UberConf 2012
Matt Raible
 
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
Matt Raible
 
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
Matt Raible
 
Comparing JVM Web Frameworks - Devoxx France 2013
Comparing JVM Web Frameworks - Devoxx France 2013Comparing JVM Web Frameworks - Devoxx France 2013
Comparing JVM Web Frameworks - Devoxx France 2013
Matt Raible
 
Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010
Matt Raible
 
Devoxx UK 2022 - Application security: What should the attack landscape look ...
Devoxx UK 2022 - Application security: What should the attack landscape look ...Devoxx UK 2022 - Application security: What should the attack landscape look ...
Devoxx UK 2022 - Application security: What should the attack landscape look ...
Chris Swan
 
What's New in Cloud Foundry
What's New in Cloud FoundryWhat's New in Cloud Foundry
What's New in Cloud Foundry
Jennifer Hickey
 
Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)
Chris Richardson
 
Cloud Foundry Architecture and Overview
Cloud Foundry Architecture and OverviewCloud Foundry Architecture and Overview
Cloud Foundry Architecture and Overviewrajdeep
 
Flex For Java Developers - SDForum Java SIG
Flex For Java Developers - SDForum Java SIGFlex For Java Developers - SDForum Java SIG
Flex For Java Developers - SDForum Java SIG
Chris Richardson
 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon Valley
Sven Haiges
 
Change & Shift
Change & ShiftChange & Shift
Change & Shift
Naoki Ishigaki
 
Webinar: Taking your JMeter Test Monitoring To The Next Level (Ft. PerfAcademy)
Webinar: Taking your JMeter Test Monitoring To The Next Level (Ft. PerfAcademy)Webinar: Taking your JMeter Test Monitoring To The Next Level (Ft. PerfAcademy)
Webinar: Taking your JMeter Test Monitoring To The Next Level (Ft. PerfAcademy)
Sebastian Hensiek
 
GTUG JS will save us all
GTUG JS will save us allGTUG JS will save us all
GTUG JS will save us all
Mário Valente
 
Thinking Outside the Container: Deploying Standalone Apps to Cloud Foundry
Thinking Outside the Container: Deploying Standalone Apps to Cloud FoundryThinking Outside the Container: Deploying Standalone Apps to Cloud Foundry
Thinking Outside the Container: Deploying Standalone Apps to Cloud Foundry
Jennifer Hickey
 
Next of Java 2022
Next of Java 2022Next of Java 2022
Next of Java 2022
Somkiat Puisungnoen
 
Test-Driven Development for Embedded C -- OOP Conference 2015, Munich
Test-Driven Development for Embedded C -- OOP Conference 2015, MunichTest-Driven Development for Embedded C -- OOP Conference 2015, Munich
Test-Driven Development for Embedded C -- OOP Conference 2015, Munich
James Grenning
 
Vue.js LT
Vue.js LTVue.js LT
Vue.js LT
Natalie Ang
 
Groovy Finance
Groovy FinanceGroovy Finance
Groovy Finance
Jonathan Felch
 
The Modern Java Web Developer Bootcamp - Devoxx 2013
The Modern Java Web Developer Bootcamp - Devoxx 2013The Modern Java Web Developer Bootcamp - Devoxx 2013
The Modern Java Web Developer Bootcamp - Devoxx 2013
Matt Raible
 

Similar to Comparing JVM Web Frameworks - Spring I/O 2012 (20)

HTML5 with Play Scala, CoffeeScript and Jade - UberConf 2012
HTML5 with Play Scala, CoffeeScript and Jade - UberConf 2012HTML5 with Play Scala, CoffeeScript and Jade - UberConf 2012
HTML5 with Play Scala, CoffeeScript and Jade - UberConf 2012
 
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
HTML5 with Play Scala, CoffeeScript and Jade - Jfokus 2012
 
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
 
Comparing JVM Web Frameworks - Devoxx France 2013
Comparing JVM Web Frameworks - Devoxx France 2013Comparing JVM Web Frameworks - Devoxx France 2013
Comparing JVM Web Frameworks - Devoxx France 2013
 
Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010
 
Devoxx UK 2022 - Application security: What should the attack landscape look ...
Devoxx UK 2022 - Application security: What should the attack landscape look ...Devoxx UK 2022 - Application security: What should the attack landscape look ...
Devoxx UK 2022 - Application security: What should the attack landscape look ...
 
What's New in Cloud Foundry
What's New in Cloud FoundryWhat's New in Cloud Foundry
What's New in Cloud Foundry
 
Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)Decomposing Applications for Scalability and Deployability (April 2012)
Decomposing Applications for Scalability and Deployability (April 2012)
 
Cloud Foundry Architecture and Overview
Cloud Foundry Architecture and OverviewCloud Foundry Architecture and Overview
Cloud Foundry Architecture and Overview
 
Flex For Java Developers - SDForum Java SIG
Flex For Java Developers - SDForum Java SIGFlex For Java Developers - SDForum Java SIG
Flex For Java Developers - SDForum Java SIG
 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon Valley
 
Change & Shift
Change & ShiftChange & Shift
Change & Shift
 
Webinar: Taking your JMeter Test Monitoring To The Next Level (Ft. PerfAcademy)
Webinar: Taking your JMeter Test Monitoring To The Next Level (Ft. PerfAcademy)Webinar: Taking your JMeter Test Monitoring To The Next Level (Ft. PerfAcademy)
Webinar: Taking your JMeter Test Monitoring To The Next Level (Ft. PerfAcademy)
 
GTUG JS will save us all
GTUG JS will save us allGTUG JS will save us all
GTUG JS will save us all
 
Thinking Outside the Container: Deploying Standalone Apps to Cloud Foundry
Thinking Outside the Container: Deploying Standalone Apps to Cloud FoundryThinking Outside the Container: Deploying Standalone Apps to Cloud Foundry
Thinking Outside the Container: Deploying Standalone Apps to Cloud Foundry
 
Next of Java 2022
Next of Java 2022Next of Java 2022
Next of Java 2022
 
Test-Driven Development for Embedded C -- OOP Conference 2015, Munich
Test-Driven Development for Embedded C -- OOP Conference 2015, MunichTest-Driven Development for Embedded C -- OOP Conference 2015, Munich
Test-Driven Development for Embedded C -- OOP Conference 2015, Munich
 
Vue.js LT
Vue.js LTVue.js LT
Vue.js LT
 
Groovy Finance
Groovy FinanceGroovy Finance
Groovy Finance
 
The Modern Java Web Developer Bootcamp - Devoxx 2013
The Modern Java Web Developer Bootcamp - Devoxx 2013The Modern Java Web Developer Bootcamp - Devoxx 2013
The Modern Java Web Developer Bootcamp - Devoxx 2013
 

More from Matt Raible

Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Matt Raible
 
Micro Frontends for Java Microservices - Belfast JUG 2022
Micro Frontends for Java Microservices - Belfast JUG 2022Micro Frontends for Java Microservices - Belfast JUG 2022
Micro Frontends for Java Microservices - Belfast JUG 2022
Matt Raible
 
Micro Frontends for Java Microservices - Dublin JUG 2022
Micro Frontends for Java Microservices - Dublin JUG 2022Micro Frontends for Java Microservices - Dublin JUG 2022
Micro Frontends for Java Microservices - Dublin JUG 2022
Matt Raible
 
Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022
Matt Raible
 
Comparing Native Java REST API Frameworks - Seattle JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022Comparing Native Java REST API Frameworks - Seattle JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022
Matt Raible
 
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Matt Raible
 
Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022
Matt Raible
 
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Matt Raible
 
Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021
Matt Raible
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
Matt Raible
 
Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021
Matt Raible
 
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Matt Raible
 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Matt Raible
 
Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021
Matt Raible
 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
Matt Raible
 
Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021
Matt Raible
 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Matt Raible
 
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Matt Raible
 
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Matt Raible
 
JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020
Matt Raible
 

More from Matt Raible (20)

Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
 
Micro Frontends for Java Microservices - Belfast JUG 2022
Micro Frontends for Java Microservices - Belfast JUG 2022Micro Frontends for Java Microservices - Belfast JUG 2022
Micro Frontends for Java Microservices - Belfast JUG 2022
 
Micro Frontends for Java Microservices - Dublin JUG 2022
Micro Frontends for Java Microservices - Dublin JUG 2022Micro Frontends for Java Microservices - Dublin JUG 2022
Micro Frontends for Java Microservices - Dublin JUG 2022
 
Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022
 
Comparing Native Java REST API Frameworks - Seattle JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022Comparing Native Java REST API Frameworks - Seattle JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022
 
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
 
Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022
 
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
 
Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
 
Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021
 
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
 
Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021
 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
 
Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021
 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
 
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
 
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
 
JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020
 

Recently uploaded

Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 

Recently uploaded (20)

Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 

Comparing JVM Web Frameworks - Spring I/O 2012

  • 1. COMPARING JVM WEB FRAMEWORKS Matt Raible http://raibledesigns.com Fotos by Trish - 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 GWT Rails Spring MVC 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. REST Services © 2012 Raible Designs 80
  • 81. Developer Productivity http://zeroturnaround.com/blog/ developer-productivity-report-part-1-developer-timesheet/ © 2012 Raible Designs 81
  • 82. Developer Productivity http://zeroturnaround.com/blog/ developer-productivity-report-part-3-developer-efficiency/ © 2012 Raible Designs 82
  • 83. There is no “best” framework Just lots of awesome choices... © 2012 Raible Designs 83
  • 84. Don’t listen to me! © 2012 Raible Designs 84
  • 85. 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 85
  • 86. But don’t forget... © 2012 Raible Designs 86
  • 87. Questions? ‣ Contact - http://raibledesigns.com - @mraible ‣ Download - http://slideshare.net/mraible © 2012 Raible Designs 87