SlideShare a Scribd company logo
1 of 48
Download to read offline
Comparing Java Web
          Frameworks
JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket

                     Matt Raible
              matt@raibledesigns.com
              http://raibledesigns.com




                                               © 2007 Raible Designs, Inc.
Today's Agenda

Introductions
Pros and Cons
Smackdown
Conclusion
Q and A




                        © 2007 Raible Designs, Inc.
Introductions
Your experience with webapps?
Your experience with Java EE?
What do you want to get from this session?
Experience with Maven, Tomcat, Hibernate, Spring?
Web Framework Experience:
   Spring MVC, Struts 2, Stripes, JSF, Tapestry,
   Wicket




                                            © 2007 Raible Designs, Inc.
Who is Matt Raible?
Power user of Java Open Source Frameworks
Author of Spring Live and Pro JSP 2.0
Founder of AppFuse and AppFuse Light
Member of Java EE 5, JSF 1.2 and Bean Validation
Expert Groups
Committer on Apache Projects: Roller and Struts
Java Blogger since 2002




                                         © 2007 Raible Designs, Inc.
© 2007 Raible Designs, Inc.
My Experience




                © 2007 Raible Designs, Inc.
Pros and Cons




                © 2007 Raible Designs, Inc.
JSF
Pros:
   Java EE Standard - lots of demand and jobs
   Fast and easy to develop with initially
   Lots of component libraries
Cons:
   Tag soup for JSPs
   Doesn't play well with REST or Security
   No single source for implementation



                                             © 2007 Raible Designs, Inc.
Spring MVC
Pros:
   Lifecyle for overriding binding, validation, etc.
   Integrates with many view options seamlessly:
   JSP/JSTL, Tiles, Velocity, FreeMarker, Excel, PDF
   Inversion of Control makes it easy to test
Cons:
   Configuration intensive - lots of XML
   Almost too flexible - no common parent
   Controller
   No built-in Ajax support
                                            © 2007 Raible Designs, Inc.
Stripes
Pros:
   No XML - Convention over Configuration
   Good documentation (easy to learn)
   Enthusiastic community
Cons:
   Small Community
   Not as actively developed as other projects
   Hard-coded URLs in ActionBeans


                                         © 2007 Raible Designs, Inc.
Struts 2
Pros:
   Simple architecture - easy to extend
   Tag Library is easy to customize with
   FreeMarker or Velocity
   Controller-based or page-based navigation
Cons:
   Documentation is poorly organized
   No feedback for missing properties or invalid
   OGNL expressions
   Googling results in Struts 1.x documentation
                                           © 2007 Raible Designs, Inc.
Tapestry
Pros:
   Very productive once you learn it
   Templates are HTML - great for designers
   Lots of innovation between releases
Cons:
   Documentation very conceptual, rather than
   pragmatic
   Steep learning curve
   Long release cycles - major upgrades every year

                                         © 2007 Raible Designs, Inc.
Wicket
Pros:
   Great for Java developers, not web developers
   Tight binding between pages and views
   Active community - support from the creators
Cons:
   HTML templates live next to Java code
   Need to have a good grasp of OO
   The Wicket Way - everything done in Java



                                           © 2007 Raible Designs, Inc.
The Smackdown



                © 2007 Raible Designs, Inc.
Evaluation Criteria
Ajax Support: Is it built-in and easy to use?
Bookmark-ability: Can users bookmark pages and
return to them easily?
Validation: How easy is it to use and does it support
client-side (JavaScript) validation?
Testability: How easy is it to test Controllers out of
container?




                                             © 2007 Raible Designs, Inc.
Evaluation Criteria, cont.
 Post and Redirect: How does the framework handle
 the duplicate post problem?
 Internationalization: How is i18n supported and
 how easy is it to get messages in Controllers?
 Page Decoration: What sort of page decoration/
 composition mechanisms does the framework
 support?
 Community and Support: Can you get questions
 answered quickly (and respectfully)?

                                          © 2007 Raible Designs, Inc.
Evaluation Criteria, cont.

 Tools: Is there good tool (particularly IDE) support
 for the framework?
 Marketability of Skills: If you learn the framework,
 will it help you get a job?
 Job Count: What is the demand for framework skills
 on dice.com and indeed.com?




                                             © 2007 Raible Designs, Inc.
