SlideShare ist ein Scribd-Unternehmen logo
1 von 86
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

Classification of Market
Classification of MarketClassification of Market
Classification of MarketNijo Ninan
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShareKapost
 
Collection and Conveyance of Water
Collection and Conveyance of WaterCollection and Conveyance of Water
Collection and Conveyance of WaterGAURAV. H .TANDON
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation OptimizationOneupweb
 
Understanding text-structure-powerpoint
Understanding text-structure-powerpointUnderstanding text-structure-powerpoint
Understanding text-structure-powerpointaelowans
 
Anatomy of maxilla and mandible
Anatomy of maxilla and mandibleAnatomy of maxilla and mandible
Anatomy of maxilla and mandibleFardan Qadeer
 
Fmcg training modules-bfg
Fmcg training modules-bfgFmcg training modules-bfg
Fmcg training modules-bfgRomy Cagampan
 
Factors affecting learning PSYCHOLOGICAL, PHYSIOLOGICAL / BIOLOGICAL, ENVIRO...
Factors affecting learning PSYCHOLOGICAL,  PHYSIOLOGICAL / BIOLOGICAL, ENVIRO...Factors affecting learning PSYCHOLOGICAL,  PHYSIOLOGICAL / BIOLOGICAL, ENVIRO...
Factors affecting learning PSYCHOLOGICAL, PHYSIOLOGICAL / BIOLOGICAL, ENVIRO...Universty Of Gujrat, Pakistan
 
Engaging Learners with Technology
Engaging Learners with TechnologyEngaging Learners with Technology
Engaging Learners with TechnologyDean Shareski
 
OTN for Beginners
OTN for BeginnersOTN for Beginners
OTN for BeginnersMapYourTech
 
Thai tech startup ecosystem report 2017
Thai tech startup ecosystem report 2017Thai tech startup ecosystem report 2017
Thai tech startup ecosystem report 2017Techsauce Media
 
The Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing ContentThe Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing ContentNeil Patel
 

Andere mochten auch (17)

textile printing
 textile printing textile printing
textile printing
 
Classification of Market
Classification of MarketClassification of Market
Classification of Market
 
Surviving Google: SEO in 2020
Surviving Google: SEO in 2020Surviving Google: SEO in 2020
Surviving Google: SEO in 2020
 
Masters of SlideShare
Masters of SlideShareMasters of SlideShare
Masters of SlideShare
 
Collection and Conveyance of Water
Collection and Conveyance of WaterCollection and Conveyance of Water
Collection and Conveyance of Water
 
10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization10 Ways to Win at SlideShare SEO & Presentation Optimization
10 Ways to Win at SlideShare SEO & Presentation Optimization
 
Understanding text-structure-powerpoint
Understanding text-structure-powerpointUnderstanding text-structure-powerpoint
Understanding text-structure-powerpoint
 
Vietnam E-commerce Report 2016
Vietnam E-commerce Report 2016 Vietnam E-commerce Report 2016
Vietnam E-commerce Report 2016
 
Anatomy of maxilla and mandible
Anatomy of maxilla and mandibleAnatomy of maxilla and mandible
Anatomy of maxilla and mandible
 
Fmcg training modules-bfg
Fmcg training modules-bfgFmcg training modules-bfg
Fmcg training modules-bfg
 
Tmj anatomy
Tmj anatomyTmj anatomy
Tmj anatomy
 
Cardiac cycle ppt (2)
Cardiac cycle ppt (2)Cardiac cycle ppt (2)
Cardiac cycle ppt (2)
 
Factors affecting learning PSYCHOLOGICAL, PHYSIOLOGICAL / BIOLOGICAL, ENVIRO...
Factors affecting learning PSYCHOLOGICAL,  PHYSIOLOGICAL / BIOLOGICAL, ENVIRO...Factors affecting learning PSYCHOLOGICAL,  PHYSIOLOGICAL / BIOLOGICAL, ENVIRO...
Factors affecting learning PSYCHOLOGICAL, PHYSIOLOGICAL / BIOLOGICAL, ENVIRO...
 
Engaging Learners with Technology
Engaging Learners with TechnologyEngaging Learners with Technology
Engaging Learners with Technology
 
OTN for Beginners
OTN for BeginnersOTN for Beginners
OTN for Beginners
 
Thai tech startup ecosystem report 2017
Thai tech startup ecosystem report 2017Thai tech startup ecosystem report 2017
Thai tech startup ecosystem report 2017
 
The Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing ContentThe Ultimate Guide to Creating Visually Appealing Content
The Ultimate Guide to Creating Visually Appealing Content
 

Ähnlich wie Comparing JVM Web Frameworks

Comparing JVM Web Frameworks - Spring I/O 2012
Comparing JVM Web Frameworks - Spring I/O 2012Comparing JVM Web Frameworks - Spring I/O 2012
Comparing JVM Web Frameworks - Spring I/O 2012Matt Raible
 
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 2012Matt 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 2011Matt Raible
 
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Matt 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 2010Matt 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
 
Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Matt Raible
 
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
 
What's New in Cloud Foundry
What's New in Cloud FoundryWhat's New in Cloud Foundry
What's New in Cloud FoundryJennifer Hickey
 
Spring Data and MongoDB
Spring Data and MongoDBSpring Data and MongoDB
Spring Data and MongoDBOliver Gierke
 
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 SIGChris Richardson
 
Imo dsc 15_-v1
Imo dsc 15_-v1Imo dsc 15_-v1
Imo dsc 15_-v1dgdhande
 
GTUG JS will save us all
GTUG JS will save us allGTUG JS will save us all
GTUG JS will save us allMá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 FoundryJennifer Hickey
 
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
 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleySven Haiges
 
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, MunichJames Grenning
 

Ähnlich wie Comparing JVM Web Frameworks (20)

Comparing JVM Web Frameworks - Spring I/O 2012
Comparing JVM Web Frameworks - Spring I/O 2012Comparing JVM Web Frameworks - Spring I/O 2012
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
 
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 - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
 
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 ...
 
Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014
 
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)
 
What's New in Cloud Foundry
What's New in Cloud FoundryWhat's New in Cloud Foundry
What's New in Cloud Foundry
 
Spring Data and MongoDB
Spring Data and MongoDBSpring Data and MongoDB
Spring Data and MongoDB
 
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
 
Imo dsc 15_-v1
Imo dsc 15_-v1Imo dsc 15_-v1
Imo dsc 15_-v1
 
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
 
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)
 
Change & Shift
Change & ShiftChange & Shift
Change & Shift
 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon Valley
 
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
 
Next of Java 2022
Next of Java 2022Next of Java 2022
Next of Java 2022
 

Mehr von 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 2022Matt 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 2022Matt 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 2022Matt 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 2022Matt 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 2022Matt 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 2022Matt 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 2022Matt 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 2021Matt 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 2021Matt 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 2021Matt 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 2021Matt 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 2021Matt 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 2021Matt 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 2021Matt 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 2021Matt 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 2020Matt Raible
 

Mehr von 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
 

Kürzlich hochgeladen

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 

Kürzlich hochgeladen (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 

Comparing JVM Web Frameworks

  • 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