One of the main goals that Software architects try to achieve is to design solutions that will last a long time. You’ll often hear an architect say that the product will have a life span of about ten years, and that all technical choices should support this goal. This means that any framework you select today should not just solve your technical issues, but should preferable still be around in ten years, so you can still find people to support the software.
One obvious choice is to stick to standards. Many frameworks, especially java web frameworks, come and go, but the JEE standards stick around much longer. In this light, JSF can be considered a save choice, and Seam is a bit more risky.
What if you could go back in time 10 years, and redo the designs you created back then with the knowledge you have today? .Net was still beta, J2EE didn’t contain a standard MVC framework, object persistence was either done using entity beans or plain JDBC. With the knowledge you have today would you have stuck to the standards ten years ago?
Struts was first released in 2000, and it’s still around. So, not a bad choice ten years ago. But, both Java and .Net, the standard choices for enterprise software development, have changed quite a lot in ten years. Maybe picking something like PHP would have been the smart way to go? I think most software architects working in big companies underestimate the value of PHP.
Ok, so web development has changed a lot in the last ten years. We’ve learned a lot, and by now we probably have mature frameworks. It should be saver to stick to the standards, right?