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.
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.
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.
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.
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).
The following Apache committer has expressed interest in the creation of this Commons Sandbox component:
[1] Commons EL
[2] Commons JEXL
[3] Commons SCXML