Your users want to customize formulas. They know Excel or OpenOffice.
// Compile price finding factory and strategy implementation from spreadsheet:
EngineBuilder builder = SpreadsheetCompiler.newEngineBuilder();
builder.loadSpreadsheet( new File( PATH, "CustomPriceFormula.xls" ) );
builder.setFactoryClass( PriceFinderFactory.class );
builder.bindAllByName();
Engine engine = builder.compile();
PriceFinderFactory factory = (PriceFinderFactory) engine.getComputationFactory();
// Use it to compute a line item price:
LineItem item = getCurrentLineItem();
PriceFinder priceFinder = factory.newInstance( item );
BigDecimal price = priceFinder.getPrice();
Compile parametrized spreadsheets directly to bytecode.
* No need to have Excel, OpenOffice, or a JDK installed.
* Native speed, thread safe execution.
* Bind directly to your computation strategy interfaces.
* Using double, or BigDecimal for financial applications.
* Available under the GPL and commercially (details).