Is there a future for MVC architecture? And is it near the end of life of Struts?

During last few days I bumped from gardening hobby into JSF (JavaServer Faces), actually it's JSF 2. Attracting to my attention is not because of JSF is Oracle backed, propagandaed and carpet bombed, but also because JSF becomes everyone's darling, again!

Remember I had a discussion with people's favourite Italian boy Dino Baetano about JSF, while we concluded that poor performance in the early implementation of JSF (JSF 1) kill a lot enthusiastic Java developers. This is almost announce a death penalty to JSF. Time fly till I come across this article wrote in 2005 on based on JSF 1, giving architectural overview of JSF, overturn the "bias and discrimination" I had to JSF before. Interesting enough, there is comparison of MVC 2 architecture, represented by Struts vs. event driven, component development, represented by JSF.

Richard Hightower, author of this article, claims against Struts is that it can feel more procedural than object-oriented, and doesn't offer a component model from the core package. Struts makes the mistake of separating behaviour and state, which leaves many Java developers feeling like they're programming COBOL!

This is a serious allegation.

MVC 1 architecture was a small revolution in OO world when it came out of the corner. But it never helps reducing the tedious work for developers. Not ever getting better, MVC 2 model is still a heavy approach. So it's not strange that Ruby on Rails and Google Web Toolkit (GWT) come out as alternative solutions for web applications.

Back to JSF 2, which has harvested all the evolutionary fruits from JEE 6, Spring, Ruby, is getting up to another level. For example:

• Fine-grained event driven development and events are easily tied to server-side code
• Component based development. Reusable components enforce Don't Repeat Yourself (DRY) principle
• Annotation and IoC support simplifies codes and makes them less
• Enforces Convention over Configuration (CoC) principle
• Controller classes aren't tied to JSF at all, making them easier to test
• The statefulness of the components is provided through the JSF framework. On the contrary, maybe it's backdrop for poor response from application.

Oh man, is it time we shall give another look of JSF?