Ajax Support
Is Ajax support built-in and easy to use?
    JSF: No Ajax support, use ICEfaces and Ajax4JSF
    Stripes: No libraries, supports streaming results
    Struts 2: Dojo built-in, plugins for GWT, JSON
    Spring MVC: No libraries, use DWR & Spring
    MVC Extras
    Tapestry: Dojo built-in in 4.1
    Wicket: Dojo and Script.aculo.us (Wicket Stuff)

                                            © 2007 Raible Designs, Inc.
Bookmarking and URLs
JSF does a POST for everything - URLs not even
considered
Stripes uses conventions, but you can override
Struts 2 has namespaces - makes it easy
Spring MVC allows full URL control
Tapestry still has somewhat ugly URLs
Wicket allows pages/URLs to be mounted




                                          © 2007 Raible Designs, Inc.
Validation
JSF has ugly default messages, but easiest to
configure
Spring MVC allows you to use Commons Validator -
a mature solution
Struts 2 uses OGNL for powerful expressions -
client-side only works when specifying rules on
Actions
Tapestry has very robust validation - good messages
without need to customize
Stripes and Wicket do validation in Java - no client-
side
                                            © 2007 Raible Designs, Inc.
Testability
Spring and Struts 2 allow easy testing with mocks
(e.g. EasyMock, jMock, Spring Mocks)
Tapestry appears difficult to test because page
classes are abstract, Creator class simplifies
JSF page classes can be easily tested and actually
look a lot like Struts 2 actions
Wicket has WicketTester, a powerful solution
Stripes has Servlet API Mocks and MockRoundtrip



                                           © 2007 Raible Designs, Inc.
Post and Redirect
The duplicate-post problem: redirect after POST
Is there support for allowing success messages to
live through a redirect?
   Spring MVC allows you to add parameters to a
   redirect
   Stripes, Tapestry and Wicket all have quot;flashquot;
   support
   Struts 2 requires a custom solution
   JSF requires a custom solution, i18n messages
   difficult to get in page beans

                                          © 2007 Raible Designs, Inc.
Internationalization
JSTL’s <fmt:message> tag makes it easy
No standard for getting i18n messages in controller
classes
Stripes, Spring MVC and JSF use a single
ResourceBundle per locale
Struts 2, Tapestry and Wicket advocate separate files
for each page/action
JSF requires resource bundle to be declared on each
page
Tapestry's <span key=quot;key.namequot;> is awesome

                                           © 2007 Raible Designs, Inc.
Page Decoration
Tiles Experience: used since it first came out
SiteMesh is much easier to setup and use
Tiles can be used in Struts 2, Spring and JSF
    Requires configuration for each page
SiteMesh can be used with all frameworks
    Requires very little maintenance after setup
SiteMesh not supported or recommended for use
with JSF, Tapestry or Wicket



                                            © 2007 Raible Designs, Inc.
Marketability of Skills
Struts 1 is still in high-demand and widely-used
Spring is getting more press, but mostly due to the
framework’s other features
JSF is becoming popular; awful with JSP
Struts 2 is gaining ground, but very scarce on job
boards
Tapestry has increased in popularity in last couple
years
Wicket and Stripes are virtually unknown


                                           © 2007 Raible Designs, Inc.
Pretty Graphs




                © 2007 Raible Designs, Inc.
Dice.com Job Count
                                                      Struts 2
800
                                                      Spring MVC
                           748                        Stripes
                                                      JSF
600                                                   Wicket
                                                      Tapestry

400



200

           98
      77                                 69
 0                 20               15
                November 14, 2007

                                              © 2007 Raible Designs, Inc.
Dice Job with Struts 1.x
                                                           Struts 2
3,000
                                                           Spring MVC
                                                           Stripes
                                                           JSF
2,250                                                      Wicket
                                           2,249
                                                           Tapestry
                                                           Struts 1
1,500



 750
                         748



   0    77   98
                  20                  69
                                15
                  November 14, 2007

                                                   © 2007 Raible Designs, Inc.
Job Trends




             © 2007 Raible Designs, Inc.
