Is JSP "dead" in favor of JSF?
No, it is still maintained for legacy and current web applications as view technology. Also, JSF works with JSP as view, but since JSF 2 it is better to use Facelets as the technology view. The reasons are explained here: Why Facelets is preferred over JSP as the view definition language from JSF2.0 onwards?. In short, Facelets supports pre and post processing of the content to render, while JSP doesn't.
Is Java EE the platform JSF runs on top of or something different altogether?
JSF can run by its own in any Java web application server. You just need to add the necessary libraries: JSF-api and JSF-impl.
Is JSF merely an MVC framework for developing web applications?
Yes. It doesn't provide any help for web service generation, connection pooling, transaction management, etc. It supports EJB injection through @EJB
and parameters injection through @ManagedProperty
, but that's all. You may use other frameworks to do the job: Hibernate, EJB, Spring, CDI, etc.
Is JSF a framework developed by Oracle and part of Java, or is it a separate framework altogether (Much like the Zend Framwork is from PHP)?
JSF is supported by by JSR 344. This specification is supported by the Java Community Process, which is supported by Oracle. From this, you can infer that at least Oracle provides an implementation for JSF. Since JSF is a specification, it can be implemented by other organizations as well. Currently, there's another implementation for JSF, MyFaces.
Would you recommend learning jsp or jsf?
This is like asking should I learn how to create HTML or how to use a library set that will create HTML for me?. JSP is a technology made for the view of web applications that supports dynamic content by usage of Java technology. JSF is a MVC framework that helps you to ease the generation of the content in view (JSP or Facelets) and data binding through the view, controller and the model. You can learn both at the same time, and I recommend you to learn what you're currently using or what you will use. IMO you should learn both: JSF to develop JSF applications, and JSP to work with other MVC frameworks or to maintain current legacy applications built with JSP.