1.What does it take to use struts implementation in an existing project? If the project is vast in scope does how much developing effort is involved in the migration? I know you can't give very specific answers to such questions but does it pay off in the long run to implement struts.
Struts is one of the easier frameworks to use to slowly migrate an existing web application. It doesn't try to take over the normal request/response behavior of the application. We have a lot of experience slowly migrating existing applications to Struts with greate success.
2.Does it create any dependencies?
It does create workflow dependencies on the framework, but you avoid any dependencies in your database or business rules classes.
3.What makes you decide a particular project is the best candidate for using the framework?
Any project that benefits from Model 2 (which is virtually any project) is a good candidate. Especially if it currenly exists as a messy pile of
servlets and/or JSPs. You can migrate it to Struts to clean up the architecture and design.
I mean are there many applications that are developed for swing and web-ui interface and thereby making struts irrelevant in those cases?
At some point, you have to interact with the real world (whether it be web or Swing). However, you can design your applications to take advantage of Model 2 and create database and business rules classes that can be reused in a desktop application. In fact, in the book I advocate writing boundary and entity classes that never import any web api classes.
What would be the best framework to choose if there is a strong business case to support swing and web ui?
Any framework that offers good support for Model 2.
Does that alternative perform better than struts and at the same time manages to remain generic? But then since its generic would it be able to provide us with HTTP centric features?
Tapestry removes the dependence on HTTP facilities and replaces them with its own. Writing Tapestry applications is more like writing desktop applications. However, now you are coupled to Tapestry instead of Web or desktop.
Completely generic yet offers all the features of the underlying platform...hmmmmm. If you find that, please let me know!
Neal Ford<br />Author, <i>Art of Java Web Development: Struts, Tapestry, Commons, Velocity, JUnit, Axis, Cocoon, InternetBeans, WebWork</i><br /><a href="http://www.nealford.com" target="_blank" rel="nofollow">www.nealford.com</a>