如何使用GraalVM在现有的grails或spring应用程序中运行javascript?

时间:2019-09-16 11:27:26

标签: java gradle nashorn graalvm

不幸的是,Nashorn已被弃用,因为有很多示例。

我们了解GraalVM可以编译和运行应用程序。我们不需要这个。

我们只想在我们的Java应用程序中运行一些javascript。加载一个javascript文件,然后定期调用其上的方法,然后让javascript调用java作为响应。 javascript是我们需要能够在浏览器客户端或服务器上运行的引擎。

有没有人看到过使用GraalVM在spring应用程序中运行js文件的方法,或者更好,grails?我们使用gradle。

要清楚一点,我们不想使用graalvm来编译我们的应用程序。我们只想要一个可以在现有应用程序中运行js的实用程序。

示例和文档很薄。似乎也没有任何gradle插件或选项来支持它。

还是我们应该坚持使用Nashorn?

2 个答案:

答案 0 :(得分:1)

根据文档,它应该像这样:

package graaltest;
import org.graalvm.polyglot.*;
public class GraalVMTest {
  public static void main(String[] args) {
    Context context = Context.create();
    context.eval("js", "var test = Java.type('graaltest.GraalVMTest'); test.hello('World');");
  }

  public static void hello(String what) {
    System.out.println("Hello "+what);
  }
}

答案 1 :(得分:1)

运行GraalVM JavaScript引擎的推荐方法无疑是GraalVM。在GraalVM和GraalVM本机映像之间,您似乎有一些误解。 GraalVM是功能齐全的JDK8,可以在Java应用程序的编译之前提供 support ,但没有 manage 。您可以像使用其他任何JDK8一样使用GraalVM(例如,将<form [formGroup]="SignupForm" (ngSubmit)="openModal()">指向GraalVM目录)。您只会获得多语种支持,并且可能会获得更好的性能。

如果您正在运行JDK11 +,请查看示例maven项目https://github.com/graalvm/graal-js-jdk11-maven-demo(如此处的回答Use graalvm via the standard JDK 11

如果您在JDK8上运行并且坚持不使用GraalVM,那么您的选择将非常有限。您仍然可以使用GraalVM javascript引擎,但是在解释器模式下只会导致性能下降。我链接到的示例存储库在JAVA_HOME文件中有一个“ jdk8”配置文件,显示了如何在库存jdk8上运行。