不幸的是,Nashorn已被弃用,因为有很多示例。
我们了解GraalVM可以编译和运行应用程序。我们不需要这个。
我们只想在我们的Java应用程序中运行一些javascript。加载一个javascript文件,然后定期调用其上的方法,然后让javascript调用java作为响应。 javascript是我们需要能够在浏览器客户端或服务器上运行的引擎。
有没有人看到过使用GraalVM在spring应用程序中运行js文件的方法,或者更好,grails?我们使用gradle。
要清楚一点,我们不想使用graalvm来编译我们的应用程序。我们只想要一个可以在现有应用程序中运行js的实用程序。
示例和文档很薄。似乎也没有任何gradle插件或选项来支持它。
还是我们应该坚持使用Nashorn?
答案 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上运行。