JSF is a Java specification and framework for building component-based user interfaces for web applications. It uses the MVC design pattern with reusable UI components, and handles tasks like data conversion, validation, event handling and navigation. The JSF architecture includes a component tree, request processing lifecycle and rendering model. New features in JSF 2 include Facelets as the default view declaration language, annotation-based configuration, standardized Ajax support, and improved error handling. Developing with JSF involves creating managed bean models, registering them, building pages with UI components, defining navigation, and configuring the web application in web.xml.