Job Trends vs. Struts




                   © 2007 Raible Designs, Inc.
Job Trends vs. J2EE




                  © 2007 Raible Designs, Inc.
Job Trends vs. Java




                  © 2007 Raible Designs, Inc.
Employer Search on Monster.com
 Resumes posted in last 2 weeks
      600                                         Struts 2
                                592
                                                  Spring MVC
      480                                         Stripes
                                                  Wicket
      360
                                                  JSF
                                                  Tapestry
      240

      120
            75   84
                                      49
       0              11   12



                                           © 2007 Raible Designs, Inc.
Mailing List Traffic
  Struts

 Stripes

MyFaces

Tapestry

 Wicket

             0                 500                1,000               1,500               2,000
   * Spring MVC is not listed here because they have a forum instead of a mailing list and I couldn’t
   figure out a way to count the number of messages for each month.




                                                                                             © 2007 Raible Designs, Inc.
Releases in 2007

10.0                                  Struts 2
                                      Spring MVC
                                      Stripes
 7.5                                  MyFaces
                                      Wicket
           6                          Tapestry
 5.0

       4

 2.5
                   2   2   2

               1
  0



                               © 2007 Raible Designs, Inc.
Tools Available
15.00                                Struts 2
                                     Spring MVC
                                     Stripes
11.25                       12       Wicket
                                     JSF
                                     Tapestry
 7.50
                                 7


 3.75    4
             3        3


   0
                 May 2007


                                     © 2007 Raible Designs, Inc.
Books on Amazon

10.0
                      10                     Struts 2
                                             Spring MVC
                                             Stripes
 7.5                                         JSF
           7                                 Wicket
                                             Tapestry
 5.0

       4

 2.5                              3

                              2


  0
               October 2007

                                      © 2007 Raible Designs, Inc.
How do you choose?




                © 2007 Raible Designs, Inc.
Eliminate, Don’t Include



                    © 2007 Raible Designs, Inc.
© 2007 Raible Designs, Inc.
6 Important Factors
What type of Application are you building?
Ease of Development / Is full-stack an option?
Project Community
Project Future and Roadmap
Maintenance
Technical Features




                                           © 2007 Raible Designs, Inc.
Don’t believe the Hype
Don’t believe blogs and articles
Try it yourself
Believe developers, not evangelists
Believe developers that are experienced with the
framework and have used it in production
Beware of corporate interests - they can twist
marketing
Books are a good sign



                                           © 2007 Raible Designs, Inc.
Best Tool for the Job
Frameworks have sweet spots - is your
application one of them?
Pick 2-3 frameworks for your type of application...
... and prototype!
If prototyping is painful, switch
Make sure you prototype more than one and do a
presentation comparing the pros and cons of each




                                           © 2007 Raible Designs, Inc.
After Choosing...
Document the reasons for your decision
Allow developers to challenge it
Allow your prototype to be written with other
frameworks
Don’t be afraid to try new frameworks
Don’t be afraid to use old frameworks
Don’t be afraid to keep your existing framework




                                          © 2007 Raible Designs, Inc.
What do I think?




               © 2007 Raible Designs, Inc.
© 2007 Raible Designs, Inc.
Conclusion
The future is bright because of all the competition
Developers should know more than one web
framework
You should try a framework before dissing it
The plethora of web frameworks is a good thing!
Doing proper research can save time and money
Testing is the best path to future maintenance



                                           © 2007 Raible Designs, Inc.
Questions?
    matt@raibledesigns.com
    http://raibledesigns.com


         Download presentation from:
http://raibledesigns.com/rd/page/publications




                                                © 2007 Raible Designs, Inc.

More Related Content

What's hot

KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론Hyunjik Bae
 
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라MinKyu Kim
 
Web socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a webWeb socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a webMario Mendonça
 
게임 기획서 작성하기 - 송철헌
게임 기획서 작성하기 - 송철헌게임 기획서 작성하기 - 송철헌
게임 기획서 작성하기 - 송철헌ETRIBE_STG
 
How to Avoid the Top 5 NGINX Configuration Mistakes
How to Avoid the Top 5 NGINX Configuration MistakesHow to Avoid the Top 5 NGINX Configuration Mistakes
How to Avoid the Top 5 NGINX Configuration MistakesNGINX, Inc.
 
