Если возникает необходимость выполнить один и тот же сценарий несколько раз (возможно с разными наборами переменных), гораздо эффективнее скомпилиро_ вать сценарий однократно, а затем вызывать уже скомпилированную версию. Сделать это можно, например, следующим образом:
// Это текст сценария, который требуется скомпилировать. String scripttext = "x * x";
// Создать экземпляр интерпретатора.
ScriptEngineManager scriptManager = new ScriptEngineManager( );
ScriptEngine js = scriptManager.getEngineByExtension("js");
// Привести его к типу интерфейса Compilable, чтобы получить возможность компиляции. Compilable compiler = (Compilable)js;
// Скомпилировать сценарий в представление, которое даст возможность.
// запускать его многократно
CompiledScript script = compiler.compile(scripttext);
// Теперь запустить сценарий пять раз, используя всякий раз разные значения переменной x Bindings bindings = js.createBindings( );
for(int i = 0; i < 5; i++) { bindings.put("x", i);
Object result = script.eval(bindings); System.out.printf("f(%d) = %s%n", i, result);
}
236 Глава 12. Разработка сценариев для Java*приложений
