到目前为止,我们已经使用 Nashorn 来评估 Java 项目中的 JS 代码。Nashorn 有几个已知的缺点,我们想迁移到 GraalVM。
所以我们做了一个小的 POC 并遇到了几个问题,我希望你能帮助我们:)
我们的业务用例:我们为用户提供了一个平台,可以根据以下接口编写自定义js代码:
function process(record, ctx, logger, next) {
if (record && record.data){
record.data.firstName = "Joe";
}
return record;
}
record 代表我们的内部模型,它是一个 Java Map。
我们想从我们的 Java 代码中调用“进程”函数并提供参数。
几个问题问你:
- 根据最佳实践,最好的方法是什么?'record' 参数是一个 Java Map 对象,代表我们的内部模型。当我们将它发送到 process 函数时,我们希望它作为标准 js 对象处理,以便我们的用户可以根据 ECMA 编写标准 js 代码。正确的方法是什么?
- 当我们运行几个测试时,我们注意到 Nashorn 的性能优于 Graalvm,这是有道理的还是我们可能做错了什么?
我们非常感谢您的帮助,并希望很快搬到 Graalvm。