当前位置: 首页 > 知识库问答 >
问题:

如何使用graaljs?有没有地方可以买到汽车。jar文件?

咸玄天
2023-03-14

我使用Java8,使用默认的JavaScript引擎(Nashorn)。

我想看看它与“大肆宣传”的GRAAL JS相比如何。见:

  • https://github.com/graalvm/graaljs

特别是因为我听说他们想贬低nashorn

  • http://openjdk.java.net/jeps/335

有人知道如何(轻松地)访问graaljs吗?我希望能找到一个pom。xml或下载jar文件但不是运气的地方

共有2个答案

公孙俭
2023-03-14

好吧,很遗憾我会回答我自己的问题。经过一点研究,我发现我无法在Java8上运行它,而且无论如何也没有。graaljs的jar(我都不能手动创建)

详情在这里:

https://github.com/graalvm/graaljs/blob/master/docs/BUILDING-GRAAL.JS.md

澹台欣怿
2023-03-14

目前还没有预先制作的格拉尔罐。js在GraalVM之外提供。要在其他JDK上运行它,可以从GraalVM中提取JAR,或者像这样构建它:

$ git clone git@github.com:graalvm/graaljs.git
$ git clone git@github.com:graalvm/mx.git
$ export PATH=$PWD/mx:$PATH
$ export JAVA_HOME=/usr/java/jdk1.8.0_161
$ cd graaljs/graal-js
$ mx build

注意,它在JDK 8中构建得很好。它也在JDK 8上运行:

$ mx js
> typeof([] + 1)
string
>

shell工作时,CtrlD退出它。上一个命令行中的-v选项显示了如何启动它:

$ mx -v js
...
env JAVA_HOME=/usr/java/jdk1.8.0_161 ... \
/usr/java/jdk1.8.0_161/bin/java -d64 -cp /tmp/graal-js/graal/sdk/mxbuild/dists/graal-sdk.jar:/tmp/graal-js/graal/truffle/mxbuild/dists/truffle-api.jar:/tmp/graal-js/graal/tools/mxbuild/dists/truffle-profiler.jar:/tmp/graal-js/graal/tools/mxbuild/dists/chromeinspector.jar:/tmp/graal-js/graal/sdk/mxbuild/dists/launcher-common.jar:/tmp/graal-js/graaljs/graal-js/mxbuild/dists/graaljs-launcher.jar:/tmp/graal-js/graal/regex/mxbuild/dists/tregex.jar:/home/gmdubosc/.mx/cache/ASM_DEBUG_ALL_702b8525fcf81454235e5e2fa2a35f15ffc0ec7e.jar:/home/gmdubosc/.mx/cache/ICU4J_6f06e820cf4c8968bbbaae66ae0b33f6a256b57f.jar:/tmp/graal-js/graaljs/graal-js/mxbuild/dists/graaljs.jar -Dtruffle.js.BindProgramResult=false -Xms2g -Xmx2g -Xss16m com.oracle.truffle.js.shell.JSLauncher

所以它把这些罐子放在类路径上:

  • /tmp/graal-js/graal/sdk/mxbuild/dists/graal-sdk.jar
  • /tmp/graal-js/graal/truffle/mxbuild/dists/truffle-api.jar
  • /tmp/graal-js/graal/tools/mxbuild/dists/truffle-profiler.jar
  • /tmp/graal-js/graal/tools/mxbuild/dists/chromeinspector.jar
  • /tmp/graal-js/graal/sdk/mxbuild/dists/launcher-common.jar
  • /tmp/graal-js/graaljs/graal-js/mxbuild/dists/graaljs-launcher.jar
  • /tmp/graal-js/graal/regex/mxbuild/dists/tregex.jar
  • /home/gmdubosc/. mx/cache/ASM_DEBUG_ALL_702b8525fcf81454235e5e2fa2a35f15ffc0ec7e.jar
  • /home/gmdubosc/. mx/cache/ICU4J_6f06e820cf4c8968bbbaae66ae0b33f6a256b57f.jar
  • /tmp/graal-js/graaljs/graal-js/mxbuild/dists/graaljs.jar

查看构建工件,我们还可以看到mxbuild/dists/graaljs scriptengine。jar负责注册Graal。js和脚本引擎API。

使用一个小测试文件:

