Articulo de referencia

Lenguaje de expresión de Yakarta

El lenguaje de expresiones de Jakarta ( EL ; anteriormente conocido como lenguaje de expresiones y lenguaje de expresiones unificado ) es un lenguaje de programación de propósit...

El lenguaje de expresiones de Jakarta ( EL ; anteriormente conocido como lenguaje de expresiones y lenguaje de expresiones unificado ) es un lenguaje de programación de propósito especial que se utiliza principalmente en aplicaciones web de Jakarta EE para incrustar y evaluar expresiones en páginas web. Los redactores de especificaciones y los grupos de expertos de las tecnologías de la capa web de Java EE han trabajado en un lenguaje de expresiones unificado que se incluyó por primera vez en la especificación JSP 2.1 (JSR-245) y, posteriormente, se especificó de forma independiente en JSR-341, parte de Java EE 7.

Historia

Origen como JSTL

El lenguaje de expresiones surgió como parte de la biblioteca de etiquetas estándar de JavaServer Pages (JSTL) y originalmente se llamaba SPEL (Simplest Possible Expression Language), y luego simplemente Expression Language ( EL ). Era un lenguaje de scripting que permitía acceder 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 facilitar el acceso a los componentes Java (en comparación con el código Java).

JSP 2.0

Con el paso de los años, el lenguaje de expresiones ha evolucionado para incluir funcionalidades más avanzadas y se incorporó a la especificación JSP 2.0. La creación de scripts se simplificó para los diseñadores de contenido web con escasos o nulos conocimientos del lenguaje Java. Este lenguaje de scripting convirtió a JSP en un lenguaje de scripting en el sentido estricto de la palabra. Antes de EL, JSP consistía en etiquetas especiales como `scriptlets` , `expressions`, 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 las llamadas adecuadas a los métodos Java básicos.

EL era, tanto sintáctica como semánticamente, similar a las expresiones de JavaScript :

  • No hay conversión de tipos.
  • Las conversiones de tipo generalmente se realizan de forma implícita.
  • Las comillas dobles y simples son equivalentes.
  • object.propertytiene 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.propertypuede significar (dependiendo de lo que objectsea) 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 requería un lenguaje de expresiones. Sin embargo, el lenguaje de expresiones definido en la especificación de JSP 2.0 no satisfacía todas las necesidades de desarrollo con la tecnología JSF. Las limitaciones más evidentes eran que sus expresiones se evaluaban inmediatamente y que los componentes JSF no podían invocar métodos en objetos del lado del servidor. Se creó un lenguaje más potente con las siguientes nuevas características:

  • 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 expresiones funcionó bien para JSF. Sin embargo, los desarrolladores tuvieron problemas al integrar el lenguaje de expresiones de JSP con el de JSF debido a conflictos. Debido a estas incompatibilidades, se inició la iniciativa del lenguaje de expresiones unificado para unificar estos lenguajes. A partir de JSP 2.1, los lenguajes de expresiones de JSP 2.0 y JSF 1.1 se fusionaron en un único lenguaje de expresiones unificado (EL 2.1).

EL 3.0

La versión 3.0 del lenguaje de expresiones (el lenguaje 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 equivalentes EL de los flujos y expresiones lambda de Java 8. [ 1 ]

EL 4.0

La versión 4.0 se publicó el 7 de octubre de 2020. [ 2 ] La API se trasladó del paquete javax.el al paquete jakarta.el, como parte de la transición de Java EE a Jakarta EE. Parte de Jakarta EE 9.

EL 5.0

La versión 5.0 se publicó el 5 de septiembre de 2022. [ 3 ] Se eliminó un método obsoleto, se aclararon ambigüedades en la especificación y se añadieron pequeñas mejoras de usabilidad. Forma parte de Jakarta EE 10.

Características

El EL unificado es una unión de los lenguajes de expresiones JSP y JSF. Además de las características ya disponibles en el EL de JSP, el EL unificado cuenta con las siguientes características:

  • Evaluación diferida
  • Compatibilidad con expresiones que pueden establecer valores y expresiones que pueden invocar métodos.
  • Una API conectable para resolver expresiones

Ejemplos

Esto muestra un ejemplo sencillo del uso de Unified EL dentro de una etiqueta JSTL "c:out":

<c:out value="${myBean.myField}" />

Una expresión que llama a un método con un parámetro:

${myBean.addNewOrder('orderName')}

Implementaciones

  • Java Expression Language (JEXL) es una biblioteca diseñada para facilitar la implementación de funciones dinámicas y de scripting en aplicaciones y frameworks escritos en Java. Última versión: 3.2.1, 25 de junio de 2021.
  • JUEL es una implementación de código abierto del Lenguaje Unificado de Expresiones (EL), especificado en el estándar JSP 2.1 (JSR-245). Se considera estable y completo en cuanto a funcionalidades, y está licenciado bajo la Licencia Apache 2.0 . JUEL también es apto para su uso en aplicaciones que no utilizan JSP. Última versión: 2.2.7, 6 de febrero de 2014.
  • Apache Commons EL es el intérprete EL de JSP 2.0 de Apache. Última versión: 1.0, 20 de junio de 2003. Los enlaces de descarga del código fuente y del binario están rotos.

Véase también

  • OGNL : un lenguaje EL de código abierto utilizado por WebWork (y Struts 2).
  • MVEL : un lenguaje EL de código abierto utilizado en muchos proyectos basados ​​en Java.
  • SpEL – Spring Expression Language, es un lenguaje EL de código abierto que forma parte del Spring Framework . Se utiliza principalmente en proyectos del portafolio de Spring, pero debido a su independencia tecnológica, puede emplearse en otros proyectos.
  • Ant-Flaka : diseñado para simplificar los scripts de compilación de Ant con la ayuda de EL.
  • CEL – Un EL de código abierto desarrollado por Google.

Referencias

  1. "Desviación estándar: una ilustración del lenguaje de expresiones 3.0 en un entorno de servlets | Java.net" . Archivado del original el 27 de septiembre de 2013. Consultado el 24 de septiembre de 2013 .
  2. "Jakarta Expression Language 4.0.0" . Archivado del original el 9 de enero de 2021. Consultado el 5 de enero de 2021 .
  3. "Jakarta Expression Language 5.0.0" . Archivado del original el 13 de mayo de 2024. Consultado el 1 de septiembre de 2024 .
  • Sitio web oficialEdita esto en Wikidata
  • JSR 245: JavaServer Pages 2.1
  • Lenguaje de Expresiones Unificado (artículo en Sun Developer Network (SDN))
  • Lenguaje de expresión
  • Lenguaje de expresiones unificado para JSP y JSF (artículo en java.net)