개인화 추천은 어디로 가고 있는가?
개인화 추천은 어디로 가고 있는가?개인화 추천은 어디로 가고 있는가?
개인화 추천은 어디로 가고 있는가?choi kyumin
 
OReilly-Web-Application-Security-NGINX.pdf
OReilly-Web-Application-Security-NGINX.pdfOReilly-Web-Application-Security-NGINX.pdf
OReilly-Web-Application-Security-NGINX.pdfRazaMehmood7
 
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드if kakao
 
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들Young Keun Choe
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계tcaesvk
 
Cost Savings at High Performance with Redis Labs and AWS
Cost Savings at High Performance with Redis Labs and AWSCost Savings at High Performance with Redis Labs and AWS
Cost Savings at High Performance with Redis Labs and AWSAmazon Web Services
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱Seungmo Koo
 
Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Rafael Barbolo
 
태블로 소프트웨어(Tableau Software) 소개
태블로 소프트웨어(Tableau Software) 소개태블로 소프트웨어(Tableau Software) 소개
태블로 소프트웨어(Tableau Software) 소개HT Kim
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019devCAT Studio, NEXON
 
Modelo de Dicionário da eap
Modelo de Dicionário da eapModelo de Dicionário da eap
Modelo de Dicionário da eapFernando Palma
 
[오픈소스컨설팅] jira service desk 201908
[오픈소스컨설팅] jira service desk 201908[오픈소스컨설팅] jira service desk 201908
[오픈소스컨설팅] jira service desk 201908Open Source Consulting
 
스켈레탈 메시 애니메이션 블루프린트
스켈레탈 메시 애니메이션 블루프린트스켈레탈 메시 애니메이션 블루프린트
스켈레탈 메시 애니메이션 블루프린트Soochan Park
 

What's hot (20)

Curso de Node JS Básico
Curso de Node JS BásicoCurso de Node JS Básico
Curso de Node JS Básico
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
 
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
Packer, Terraform, Vault를 이용해 만드는 
재현 가능한 게임 인프라
 
NGINX App Protect on Hatobaで実現するセキュリティサービス公開 構築手順書
NGINX App Protect on Hatobaで実現するセキュリティサービス公開 構築手順書NGINX App Protect on Hatobaで実現するセキュリティサービス公開 構築手順書
NGINX App Protect on Hatobaで実現するセキュリティサービス公開 構築手順書
 
Web socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a webWeb socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a web
 
게임 기획서 작성하기 - 송철헌
게임 기획서 작성하기 - 송철헌게임 기획서 작성하기 - 송철헌
게임 기획서 작성하기 - 송철헌
 
How to Avoid the Top 5 NGINX Configuration Mistakes
How to Avoid the Top 5 NGINX Configuration MistakesHow to Avoid the Top 5 NGINX Configuration Mistakes
How to Avoid the Top 5 NGINX Configuration Mistakes
 
개인화 추천은 어디로 가고 있는가?
개인화 추천은 어디로 가고 있는가?개인화 추천은 어디로 가고 있는가?
개인화 추천은 어디로 가고 있는가?
 
OReilly-Web-Application-Security-NGINX.pdf
OReilly-Web-Application-Security-NGINX.pdfOReilly-Web-Application-Security-NGINX.pdf
OReilly-Web-Application-Security-NGINX.pdf
 
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
오픈소스를 사용하고, 준비하는 개발자를 위한 가이드
 
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
NDC16 - 화성에서 온 사업팀 금성에서 온 개발팀 : 성공적인 라이브 서비스를 위해 필요한 것들
 
NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계NDC 2014, 피할 수 없는 문자열의 세계
NDC 2014, 피할 수 없는 문자열의 세계
 
Cost Savings at High Performance with Redis Labs and AWS
Cost Savings at High Performance with Redis Labs and AWSCost Savings at High Performance with Redis Labs and AWS
Cost Savings at High Performance with Redis Labs and AWS
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱
 
Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)
 
