栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用graaljs?是否有放置.jar文件的地方?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用graaljs?是否有放置.jar文件的地方?

目前,在GraalVM之外没有可用的预先构建的Graal.js jar。要在其他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>

外壳程序有效,

Ctrl
+
D
退出。
-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
哪个负责向脚本引擎API注册Graal.js。

使用一个小的测试文件:

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 . TestECMAscript 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:. TestECMAscript 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-profiler
chromeinspector
launcher-common
graaljs-launcher
其中通过脚本引擎使用Graal.js时不是必需的。)

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/595936.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号