Java EE vs JSP vs JSF

Eu estou olhando para aprender uma tecnologia Java para o desenvolvimento de aplicações web. Quando olhei mais para isso, fiquei confuso entre jsf , jsp e javaee . Eu sei que existem várias postagens no SO ( post 1 , post 2 ) que tentam resolver essas confusões, eu tenho mais algumas em cima delas:

  1. JSP está “morto” em favor do JSF?
  2. O Java EE é a plataforma em que o JSF é executado ou algo totalmente diferente?
  3. O JSF é meramente um framework MVC para desenvolvimento de aplicações web?
  4. O JSF é um framework desenvolvido pela Oracle e parte do Java, ou é um framework separado (assim como o Zend Framwork é do PHP)?
  5. [Bonus] Você recomendaria aprender jsp ou jsf ?

Em sua resposta, sinta-se à vontade para comparar qualquer uma dessas tecnologias a coisas como ASP.NET, ASP.NET MVC, Ruby on Rails, Zend Framework ou Java Applets comuns, pois são coisas com as quais já estou familiarizado.

Obrigado pelo seu tempo.

JSP está “morto” em favor do JSF?

O JSF tem inúmeros benefícios sobre o JSP. Por exemplo:

  • Define uma abordagem MVC
  • Ele estabelece padrões de componentização
  • Aplicou-se recurso de valores
  • AJAX embutido
  • Um controle de contexto de visualização definido
  • Permite interfaces ricas como extensões Primefaces

E nós podemos continuar e continuar.

Você ainda pode usar o JSP para outros cenários em que precisa de alguma flexibilidade ou desempenho específico, e a mesma coisa para os servlets, mas o JSF praticamente substituiu o JSP por aplicativos “robustos”.

Agora, sou um grande fã do JSF, mas ainda tem um longo caminho pela frente. O JSF 2.2 parece um framework maduro agora que ele tem um padrão de navegação definido ( FacesFlow ), e nós apenas temos um uploader de arquivos embutido em 2.1 e não é nem mesmo AJAX, e há “HTML5”, etc. há muito mais trabalho a ser feito que não detalharei aqui.

Na minha experiência, o JSP é na verdade “morto” se comparado ao JSF e outros frameworks como o Spring MVC e outros. O tutorial do Java EE 7 quase nada diz sobre o JSP. Mas não está morto, já que já é suportado em Web Containers e você ainda pode usá-lo.

O Java EE é a plataforma em que o JSF é executado ou algo totalmente diferente?

O JSF faz parte do Java EE, mas você não precisa do perfil completo do Java EE para usar o JSF. Exemplos:

  • O Tomcat é apenas uma implementação do Perfil da Web Java EE e você pode usar o JSF no Tomcat.
  • Você pode usar o JSF no JBoss, mas não precisa ativar o JMS para que o JSF funcione.

Os componentes do Java EE são modulares e você só precisa de um servidor / contêiner de Perfil da Web para usar o JSF.

O JSF é meramente um framework MVC para desenvolvimento de aplicações web?

Sim (mas eu não diria apenas ). Cada um tem seus próprios prós e contras. Mas o princípio é o mesmo.

Pode-se argumentar sobre a integração com o EJB, assim como o Spring MVC com seu próprio contêiner.

O JSF é um framework desenvolvido pela Oracle e parte do Java, ou é um framework separado (assim como o Zend Framwork é do PHP)?

A Oracle agora delega a equipes para definir a especificação. Em teoria, você pode implementar seu próprio JSF se quiser. Eu não sei sobre o Zend Framework do PHP.

As implementações mais comuns do JSF são o Mojarra e o MyFaces. (Luiggi me bateu neste momento, você pode verificar os links dele).

[Bonus] Você recomendaria aprender jsp ou jsf?

Eu recomendaria ambos. JSP primeiro e JSF depois dele.

Mas eu recomendaria 100% que você usasse o JSF para seus projetos. Mas certifique-se de entender a componentização e todas as coisas que fazem do JSF uma ferramenta poderosa.

Confira também os novos resources do JSF 2.2 , esta página é incrível para uma introdução sobre os resources mais recentes adicionados ao framework.

JSP está “morto” em favor do JSF?

Não, ainda é mantido para aplicativos da Web legados e atuais como tecnologia de visualização. Além disso, o JSF trabalha com o JSP como view, mas desde o JSF 2 é melhor usar o Facelets como a visão de tecnologia. As razões são explicadas aqui: Por que os Facelets são preferidos ao JSP como a linguagem de definição de visualização do JSF2.0 em diante? . Em suma, o Facelets suporta pré e pós-processamento do conteúdo a ser renderizado, enquanto o JSP não o faz.

O Java EE é a plataforma em que o JSF é executado ou algo totalmente diferente?

O JSF pode ser executado por conta própria em qualquer servidor de aplicativos da web Java. Você só precisa adicionar as bibliotecas necessárias: JSF-api e JSF-impl.

O JSF é meramente um framework MVC para desenvolvimento de aplicações web?

Sim. Ele não fornece nenhuma ajuda para geração de serviços da Web, pool de conexões, gerenciamento de transactions, etc. Ele suporta injeção EJB por meio de @EJB e injeção de parâmetros por meio de @ManagedProperty , mas isso é tudo. Você pode usar outros frameworks para fazer o trabalho: Hibernate, EJB, Spring, CDI, etc.

O JSF é um framework desenvolvido pela Oracle e parte do Java, ou é um framework separado (assim como o Zend Framwork é do PHP)?

O JSF é suportado pelo JSR 344 . Esta especificação é suportada pelo Java Community Process , que é suportado pelo Oracle. A partir disso, você pode inferir que pelo menos o Oracle fornece uma implementação para o JSF. Como o JSF é uma especificação, ele também pode ser implementado por outras organizações. Atualmente, há outra implementação para o JSF, o MyFaces .

Você recomendaria aprender jsp ou jsf ?

Isso é como perguntar se eu deveria aprender como criar HTML ou como usar um conjunto de bibliotecas que criará HTML para mim? . JSP é uma tecnologia criada para a exibição de aplicativos da Web que suporta conteúdo dynamic pelo uso da tecnologia Java. O JSF é uma estrutura MVC que ajuda a facilitar a geração do conteúdo na visualização (JSP ou Facelets) e a vinculação de dados por meio da visualização, do controlador e do modelo. Você pode aprender as duas coisas ao mesmo tempo e recomendo que você aprenda o que está usando atualmente ou o que vai usar. No IMO, você deve aprender ambos: JSF para desenvolver aplicativos JSF e JSP para trabalhar com outras estruturas MVC ou para manter aplicativos legados atuais construídos com JSP.

1. O JSP está “morto” em favor do JSF?

No reino de JAVA EE JSP é anunciado “obsoleto”. Em um mundo mais amplo, está bem vivo.

2. É Java EE a plataforma JSF é executado em cima ou algo diferente completamente?

Depende de onde fica o “top”. Os servlets são o porão da maioria das estruturas Java, incluindo o JSF.

3. O JSF é meramente um framework MVC para desenvolvimento de aplicações web?

Sim, é a sensação de que o JSF é uma estrutura de camada de apresentação .

4. O JSF é um framework desenvolvido pela Oracle e parte do Java, ou é um framework separado (assim como o Zend Framwork é do PHP)?

O JSF é uma parte oficial do Java EE 7 da Oracle.

5. [Bonus] Você recomendaria aprender jsp ou jsf?

Ambos, a uma certa profundidade. Considere também HybridJava – é o mesmo poderoso que o JSF, mas duas vezes mais simples.