JSF vs. JSP
O JavaServer Faces (também conhecido como JSF) é uma estrutura de aplicativo da web baseada em Java. Seu principal objetivo é simplificar a integração de desenvolvimento de interfaces de usuário baseadas na Web. É um Model View Controller (ou JVM) orientado por solicitação. Essa JVM específica é baseada no modelo de design de interface do usuário orientado a componentes, que usa modelos de visualização XML ou visualizações Facelet. Solicitações executadas pelo JSF são processadas pelo FacesServlet. Este componente carrega o modelo de visualização necessário, constrói uma árvore de componentes, processa eventos e renderiza a resposta - que geralmente é em HTML.
O JavaServer Pages (também conhecido como JSP) é uma tecnologia baseada em Java usada especificamente para ajudar desenvolvedores de software a servir páginas da web geradas dinamicamente (como HTML e XML), além de outros tipos de documentos pertinentes ao desenvolvimento de conteúdo da web interativo. Foi criado especificamente para responder ao ceticismo que a maioria dos desenvolvedores da Web tinha em relação à capacidade da plataforma Java de fornecer aos desenvolvedores suporte suficiente para a Web.
Os principais recursos do JSF incluem, entre outros, Managed Beans, que é um sistema de injeção de dependência; um sistema de componentes baseado em modelo, usado para composição rápida de componentes; e duas bibliotecas de tags baseadas em XML, que são usadas para expressar uma interface JSF dentro de um modelo de visualização.
Para todos os efeitos, JSP é um servlet Java sofisticado. As JSPs são carregadas no servidor e no aplicativo da Web Java EE, operadas e empacotadas como arquivos de arquivo .war ou .ear. Ele permite que o código Java e ações predefinidas específicas se comuniquem com o conteúdo estático da marcação na web. A página resultante dessa interação é compilada e executada nesse servidor específico e é visualizada como um documento HTML ou XML. É composto por dois estilos de sintaxe muito específicos: scriptlet e marcação - um scriptlet simplesmente sendo blocos de código Java que são misturados à marcação, que é o HTML ou XML padrão. As páginas JSP devem ser compiladas nas classes de bytecode Java para poderem ser executadas. No entanto, essa compilação realmente ocorre apenas uma vez - sempre que ocorre uma alteração no arquivo JSP de origem. Isso ocorre porque Java é uma linguagem compilada e não uma linguagem de script - significando que o código deve, essencialmente, ser traduzido para tornar o JSP compatível com o servidor.
Resumo:
1. JSF é um aplicativo da web usado para simplificar a integração de desenvolvimento de interfaces de usuário baseadas na web; JSP é uma tecnologia baseada em Java usada especificamente para ajudar desenvolvedores de software a criar páginas da web dinâmicas.
2. O JSF contém vários recursos principais, incluindo, mas não limitado a, Managed Beans, um sistema de componentes baseado em modelo e duas bibliotecas de tags baseadas em XML; JSP deve ser compilado no bytecode Java para funcionar corretamente.