Proposal for Commons Expression Package

-- April 14, 2008 --

[I] Rationale:

Numerous expression languages exist for embedding in Java-based applications and frameworks. There is a growing tend to defer choice of the expression language, especially since users of frameworks and middleware components demand such freedom. Commons Expression aims to provide a simple abstraction over these expression languages.

No such library exists in Apache Commons or anywhere else under AL, AFAIK.

[II] Scope:

The package shall create and maintain a simple abstraction API over expression languages. It will also provide the necessary adapters to bridge the API with several existing expression language implementations. The exact list is TBD, it may grow over time pending community interest. Examples are (references provided for a couple):

The package shall not implement an expression language of its own.

[III] Dependencies:

The Commons Expression codebase shall not have any compile-time dependencies, other than each of the expression language implementations for the above-mentioned adapters. The run-time dependencies will be a function of developer choice.

The minimum JDK version shall be 1.4, atleast one JDK 1.4-compatible release is anticipated. A JDK 1.5 branch can be started concurrently while in sandbox, pending interest.

[IV] Code Provenance:

The library will be seeded with code from Commons SCXML [3]. Specifically, the Context and Evaluator interfaces along with existing implementations for Commons EL and Commons JEXL along with corresponding tests will be pulled in. Further additions will be driven by community interest.

[V] Naming, Resources and Conventions:

The base name for the proposed package will be:

org.apache.commons.expression

The project will use the Apache Commons user and dev mailing lists, will create a component repository named "expression" (lower case) in SVN under commons-sandbox and will be listed as "Expression" in the project list in JIRA (as "Expression" component under "SANDBOX" before graduation). Code style conventions will be borrowed from the parent component (Commons SCXML).

[VI] Committer Interest:

The following Apache committer has expressed interest in the creation of this Commons Sandbox component:

Reference Links:

[1] Commons EL

[2] Commons JEXL

[3] Commons SCXML