繁体   English   中英

使用GraalVM评估Java中的JavaScript

[英]Evaluating JavaScript in Java with GraalVM

到目前为止,我们已经使用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代码中调用“流程”功能并提供参数。

几个问题给您:

  1. 根据最佳做法,最好的方法是什么? “ record”参数是一个Java Map对象,代表我们的内部模型。 当我们将其发送到process函数时,我们希望将其作为标准js对象处理,以便我们的用户可以根据ECMA编写标准js代码。 正确的做法是什么?
  2. 我们注意到在进行几次测试时,Nashorn的性能优于Graalvm,这是否有意义或者我们做错了什么?

非常感谢您的协助,并希望尽快迁移到Graalvm。

  1. 如果您使用的是GraalVM多语言API,请查看ProxyObjects( https://www.graalvm.org/truffle/javadoc/org/graalvm/polyglot/proxy/ProxyObject.html )。 我认为这可能是您最好的选择。

  2. GraalVM JS实现应绝对胜过Nashorn,但可能需要进行几次预热才能达到目标。 您是否允许测量中的预热?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM