Diferença entre JSP EL, JSF EL e EL Unificado [fechado]

122

Gostaria de saber a diferença detalhada entre as Expression Languages ​​(EL). Existem JSP EL, JSF EL e EL Unificado.

Gostaria de conhecer a história por trás do EL e qual é o EL mais recente usado nos aplicativos Java EE. É comum o EL para todas as tecnologias de visualização nas versões mais recentes?

Krishna
fonte

Respostas:

221
  • Junho de 2002: O JSTL 1.0 foi introduzido com o EL pela primeira vez. Foram essas ${}coisas que funcionam apenas nas tags JSTL. Ele foi projetado para chamar getmétodos Javabean .

  • Novembro de 2003: o JSP 2.0 foi introduzido e o EL foi movido do JSTL 1.0 para o JSP 2.0 no javax.servlet.jsp.elpacote e tornou-se o EL padrão como parte do padrão J2EE 1.4. O JSTL 1.1 foi enviado sem EL. Agora ${}funciona também fora das tags JSTL no texto do modelo JSP.

  • Março de 2004: O JSF 1.0 foi introduzido com o EL diferido no javax.faces.elpacote. Foram essas #{}coisas que funcionam apenas dentro das tags JSF. A diferença com o JSP EL padrão ${}é que ele não apenas funciona get, mas também pode funcionar set. Isso era obrigatório para a criação automática de bean gerenciado e a configuração dos valores dos componentes de entrada. O EL padrão também ${}funciona nas tags de saída JSF, mas elas não criarão beans automaticamente se ainda não existirem no escopo e não definirão valores de entrada.

  • Maio de 2005: Enquanto ainda se preparava para o novo JSP 2.1, que deve ser lançado em maio de 2006, o EL diferido #{}foi extraído do JSF e combinado com o EL padrão ${}no javax.elpacote. Nesse ponto, tornou-se EL unificado, que foi introduzido com o JSF 1.2 e mais tarde tornou-se parte do JSP 2.1 e Java EE 5 padrão. O #{}agora também pode ser usado em tags JSP de getvalores, mas não setvalores. O ${}agora pode em JSP também criar automaticamente managed beans, mas não setvalores.

  • Novembro de 2006: Facelets foi introduzido como sucessor do JSP. Permitiu o uso de #{}no texto do modelo fora das tags JSF, como substituto <h:outputText>sem atributos. Também trata ${}como #{}, para que ambos se comportem da mesma maneira no Facelets.

  • Dezembro de 2009: O EL foi extraído da especificação JSP e tornou-se uma especificação autônoma que será mantida independentemente do JSP, a primeira versão sendo EL 2.2 (JSR-245), análoga ao JSP 2.2. O novo recurso principal é chamar métodos parametrizados em vez de chamar somente getters / setters Javabeanos dentro da #{}sintaxe, por exemplo #{bean.method(argument)}. Além disso, o Facelets passou a fazer parte do padrão Java EE 6.

  • Jun 2013: Foi introduzido o EL 3.0, que vem com um processador EL independente, permitindo o uso em um aplicativo Java SE simples. Outros novos recursos principais são o novo operador de concatenação de strings +=, novas operações para objetos de coleção, incluindo fluxos e expressões Lambda ->(mesmo em Java 6/7!) E importação de constantes no escopo do EL.

BalusC
fonte
18

Adicionando à resposta do BalusC ...

O EL foi originalmente concebido e implementado por Nathan Abramson, do Art Technology Group, em 2001. Na época, a implementação era conhecida como SPEL (Simplest Possible Expression Language). A implementação foi posteriormente incluída no JSTL1.0. Nathan fazia parte do JSR-052 Expert Group e foi creditado na especificação JSTL como a força motriz por trás da linguagem de expressão.

"Menção especial a Nathan Abramson por ser uma força motriz por trás da linguagem de expressão introduzida no JSTL"

jsears
fonte