直到现在,我们已经使用Nashorn在Java项目中评估JS代码。 Nashorn有几个已知的缺点,我们希望迁移到GraalVM。
所以我们做了一个小的POC,遇到了几个问题,希望您能为我们提供帮助:)
我们的业务用例: 我们为用户提供了一个根据以下界面编写自定义js代码的平台:
function process(record, ctx, logger, next) {
if (record && record.data){
record.data.firstName = "Joe";
}
return record;
}
记录代表我们的内部模型,它是Java Map。
我们想从Java代码中调用'process'函数并提供参数。
对您的几个问题
我们非常感谢您的协助,并希望尽快迁移到Graalvm。
答案 0 :(得分:0)
如果使用的是GraalVM多语言API,请看一下ProxyObjects(https://www.graalvm.org/truffle/javadoc/org/graalvm/polyglot/proxy/ProxyObject.html)。我认为这可能是您最好的选择。
GraalVM JS实现应绝对胜过Nashorn,但可能需要进行几次热身迭代才能达到目标。您是否允许测量中的预热?