You're comparing apples to oranges. Or maybe kumquats. JSF is about building web applications (where the logic and interaction resides on the server). Swing is about building rich client applications. I'm sure you can get beautiful looking applications through a host of web application frameworks (including JSF), but the interaction model is different. Whether it works for you depends on what your application/user needs are.