I think the key is to keep the syntax simple and the runtime reqs to a minimum, limiting the functionality if necessary to achieve this. I don't know much about Jexl but it sounds like you've found a good candidate.
I think that Jexl is probably the best and easiest solution for now. As I said before we could roll our own parser, but we'd want to have most of the syntax/features that is in Jexl. I think the cost of fixing bugs and other maintenance of our own parser is not worth the trouble to save a few kb. Jexl only depends on commons-logging, which we already pull in lib/* so there is no other hidden bloat.
For functions though, my test was using commons-lang's SystemUtils for all of its JDK version/vendor muck... which does not justify the other 150k of fluff that comes with it. So its probably best to just pluck out the needed sources into a few function objects rather than add this guy to the boot cp.
--jason
