Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用GraalVM在现有grails或spring应用程序中运行javascript?_Java_Gradle_Nashorn_Graalvm - Fatal编程技术网

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

如何使用GraalVM在现有grails或spring应用程序中运行javascript?,java,gradle,nashorn,graalvm,Java,Gradle,Nashorn,Graalvm,不幸的是,Nashorn被弃用了,因为有很多例子 我们知道GraalVM可以编译和运行应用程序。我们不需要这个 我们只想在java应用程序中运行一些javascript。加载一个javascript文件,然后定期调用该文件上的方法,并让javascript调用java作为响应。javascript是我们需要能够在浏览器客户端或服务器上运行的引擎 有人见过在spring应用程序或更好的grails中使用GraalVM运行js文件的方法吗?我们使用gradle 明确地说,我们不想使用graalvm来

不幸的是,Nashorn被弃用了,因为有很多例子

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

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

有人见过在spring应用程序或更好的grails中使用GraalVM运行js文件的方法吗?我们使用gradle

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

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


还是我们应该坚持使用纳肖恩?

根据文档,应该是这样的:

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);
  }
}

运行GraalVM JavaScript引擎的推荐方式是GraalVM,这并不奇怪。你对格拉阿尔姆和格拉阿尔姆的本土形象似乎有一些误解。GraalVM是一个功能齐全的JDK8,它确实支持java应用程序的提前编译,但并不强制要求这样做。您可以像使用任何其他JDK8一样使用GraalVM(例如指向GraalVM目录的点
JAVA\u HOME
)。您只需获得polyglot支持,并可能获得更好的性能

如果您正在运行JDK11+,请查看示例maven项目(如这里所回答的)


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

谢谢,但关键是如何将所需的库放入应用程序,以及如何编译它以便我们可以运行它。我们有现有的grails应用程序,例如我们希望在中使用js。Grails使用gradle。似乎没有任何使用gradle(甚至maven)将所需内容纳入项目的例子。也许这不能做到?Nashorn很简单——它内置在java中,非常有趣!在阅读了大量关于graalvm的文章后,我错过了关键信息,即它是JDK的替代品。但是,如果它是JDK8的替代品,为什么它不是JDK11的替代品呢?我们已经在生产中运行oracles Java 8多年了——换成一个新的和未知的虚拟机可能会引起一些担忧。graalVM似乎还没有被广泛使用(作为JDK的替代品)。这个网站显示它使用了更多的CPU,并且响应时间更短,但是现在可能不同了。一个基于JDK11的GraalVM正在开发中。GraalVM可能是新的,但它远非未知(特别是如果您已经运行Oracle)。我建议您自己尝试一下,看看它在您特定的工作负载下表现如何。