A mechanism for defining the sequence in which pages in a JavaServer Faces application are displayed.
A framework for building server-side user interfaces for Web applications written in the Java programming language.
A user interface control that outputs data to a client or allows a user to input data to a JavaServer Faces application.
A mechanism for validating the data a user inputs to a JavaServer Faces UI component.
JSP simply provides a Page which may contain markup, embedded Java code, and tags which encapsulate more complicated logic / html. JSF may use JSP as its template, but provides much more. This includes validation, rich component model and lifecycle, more sophisticated EL, separation of data, navigation handling, different view technologies (instead of JSP), ability to provide more advanced features such as AJAX, etc.