태블로 소프트웨어(Tableau Software) 소개
태블로 소프트웨어(Tableau Software) 소개태블로 소프트웨어(Tableau Software) 소개
태블로 소프트웨어(Tableau Software) 소개
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
Modelo de Dicionário da eap
Modelo de Dicionário da eapModelo de Dicionário da eap
Modelo de Dicionário da eap
 
[오픈소스컨설팅] jira service desk 201908
[오픈소스컨설팅] jira service desk 201908[오픈소스컨설팅] jira service desk 201908
[오픈소스컨설팅] jira service desk 201908
 
스켈레탈 메시 애니메이션 블루프린트
스켈레탈 메시 애니메이션 블루프린트스켈레탈 메시 애니메이션 블루프린트
스켈레탈 메시 애니메이션 블루프린트
 

Similar to Comparing JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket

Comparing javawebframeworks apacheconus2007
Comparing javawebframeworks apacheconus2007Comparing javawebframeworks apacheconus2007
Comparing javawebframeworks apacheconus2007Geococcyx
 
Comparing Flex, Grails, GWT, Seam, Struts 2 and Wicket
Comparing Flex, Grails, GWT, Seam, Struts 2 and WicketComparing Flex, Grails, GWT, Seam, Struts 2 and Wicket
Comparing Flex, Grails, GWT, Seam, Struts 2 and WicketMatt Raible
 
Comparing Java Web Frameworks
Comparing Java Web FrameworksComparing Java Web Frameworks
Comparing Java Web FrameworksMatt Raible
 
Comparing Java Web Frameworks Apache Con Eu2007
Comparing Java Web Frameworks Apache Con Eu2007Comparing Java Web Frameworks Apache Con Eu2007
Comparing Java Web Frameworks Apache Con Eu2007Yekmer Simsek
 
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
 
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Matt Raible
 
Choosing a JVM Web Framework
Choosing a JVM Web FrameworkChoosing a JVM Web Framework
Choosing a JVM Web FrameworkMatt Raible
 
Comparing JVM Web Frameworks - Devoxx 2010
Comparing JVM Web Frameworks - Devoxx 2010Comparing JVM Web Frameworks - Devoxx 2010
Comparing JVM Web Frameworks - Devoxx 2010Matt Raible
 
Comparing JVM Web Frameworks - 33rd Degree
Comparing JVM Web Frameworks - 33rd DegreeComparing JVM Web Frameworks - 33rd Degree
Comparing JVM Web Frameworks - 33rd DegreeMatt Raible
 
Sun Java EE 6 Overview
Sun Java EE 6 OverviewSun Java EE 6 Overview
Sun Java EE 6 Overviewsbobde
 
Introduction To J Boss Seam
Introduction To J Boss SeamIntroduction To J Boss Seam
Introduction To J Boss Seamashishkulkarni
 
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 IndiaJava EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 IndiaArun Gupta
 
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Arun Gupta
 
Java EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexusJava EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexusArun Gupta
 
Playframework + Twitter Bootstrap
Playframework + Twitter BootstrapPlayframework + Twitter Bootstrap
Playframework + Twitter BootstrapKevingo Tsai
 

Similar to Comparing JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket (20)

Comparing javawebframeworks apacheconus2007
Comparing javawebframeworks apacheconus2007Comparing javawebframeworks apacheconus2007
Comparing javawebframeworks apacheconus2007
 
Comparing Flex, Grails, GWT, Seam, Struts 2 and Wicket
Comparing Flex, Grails, GWT, Seam, Struts 2 and WicketComparing Flex, Grails, GWT, Seam, Struts 2 and Wicket
Comparing Flex, Grails, GWT, Seam, Struts 2 and Wicket
 
Comparing Java Web Frameworks
Comparing Java Web FrameworksComparing Java Web Frameworks
Comparing Java Web Frameworks
 
Comparing Java Web Frameworks Apache Con Eu2007
Comparing Java Web Frameworks Apache Con Eu2007Comparing Java Web Frameworks Apache Con Eu2007
Comparing Java Web Frameworks Apache Con Eu2007
 
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
 
Os Raible
Os RaibleOs Raible
Os Raible
 
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
 
Choosing a JVM Web Framework
Choosing a JVM Web FrameworkChoosing a JVM Web Framework
Choosing a JVM Web Framework
 
