This is a simple (but powerful) infix expression evaluator.

Evaluating an expression is as simple as the following line :
Double result = new DoubleEvaluator().evaluate(expression);

Key features:
Limitations:

License information is available there.