Судовой журнал
  Остров Ява (Java)
  Janino - Embeded Jav...

Боцманы:  Coder

Форум клана открыт для общественности

 Страница   из 1    |  Показывать   на странице
Старые сначала  Тема: Janino - Embeded Java Compiler
К.К.Михельсон
Бывший океанец

а вот как часто каждый из нас, программируя, задумывался над тем, как было бы классно в том или ином месте программы проэвалюировать какое-нибудь мат. выражение (например дана некая математическая функция в текстовой форме, вместо Х надо подставить значение и вычилить 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);

-----------------------------------------------------

в конечно итоге, этой штуковиной можно компилировать все, что является валидным ява-кодом (или то, из чего сделали до этого валидный ява код: напрашивается какой-нибудь свой собственный скриптовый язык, который можно переводить в яву и компилировать)...

вот так вот.. хотелось бы хоть каких-нибудь отзывов, а то клан, сдается мне, дохлеет...
22 Июля 2004 12:16      
Coder
Вождь




Очень даже интерестная штука, будет время обязательно посмотрю внимательнее! Спасибо.
----------------------
10100100 00011110 01010101 11001001
011 Трудное детство - DOS-Игры 10
10101101 11100101 10010011 00100111
23 Июля 2004 02:13      
valar





для вычисления по формулам это не плохо, а какие приложения для эвалюирования кода?
----------------------
Der Mensch ist schlecht.
(contact me if you know the band that sing it)
11 Августа 2004 10:55      
К.К.Михельсон
Бывший океанец

в таком же точно стиле, как предложено выше.

например у тебя есть такой кусок кода:
Цитата:

String code = "System.out.println("My name is " + name); return true;";



его ты хочешь эвалюировать.

1. создаешь инстанцию ScriptEvaluator-a:
Цитата:

ScriptEvaluator se = new ScriptEvaluator(
code, // expression
Boolean.TYPE, // return Type
new String[] { "name" }, // parameterNames
new Class[] { String.class } // parameterTypes
);



2. передаешь параметр, эвалюируешь и получаешь как результат:
Цитата:

String res = (String) se.evaluate(
new Object[] { // parameterValues
new String("vasja")
}
);

11 Августа 2004 11:57      
S_T_A_L_K_E_R
Туземец

Что-то вроде JUnit
----------------------
Stalker
17 Января 2006 11:13      
 Страница   из 1    |  Показывать   на странице
Перейти в
© Stanislav Neuberger 2001-∞ · Служба поддержки