import javax.script.*;
import java.util.Arrays;
public class Test {
  public static void main(String... args) throws ScriptException {
    ScriptEngineManager manager = new ScriptEngineManager();
    for (ScriptEngineFactory factory : manager.getEngineFactories()) {
      System.out.printf("%s %s: %s %s%n", factory.getLanguageName(), factory.getLanguageVersion(), factory.getEngineName(), factory.getNames());
    }
    ScriptEngine engine = manager.getEngineByName("Graal.js");
    if (engine != null) {
      Object result = engine.eval("typeof([] + 1)");
      System.out.println(result);
    }
  }
}

在股票JDK 8上编译并运行它可以提供:

$ javac Test.java
$ java -cp . Test
ECMAScript ECMA - 262 Edition 5.1: Oracle Nashorn [nashorn, Nashorn, js, JS, JavaScript, javascript, ECMAScript, ecmascript]

现在在类路径上使用Graal.js:

$ java -cp /tmp/graal-js/graal/sdk/mxbuild/dists/graal-sdk.jar:/tmp/graal-js/graal/truffle/mxbuild/dists/truffle-api.jar:/tmp/graal-js/graal/regex/mxbuild/dists/tregex.jar:/home/gmdubosc/.mx/cache/ASM_DEBUG_ALL_702b8525fcf81454235e5e2fa2a35f15ffc0ec7e.jar:/home/gmdubosc/.mx/cache/ICU4J_6f06e820cf4c8968bbbaae66ae0b33f6a256b57f.jar:/tmp/graal-js/graaljs/graal-js/mxbuild/dists/graaljs.jar:/tmp/graal-js/graaljs/graal-js/mxbuild/dists/graaljs-scriptengine.jar:. Test
ECMAScript ECMA - 262 Edition 6: Graal.js [Graal.js, graal.js, Graal-js, graal-js, Graal.JS, Graal-JS, GraalJS, GraalJSPolyglot, js, JS, JavaScript, javascript, ECMAScript, ecmascript]
ECMAScript ECMA - 262 Edition 5.1: Oracle Nashorn [nashorn, Nashorn, null, null, null, null, null, null]
string

(请注意,此命令行忽略truffle profilerchromeinspectorlauncher commongraaljs launcher,这些在通过脚本引擎使用Graal.js时是不必要的。)

由于标准JDK 8不支持JVMCI和/或Graal编译器,因此JS不会有JIT编译,因此不要对性能抱太大期望。要获得性能,您需要特殊的JDK 8或JDK 9以及Graal-Truffle绑定。

 类似资料:
  • 问题内容: 我使用Java 8,并且使用默认的JavaScript引擎(Nashorn)。 我想看看它与“高度宣传”的GRAAL JS相比如何。看到: https://github.com/graalvm/graaljs https://www.graalvm.org/ 特别是因为我听说他们想弃用nashorn: http://openjdk.java.net/jeps/335 有人知道如何(轻松

  • 喜欢 mvn exec:java-Dexec.mainClass=“packageName.class” mvn-Dtest=“className#method” 在maven生成的目标/jar文件上,上面的命令有效吗,或者还有其他命令吗? 如果不在pom上应用maven插件,则无法找到搜索此类命令以在maven生成的jar上运行junit

  • 在我的空手道测试中,我需要将响应ID写到txt文件(或任何其他文件格式,如JSON),我想知道它是否有能力做到这一点,我在文档中没有看到其他的。如果是no,那么是否有一个简单的JavaScript函数来执行此操作?

  • 问题内容: 我有一个多模块Maven项目,其中一个模块用于分发。 该发行版包含一个我想轻松执行的可执行jar。但是,要执行它,我必须键入类似以下内容: 简单键入以下内容将是更好的选择: 不幸的是,我找不到找到执行.jar的java目标的方法。exec目标实际上可以做到,但是有一个陷阱:jar包含一个嵌入式码头服务器,并且由于exec的工作方式(不使用与maven相同的JVM),除非我杀死进程,否则

  • 我试图为应用程序创建一个可执行的.jar文件,但是当我运行“java-jar myapp.jar”时,我得到了错误: 错误:找不到或加载main类com.vaadin.app.MainView 我已经在pom.xml中添加了mainClass参数,MANIFEST.MF显示了以下内容: Main-Class:com.vaadin.app.MainView 在我的类中找不到方法的原因吗?

  • 本文向大家介绍没有ZooKeeper可以使用Kafka吗?相关面试题,主要包含被问及没有ZooKeeper可以使用Kafka吗?时的应答技巧和注意事项,需要的朋友参考一下 答:绕过Zookeeper并直接连接到Kafka服务器是不可能的,所以答案是否定的。如果以某种方式,使ZooKeeper关闭,则无法为任何客户端请求提供服务。