El Jakarta Expression Language ( EL ; anteriormente Expression Language y Unified Expression Language) es un lenguaje de programación de propósito especial que se usa principalmente en las aplicaciones web de Jakarta EE para incrustar y evaluar expresiones en páginas web. Los escritores de especificaciones y los grupos de expertos de las tecnologías de nivel web Java EE han trabajado en un lenguaje de expresión unificado que se incluyó por primera vez en la especificación JSP 2.1 (JSR-245) y luego se especificó por sí mismo en JSR-341, parte de Java EE. 7.
Historia
Origen como JSTL
El lenguaje de expresión comenzó como parte de la biblioteca de etiquetas estándar de JavaServer Pages (JSTL) y originalmente se llamaba SPEL (lenguaje de expresión más simple posible), luego solo lenguaje de expresión ( EL ). Era un lenguaje de secuencias de comandos que permitía el acceso a componentes Java ( JavaBeans ) a través de JSP . Desde JSP 2.0 , se ha utilizado dentro de las etiquetas JSP para separar el código Java de JSP y para permitir un acceso más fácil a los componentes Java (que en el código Java).
JSP 2.0
A lo largo de los años, el lenguaje de expresiones ha evolucionado para incluir funciones más avanzadas y se incluyó en la especificación JSP 2.0. La creación de scripts se hizo más fácil para los diseñadores de contenido web que tienen poco o prácticamente ningún conocimiento del lenguaje Java principal. Este lenguaje de secuencias de comandos convirtió a JSP en un lenguaje de secuencias de comandos en el verdadero sentido. Antes de EL, JSP consistía en algunas etiquetas especiales como scriptlets , expresiones, etc. dentro de las cuales se escribía explícitamente el código Java. Con EL, el diseñador de contenido web solo necesita saber cómo realizar llamadas adecuadas a los métodos básicos de Java.
EL era, tanto sintácticamente como semánticamente, similar a las expresiones de JavaScript :
- no hay encasillamiento
- las conversiones de tipo generalmente se realizan implícitamente
- las comillas dobles y simples son equivalentes
object.property
tiene el mismo significado queobject['property']
EL también liberó al programador de tener que conocer las particularidades de cómo se accede realmente a los valores: object.property
puede significar (dependiendo de lo que object
sea) object.get("property")
o object.getProperty("property")
o, object.getProperty()
etc.
EL 2.1
Durante el desarrollo de JSP 2.0, se lanzó la tecnología JavaServer Faces que también necesitaba un lenguaje de expresión, pero el lenguaje de expresión definido en la especificación JSP 2.0 no satisfacía todas las necesidades de desarrollo con tecnología JSF. Las limitaciones más obvias fueron que sus expresiones se evaluaron inmediatamente y los componentes JSF no podían invocar métodos en objetos del lado del servidor. Se creó un lenguaje más poderoso con las siguientes características nuevas:
- Expresiones diferidas, que no se evalúan inmediatamente
- Expresiones que pueden establecer y obtener datos
- Expresiones de método, que pueden invocar métodos
El nuevo lenguaje de expresión funcionó bien para los propósitos de JSF. Pero los desarrolladores tuvieron problemas al integrar JSP EL con JSF EL debido a conflictos. Debido a estas incompatibilidades, se inició la iniciativa del lenguaje de expresión unificado para unificar estos lenguajes de expresión. A partir de JSP 2.1, los lenguajes de expresión de JSP 2.0 y JSF 1.1 se han fusionado en un solo lenguaje de expresión unificado (EL 2.1).
EL 3.0
La versión 3.0 del lenguaje de expresión (el unificado ya no se consideró necesario) se desarrolló en un JSR independiente de las especificaciones JSP y JSF en JSR-341 . Se agregaron algunas características nuevas, sobre todo los equivalentes EL de los flujos de Java 8 y las expresiones lambda. [1]
EL 4.0
La versión 4.0 fue lanzada en 2020-10-07. [2] La API pasó del paquete javax.el al paquete jakarta.el, como parte de la transición de Java EE a Jakarta EE.
Características
El EL unificado es una unión de los lenguajes de expresión JSP y JSF. Además de las características que ya están disponibles en JSP EL, el EL unificado tiene las siguientes características:
- Evaluación diferida
- Soporte para expresiones que pueden establecer valores y expresiones que pueden invocar métodos.
- Una API conectable para resolver expresiones
Ejemplos de
Esto muestra un ejemplo simple del uso de EL unificado dentro de una etiqueta "c: out" de JSTL:
Una expresión que llama a un método con un parámetro:
$ {myBean.addNewOrder ('orderName')}
Implementaciones
- Java Expression Language (JEXL) es una biblioteca destinada a facilitar la implementación de funciones dinámicas y de secuencias de comandos en aplicaciones y marcos escritos en Java. Último lanzamiento, Versión: 3.1, 14 de abril de 2017.
- JUEL es una implementación de código abierto del Lenguaje de expresión unificado (EL), especificado como parte del estándar JSP 2.1 (JSR-245). Se considera estable y con todas sus funciones, y tiene la licencia Apache License 2.0 . JUEL también es adecuado para su uso en aplicaciones que no son JSP. Última versión, versión 2.2.7, 6 de febrero de 2014.
- Apache Commons EL es el intérprete JSP 2.0 EL de Apache. Última versión, versión 1.0, 20 de junio de 2003. Los enlaces de descarga a la fuente y al binario están rotos.
Ver también
- OGNL : un EL de código abierto utilizado por WebWork (y Struts 2).
- MVEL : un EL de código abierto que se utiliza en muchos proyectos basados en Java.
- SpEL - Spring Expression Language, un EL de código abierto que forma parte de Spring Framework . Se usa principalmente en proyectos de cartera de Spring, pero debido a que es independiente de la tecnología, puede usarse en otros proyectos.
- Ant-Flaka : destinado a simplificar los scripts de compilación de Ant con la ayuda de EL.
- CEL : un EL de código abierto desarrollado por Google.
Referencias
- ^ "Copia archivada" . Archivado desde el original el 27 de septiembre de 2013 . Consultado el 24 de septiembre de 2013 .CS1 maint: copia archivada como título ( enlace )
- ^ "Jakarta Expression Language 4.0.0" . Consultado el 5 de enero de 2021 .
enlaces externos
- Página web oficial
- JSR 245: JavaServer Pages 2.1
- Lenguaje de expresión unificado (artículo en Sun Developer Network (SDN)
- Lenguaje de expresión
- Lenguaje de expresión unificado para JSP y JSF (artículo en java.net)