glassfish

Evolución del EL (expression language)

En un artículo en stackoverflowBauke Scholtz describe de una manera muy clara la evolución EL (expression language). En este post voy a traducirlo ya que me ha parecido muy interesante.

  • Jun 2002: JSTL 1.0 se presentó con EL por primera vez. Eran esas cosas ${} que funcionaban solo en las etiquetas JSTL. Estaban diseñadas para llamar a los métodos get de los Javabean.
  • Nov 2003: JSP 2.0 se presentó y EL fue transferido desde JSTL 1.0 a JSP 2.0 en el paquete javax.servlet.jsp.el y se convirtió en standard EL como parte de J2EE 1.4 standard. JSTL 1.1 llegó sin EL. En este momento ${} funcionaba fuera de las etiquetas JSTL y también en las plantillas  JSP.
  • Marzo 2004: JSF 1.0 se presentó con deferred EL en el paquete javax.faces.el.Eran esas cosas #{} que funcionaban solo dentro de las etiquetas JSF. La diferencia con standard JSP EL ${} era que no solamente podían hacer get, sino que también podían hacer set. Esto era obligatorio para la auto-creación de los managed bean y la asignación de los valores de los componentes input. El standard EL ${} también funciona en las etiquetas output de JSF, pero no pueden auto-crear beans si no existen previamente en el scope y no ‘setean’ (inicializan) valores.
  • Mayo 2005:  Mientras aún se preparaba una nueva versión  JSP 2.1 que debería ser lanzada en Marzo 2006, deferred EL #{}se trasladó desde JSF  y se combinó con standard EL ${} en el paquete javax.el. En este punto se vino a llamar unified EL el cual se presentó dentro de JSF 1.2 y se convirtió en un estándar de JSP 2.1 y Java EE 5. Los #{} ahora también se pueden usar en etiquetas JSP para recoger valores (get) pero no para establecerlos (set).
  • Nov 2006: Facelets se presenta como un sucesor de JSP. Permite el uso de #{} en plantillas fuera de etiquetas JSF, como sustituto de <h:outputText> sin atributos. Interpreta ${} como #{}, por lo que se pueden utilizar indistintamente en Facelets.
  • Dic 2009: EL 2.2 se presenta con JSP 2.2 / Java EE 6 el cual permite llamar dentro de la sintaxis #{} a acciones (actions) de métodos específicos en lugar de solo métodos get y set de los Javabean, por ejemplo #{bean.method(argument)}. Facelets comienza a formar parte del estándar Java EE 6.

Fuente: http://stackoverflow.com/questions/4812755/difference-between-jsp-el-jsf-el-and-unified-el