JSP simply gives 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 gives much more. This contains validation, rich component model and lifecycle, more sophisticated EL, separation of data, navigation handling, dissimilar view technologies (instead of JSP), ability to give more advanced features such as AJAX, etc.