Jsf 2.0 Overview
Jsf 2.0 OverviewJsf 2.0 Overview
Jsf 2.0 Overview
 
Comparing JVM Web Frameworks - Devoxx 2010
Comparing JVM Web Frameworks - Devoxx 2010Comparing JVM Web Frameworks - Devoxx 2010
Comparing JVM Web Frameworks - Devoxx 2010
 
Comparing JVM Web Frameworks - 33rd Degree
Comparing JVM Web Frameworks - 33rd DegreeComparing JVM Web Frameworks - 33rd Degree
Comparing JVM Web Frameworks - 33rd Degree
 
Java/J2EE Companion
Java/J2EE CompanionJava/J2EE Companion
Java/J2EE Companion
 
Java EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolioJava EE 6 and GlassFish portfolio
Java EE 6 and GlassFish portfolio
 
Sun Java EE 6 Overview
Sun Java EE 6 OverviewSun Java EE 6 Overview
Sun Java EE 6 Overview
 
Introduction To J Boss Seam
Introduction To J Boss SeamIntroduction To J Boss Seam
Introduction To J Boss Seam
 
Frameworks in java
Frameworks in javaFrameworks in java
Frameworks in java
 
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 IndiaJava EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
Java EE 6 & GlassFish v3: Paving the path for the future - Tech Days 2010 India
 
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
 
Java EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexusJava EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexus
 
Playframework + Twitter Bootstrap
Playframework + Twitter BootstrapPlayframework + Twitter Bootstrap
Playframework + Twitter Bootstrap
 

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

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

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
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: 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
 
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
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
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
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
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
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 

Recently uploaded (20)

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
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: 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
 
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
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
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
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
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
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 

