Diferencia entre JSP EL, JSF EL y Unified EL [cerrado]

122

Me gustaría saber la diferencia detallada entre los lenguajes de expresión (EL). Hay JSP EL, JSF EL y Unified EL.

Me gustaría saber la historia detrás del EL y cuál es el último EL que se usa en las aplicaciones Java EE. ¿Es el EL común para todas las tecnologías de visualización en las últimas versiones?

Krishna
fuente

Respuestas:

221
  • Junio ​​de 2002: JSTL 1.0 se introdujo con EL por primera vez. Eran esas ${}cosas que funcionan solo en etiquetas JSTL. Está diseñado para llamar a getmétodos Javabean .

  • Noviembre de 2003: se introdujo JSP 2.0 y EL se trasladó de JSTL 1.0 a JSP 2.0 en el javax.servlet.jsp.elpaquete y se convirtió en EL estándar como parte del estándar J2EE 1.4. JSTL 1.1 fue enviado sin EL. Ahora ${}funciona también fuera de las etiquetas JSTL en el texto de la plantilla JSP.

  • Mar 2004: JSF 1.0 se introdujo con EL diferido en el javax.faces.elpaquete. Eran esas #{}cosas que funcionan solo dentro de las etiquetas JSF. La diferencia con el estándar JSP EL ${}es que no solo funciona get, sino que también puede funcionar set. Esto era obligatorio para la creación automática de beans gestionados y para establecer los valores de los componentes de entrada. El EL estándar también ${}funciona en las etiquetas de salida JSF, pero no crearán automáticamente beans si aún no existen en el ámbito y no establecerán valores de entrada.

  • Mayo de 2005: mientras se preparaba para el nuevo JSP 2.1 que debería lanzarse en mayo de 2006, el EL diferido #{}se extrajo de JSF y se combinó con EL estándar ${}en el javax.elpaquete. En ese momento, se convirtió en EL unificado, que se introdujo con JSF 1.2 y luego se convirtió en parte de JSP 2.1 y el estándar Java EE 5. El #{}ahora también puede ser utilizado en las etiquetas JSP a getlos valores, pero no a setlos valores. La ${}lata ahora en JSP también crea automáticamente beans gestionados, pero no setvalores.

  • Nov 2006: Facelets fue presentado como sucesor de JSP. Permitía el uso de #{}texto de plantilla fuera de las etiquetas JSF, como sustituto <h:outputText>sin ningún atributo. También se trata ${}como #{}, por lo que ambos se comportan igual en Facelets.

  • Diciembre de 2009: EL se extrajo de la especificación JSP y se convirtió en una especificación independiente que se mantendrá independientemente de JSP, siendo la primera versión EL 2.2 (JSR-245), análoga a JSP 2.2. La nueva característica principal es llamar a métodos parametrizados en lugar de solo llamar a getters / setters Javabean dentro de la #{}sintaxis, por ejemplo #{bean.method(argument)}. Además, Facelets se convirtió en parte del estándar Java EE 6.

  • Junio ​​de 2013: se introdujo EL 3.0, que viene con un procesador EL independiente, lo que permite su uso en una aplicación Java SE simple. Otras nuevas características principales son el nuevo operador de concatenación de cadenas +=, nuevas operaciones para objetos de colección, incluidas secuencias y expresiones Lambda ->(¡incluso en Java 6/7!) E importación de constantes en el ámbito EL.

BalusC
fuente
18

Agregando a la respuesta de BalusC ...

EL fue originalmente concebido e implementado por Nathan Abramson de Art Technology Group en 2001. En ese momento, la implementación se conocía como Lenguaje de expresión posible más simple (SPEL). La implementación se incluyó posteriormente en JSTL1.0. Nathan era parte del grupo de expertos JSR-052 , y fue acreditado en la especificación JSTL como la fuerza impulsora detrás del lenguaje de expresión.

"Mención especial a Nathan Abramson por ser una fuerza impulsora detrás del lenguaje de expresión introducido en JSTL"

jsears
fuente