This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
I'm not sure I'd agree that Faces is more complex - meaning harder to use in all cases. Building very basic Faces apps is very trivial and on par and perhaps even easier than Struts.
I would say that Faces is more sophisticated though. This is due to the fact that it provides more technology with its UI component model. This is where the power of Faces can be observed especially when you look at the growing collection of powerful Faces components that are being offered such as MyFaces (Tomahawk, Trinidad ..) as well as WebGalileo, ESRI, Sun's Studio components etc..
Advantages of JSF (vs. Struts): Custom components � JSF makes it relatively easy to combine complex GUIs into a single manageable component; Struts does not � Support for other display technologies � JSF is not limited to HTML and HTTP; Struts is � Access to beans by name � JSF lets you assign names to beans, then you refer to them by name in the forms. Struts has a complex process with several levels of indirection where you have to remember which form is the input for which action. � Expression language � The JSF expression language is more concise and powerful than the Struts bean:write tag. � This is less advantageous if using JSP 2.0 anyhow. Simpler controller and bean definitions � JSF does not require your controller and bean classes to extend any particular parent class (e.g., Action) or use any particular method (e.g., execute). Struts does. � Simpler config file and overall structure � The faces-config.xml file is much easier to use than is the struts-config.xml file. In general, JSF is simpler. � More powerful potential tool support � The orientation around GUI controls and their handlers opens possibility of simple to use, drag-and-drop IDEs
JSF and Struts: The Future: Possibilities � JSF will fail and developers that want a framework will stick with Struts � JSF will die � Not impossible, since other MVC frameworks have failed already � JSF will flourish and replace Struts � Struts will die � JSF will grow moderately, and developers will be split � Both Struts and JSF will be widely used frameworks � Prediction is difficult � Technical factors are not usually what decide these things � Recommendations � Migrate ongoing Struts projects to JSF: not yet � Start real-world JSF projects: yes, but with some caution