And its a component based architecture which is rendering format agnostic (HTML, WML, XHTML-MP, cHTML). So you can code one page which can render the contents in a different format depending on the client device. This is what the JSF MobileFaces library does when you hit the page from a mobile phone. It automatically renders the page in the proper format for the target device without the developer needing to worry about the details.
The problem is JSF is complicated, which can be very frustrating. For this reason I just use it as the underlying framework, which basically just directs to my GWT pages.