а вот как часто каждый из нас, программируя, задумывался над тем, как было бы классно в том или ином месте программы проэвалюировать какое-нибудь мат. выражение (например дана некая математическая функция в текстовой форме, вместо Х надо подставить значение и вычилить Y), да или просто есть кусок ява-кода в виде строки (переданный как параметр методу например), который хотелось бы запустить(выполнить) и посмотреть на результат.
разные хитровыебанные способы есть конечно же для всего описанного выше, но зачем усложнять то, что можно оказывается сделать теперь просто используя вот этот продукт:
Janino Embeded Compiler..
Janino - это библиотека-компилятор, которую можно просто напросто использовать внутри своей собственной программы, для того чтобы on-the-fly компилировать java-выражения, куски java-кода и наконец полноценные java-sourcefiles.
простой пример для эвалюции мат. выражения выглядит так:
-----------------------------------
// Compile the expression once; relatively slow.
ExpressionEvaluator ee = new ExpressionEvaluator(
"2*x - 10", // expression
Integer.TYPE, // expressionType
new String[] { "x" }, // parameterNames
new Class[] { Integer.TYPE} // parameterTypes
);
// Evaluate it with varying parameter values; very fast.
Integer res = (Integer) ee.evaluate(
new Object[] { // parameterValues
new Integer(10),
}
);
System.out.println("Result = " + res);
-----------------------------------------------------
в конечно итоге, этой штуковиной можно компилировать все, что является валидным ява-кодом (или то, из чего сделали до этого валидный ява код: напрашивается какой-нибудь свой собственный скриптовый язык, который можно переводить в яву и компилировать)...
вот так вот.. хотелось бы хоть каких-нибудь отзывов, а то клан, сдается мне, дохлеет...