До сих пор мы использовали Nashorn для оценки кода JS в нашем проекте Java.У Nashorn есть несколько известных недостатков, и мы хотели бы перейти на GraalVM.
Итак, мы сделали небольшую POC и столкнулись с несколькими проблемами, я надеюсь, что вы можете помочь нам:)
Наш бизнессценарий использования: мы предоставляем нашим пользователям платформу для написания пользовательского js-кода в соответствии со следующим интерфейсом:
function process(record, ctx, logger, next) {
if (record && record.data){
record.data.firstName = "Joe";
}
return record;
}
запись представляет нашу внутреннюю модель, которая является картой Java.
И мы хотели бычтобы вызвать функцию 'process' из нашего Java-кода и предоставить параметры.
Несколько вопросов к вам:
- Каков наилучший способ сделать это в соответствии с лучшими практиками?Параметр 'record' - это объект Java Map, который представляет нашу внутреннюю модель.когда мы отправляем его в функцию процесса, мы хотим, чтобы он обрабатывался как стандартный объект js, чтобы наши пользователи могли писать стандартный код js в соответствии с ECMA.Как правильно это сделать?
- Мы заметили, что производительность Nashorn лучше, чем у Graalvm, когда мы запускаем пару тестов, это имеет смысл, или мы, вероятно, делаем что-то не так?
Мы очень ценим вашу помощь и хотели бы очень скоро переехать в Graalvm.