Comparing JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket

  • 1. Comparing Java Web Frameworks JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket Matt Raible matt@raibledesigns.com http://raibledesigns.com © 2007 Raible Designs, Inc.
  • 2. Today's Agenda Introductions Pros and Cons Smackdown Conclusion Q and A © 2007 Raible Designs, Inc.
  • 3. Introductions Your experience with webapps? Your experience with Java EE? What do you want to get from this session? Experience with Maven, Tomcat, Hibernate, Spring? Web Framework Experience: Spring MVC, Struts 2, Stripes, JSF, Tapestry, Wicket © 2007 Raible Designs, Inc.
  • 4. Who is Matt Raible? Power user of Java Open Source Frameworks Author of Spring Live and Pro JSP 2.0 Founder of AppFuse and AppFuse Light Member of Java EE 5, JSF 1.2 and Bean Validation Expert Groups Committer on Apache Projects: Roller and Struts Java Blogger since 2002 © 2007 Raible Designs, Inc.
  • 5. © 2007 Raible Designs, Inc.
  • 6. My Experience © 2007 Raible Designs, Inc.
  • 7. Pros and Cons © 2007 Raible Designs, Inc.
  • 8. JSF Pros: Java EE Standard - lots of demand and jobs Fast and easy to develop with initially Lots of component libraries Cons: Tag soup for JSPs Doesn't play well with REST or Security No single source for implementation © 2007 Raible Designs, Inc.
  • 9. Spring MVC Pros: Lifecyle for overriding binding, validation, etc. Integrates with many view options seamlessly: JSP/JSTL, Tiles, Velocity, FreeMarker, Excel, PDF Inversion of Control makes it easy to test Cons: Configuration intensive - lots of XML Almost too flexible - no common parent Controller No built-in Ajax support © 2007 Raible Designs, Inc.
  • 10. Stripes Pros: No XML - Convention over Configuration Good documentation (easy to learn) Enthusiastic community Cons: Small Community Not as actively developed as other projects Hard-coded URLs in ActionBeans © 2007 Raible Designs, Inc.
  • 11. Struts 2 Pros: Simple architecture - easy to extend Tag Library is easy to customize with FreeMarker or Velocity Controller-based or page-based navigation Cons: Documentation is poorly organized No feedback for missing properties or invalid OGNL expressions Googling results in Struts 1.x documentation © 2007 Raible Designs, Inc.
  • 12. Tapestry Pros: Very productive once you learn it Templates are HTML - great for designers Lots of innovation between releases Cons: Documentation very conceptual, rather than pragmatic Steep learning curve Long release cycles - major upgrades every year © 2007 Raible Designs, Inc.
  • 13. Wicket Pros: Great for Java developers, not web developers Tight binding between pages and views Active community - support from the creators Cons: HTML templates live next to Java code Need to have a good grasp of OO The Wicket Way - everything done in Java © 2007 Raible Designs, Inc.
  • 14. The Smackdown © 2007 Raible Designs, Inc.
  • 15. Evaluation Criteria Ajax Support: Is it built-in and easy to use? Bookmark-ability: Can users bookmark pages and return to them easily? Validation: How easy is it to use and does it support client-side (JavaScript) validation? Testability: How easy is it to test Controllers out of container? © 2007 Raible Designs, Inc.
  • 16. Evaluation Criteria, cont. Post and Redirect: How does the framework handle the duplicate post problem? Internationalization: How is i18n supported and how easy is it to get messages in Controllers? Page Decoration: What sort of page decoration/ composition mechanisms does the framework support? Community and Support: Can you get questions answered quickly (and respectfully)? © 2007 Raible Designs, Inc.
  • 17. Evaluation Criteria, cont. Tools: Is there good tool (particularly IDE) support for the framework? Marketability of Skills: If you learn the framework, will it help you get a job? Job Count: What is the demand for framework skills on dice.com and indeed.com? © 2007 Raible Designs, Inc.
  • 18. Ajax Support Is Ajax support built-in and easy to use? JSF: No Ajax support, use ICEfaces and Ajax4JSF Stripes: No libraries, supports streaming results Struts 2: Dojo built-in, plugins for GWT, JSON Spring MVC: No libraries, use DWR & Spring MVC Extras Tapestry: Dojo built-in in 4.1 Wicket: Dojo and Script.aculo.us (Wicket Stuff) © 2007 Raible Designs, Inc.
  • 19. Bookmarking and URLs JSF does a POST for everything - URLs not even considered Stripes uses conventions, but you can override Struts 2 has namespaces - makes it easy Spring MVC allows full URL control Tapestry still has somewhat ugly URLs Wicket allows pages/URLs to be mounted © 2007 Raible Designs, Inc.
  • 20. Validation JSF has ugly default messages, but easiest to configure Spring MVC allows you to use Commons Validator - a mature solution Struts 2 uses OGNL for powerful expressions - client-side only works when specifying rules on Actions Tapestry has very robust validation - good messages without need to customize Stripes and Wicket do validation in Java - no client- side © 2007 Raible Designs, Inc.
  • 21. Testability Spring and Struts 2 allow easy testing with mocks (e.g. EasyMock, jMock, Spring Mocks) Tapestry appears difficult to test because page classes are abstract, Creator class simplifies JSF page classes can be easily tested and actually look a lot like Struts 2 actions Wicket has WicketTester, a powerful solution Stripes has Servlet API Mocks and MockRoundtrip © 2007 Raible Designs, Inc.
  • 22. Post and Redirect The duplicate-post problem: redirect after POST Is there support for allowing success messages to live through a redirect? Spring MVC allows you to add parameters to a redirect Stripes, Tapestry and Wicket all have quot;flashquot; support Struts 2 requires a custom solution JSF requires a custom solution, i18n messages difficult to get in page beans © 2007 Raible Designs, Inc.
  • 23. Internationalization JSTL’s <fmt:message> tag makes it easy No standard for getting i18n messages in controller classes Stripes, Spring MVC and JSF use a single ResourceBundle per locale Struts 2, Tapestry and Wicket advocate separate files for each page/action JSF requires resource bundle to be declared on each page Tapestry's <span key=quot;key.namequot;> is awesome © 2007 Raible Designs, Inc.
  • 24. Page Decoration Tiles Experience: used since it first came out SiteMesh is much easier to setup and use Tiles can be used in Struts 2, Spring and JSF Requires configuration for each page SiteMesh can be used with all frameworks Requires very little maintenance after setup SiteMesh not supported or recommended for use with JSF, Tapestry or Wicket © 2007 Raible Designs, Inc.
  • 25. Marketability of Skills Struts 1 is still in high-demand and widely-used Spring is getting more press, but mostly due to the framework’s other features JSF is becoming popular; awful with JSP Struts 2 is gaining ground, but very scarce on job boards Tapestry has increased in popularity in last couple years Wicket and Stripes are virtually unknown © 2007 Raible Designs, Inc.
  • 26. Pretty Graphs © 2007 Raible Designs, Inc.
  • 27. Dice.com Job Count Struts 2 800 Spring MVC 748 Stripes JSF 600 Wicket Tapestry 400 200 98 77 69 0 20 15 November 14, 2007 © 2007 Raible Designs, Inc.
  • 28. Dice Job with Struts 1.x Struts 2 3,000 Spring MVC Stripes JSF 2,250 Wicket 2,249 Tapestry Struts 1 1,500 750 748 0 77 98 20 69 15 November 14, 2007 © 2007 Raible Designs, Inc.
  • 29. Job Trends © 2007 Raible Designs, Inc.
  • 30. Job Trends vs. Struts © 2007 Raible Designs, Inc.
  • 31. Job Trends vs. J2EE © 2007 Raible Designs, Inc.
  • 32. Job Trends vs. Java © 2007 Raible Designs, Inc.
  • 33. Employer Search on Monster.com Resumes posted in last 2 weeks 600 Struts 2 592 Spring MVC 480 Stripes Wicket 360 JSF Tapestry 240 120 75 84 49 0 11 12 © 2007 Raible Designs, Inc.
  • 34. Mailing List Traffic Struts Stripes MyFaces Tapestry Wicket 0 500 1,000 1,500 2,000 * Spring MVC is not listed here because they have a forum instead of a mailing list and I couldn’t figure out a way to count the number of messages for each month. © 2007 Raible Designs, Inc.
  • 35. Releases in 2007 10.0 Struts 2 Spring MVC Stripes 7.5 MyFaces Wicket 6 Tapestry 5.0 4 2.5 2 2 2 1 0 © 2007 Raible Designs, Inc.
  • 36. Tools Available 15.00 Struts 2 Spring MVC Stripes 11.25 12 Wicket JSF Tapestry 7.50 7 3.75 4 3 3 0 May 2007 © 2007 Raible Designs, Inc.
  • 37. Books on Amazon 10.0 10 Struts 2 Spring MVC Stripes 7.5 JSF 7 Wicket Tapestry 5.0 4 2.5 3 2 0 October 2007 © 2007 Raible Designs, Inc.
  • 38. How do you choose? © 2007 Raible Designs, Inc.
  • 39. Eliminate, Don’t Include © 2007 Raible Designs, Inc.
  • 40. © 2007 Raible Designs, Inc.
  • 41. 6 Important Factors What type of Application are you building? Ease of Development / Is full-stack an option? Project Community Project Future and Roadmap Maintenance Technical Features © 2007 Raible Designs, Inc.
  • 42. Don’t believe the Hype Don’t believe blogs and articles Try it yourself Believe developers, not evangelists Believe developers that are experienced with the framework and have used it in production Beware of corporate interests - they can twist marketing Books are a good sign © 2007 Raible Designs, Inc.
  • 43. Best Tool for the Job Frameworks have sweet spots - is your application one of them? Pick 2-3 frameworks for your type of application... ... and prototype! If prototyping is painful, switch Make sure you prototype more than one and do a presentation comparing the pros and cons of each © 2007 Raible Designs, Inc.
  • 44. After Choosing... Document the reasons for your decision Allow developers to challenge it Allow your prototype to be written with other frameworks Don’t be afraid to try new frameworks Don’t be afraid to use old frameworks Don’t be afraid to keep your existing framework © 2007 Raible Designs, Inc.
  • 45. What do I think? © 2007 Raible Designs, Inc.
  • 46. © 2007 Raible Designs, Inc.
  • 47. Conclusion The future is bright because of all the competition Developers should know more than one web framework You should try a framework before dissing it The plethora of web frameworks is a good thing! Doing proper research can save time and money Testing is the best path to future maintenance © 2007 Raible Designs, Inc.
  • 48. Questions? matt@raibledesigns.com http://raibledesigns.com Download presentation from: http://raibledesigns.com/rd/page/publications © 2007 Raible Designs, Inc.