JSP does not enforce HTML browsers as a client. The client could be a portal, Wireless Application Protocol (WAP) browser, a handheld device, or something more “exotic” as discussed later.
Both the nature of this programming model and the focus on “tool-ability” during the design of JSF makes it a suitable foundation for both rapid application development (RAD) environments (appealing to the business programmer and RAD developers) as well as more fully featured code-centric integrated development environments (IDEs). This tool-ability is still a focus of the standards body through JSR-276: Design Time Metadata for JSF Components (see http://www.jcp.org/en/jsr/detail?id=276), which aims at ensuring that components from different vendors can be correctly rendered in every IDE that supports JSF.
But JSF is not a sparse framework. Although the basic concepts are simple and approachable, the expert programmer has an immense amount of flexibility and power over the way the framework operates. Everything is pluggable.