Proposal for JSP 2.0 Expression Language Interpreter Package

(0) Rationale

The JSP Standard Tag Library (JSTL), version 1.0, introduced the concept of an Expression Language (EL), whose main goal is to provide page authors with an easy way to access and manipulate application data without requiring the use of scriptlets

JSP 2.0 adopted the EL specification from JSTL, and expanded its scope: EL expressions are no longer limited to JSTL action attributes, but may be used in any standard or custom action attribute declared to accept a runtime expression. In addition, EL expressions may now also be used directly in template text outside of any actions. JSP 2.0 also added an important feature to the EL specification: EL functions, which allow page authors to invoke static methods in Java classes from EL expressions. Additionally, JSP 2.0 allows programmatic access and customization of the EL evaluator through a set of standard interfaces and abstract classes.

Currently, there are a number of projects (including Tomcat 5 and Java Server Faces) that leverage the EL implementation of the Standard Taglib. In addition, there seems to be interest in leveraging the EL in the context of scripting workflow activities using custom tag libraries.

In order to make the EL implementation available to Tomcat 5, the Tomcat team defined a new "ant" target for the Standard Taglib that builds just the EL portion and packages it in a JAR file ("jsp20el.jar") which is stored in Tomcat's common/lib directory. This approach has always been considered an interim solution only, until the EL implementation would move from the Standard Taglib to a more visible location such as jakarta-commons.

(1) Scope of the package

The package shall provide an implementation of the Expression Language specification which is part of the JSP 2.0 standard.

(1.5) Interaction with other packages

The package shall provide an implementation of the standard interfaces and abstract classes of the javax.servlet.jsp.el package, which is defined in the JSP 2.0 specification.

(2) Identify the initial source for the package

The initial codebase will be taken from the Standard Taglib project hosted at jakarta-taglibs. The source of the Standard Taglib is available as part of the jakarta-taglibs nightly source distribution.

(2.1) Identify the base name for the package

The base name of the package shall be org.apache.commons.el

(2.2) Identify the coding conventions for this package

The package follows Sun's Java coding conventions.

(3) Identify any Jakarta-Commons resources to be created

(3.1) Mailing list

The package shall use the jakarta-commons mailing list.

(3.2) CVS repositories

The package shall use a root branch of the jakarta-commons CVS.

(3.3) Bugzilla

The package shall be listed as the "EL" component under the "Commons" project in Bugzilla.

(3.4) Jyve FAQ (when available)


(4) Initial Committers

  • Shawn Bayern
  • Nathan Abramson
  • Pierre Delisle
  • Hans Bergsten
  • Justyna Horwat
  • Craig R. McClanahan
  • Jan Luehe