调用函数的推荐方法(使用CompiledScript或不使用?)

时间:2017-02-25 11:48:39

标签: java groovy scripting jruby jsr223

我正在编写一个库,它提供了在JVM上以各种非Java语言执行的宏支持。想想JavaScript,Ruby等。

因此我想使用JSR-223 Scripting API。

此API具有httpd.conf类的概念,我认为这是在加载时预编译脚本并在执行时重用它们的最佳方法。

检查 <VirtualHost *:80> ServerName sushant.com ServerAlias www.sushant.com ProxyRequests On <Proxy *> Order deny,allow Allow from all </Proxy> <Location /> ProxyPass http://localhost:7777/ ProxyPassReverse http://localhost:7777/ </Location> </VirtualHost> <VirtualHost *:8081> ServerName sushant.com ServerAlias www.sushant.com ProxyRequests on <Proxy *> Order deny,allow Allow from all </Proxy> <Location /> ProxyPass http://localhost:8081/ ProxyPassReverse http://localhost:8081/ </Location> </VirtualHost> CompiledScript的实例是否是一个好习惯,如果是,请使用ScriptEngine方法,否则只需在Compilable本身中评估该函数?

E.g。 (简化的):

CompiledScript

在这种情况下是否有使用ScriptEngine的好处或是否可以忽略?

我的实际实现有点高级,并且有一个单独的加载和调用模式来重用实际的Invocable invocable; if (scriptEngine instanceof Compilable) { // Compile the code. CompiledScript compiledFunction = ((Compilable) scriptEngine).compile(function); compiledFunction.eval(); invocable = (Invocable) compiledFunction.getEngine(); } else { // Run the code to load the function into the script engine. scriptEngine.eval(function); invocable = (Invocable) scriptEngine; } Object value = invocable.invokeFunction(resolveFunctionName(name), args); return value != null ? value.toString() : null;

CompiledScript

0 个答案:

没有答案