问题标签 [graaljs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 用于 javascript 事件处理程序的主机对象
我想允许 JavaScript 注册事件,语法如下
该event
对象提供不同的方法,具体取决于是什么'eventName'
(取决于我想为其添加处理程序的事件类型)。
我需要为object
和创建主机对象event
,我假设需要的类必须object
看起来像
如果有两种类型的事件。
但我不知道如何让 graalvm 自动选择正确的on
方法,也不知道第二个参数使用什么类型(它必须是一个 JavaScript 匿名函数,它接受某个类型的单个参数,并且以后必须由我的 Java 代码运行)。
如何存储 JavaScript 匿名函数
作为某种 Java Runnable,并确保 GraalVM 知道on
根据第一个字符串参数的值使用哪种方法(因为event
传递的对象对于不同的事件会有所不同)。
我认为这可能是一个超级复杂的问题,我发现正确措辞很棘手。
我想为 JavaScript 创建一种方法来注册事件处理程序,这些事件处理程序是稍后将使用某些参数调用的函数。
javascript - Graal Javascript - 线程安全
在多线程应用程序(例如每个 servlet 请求)中使用 Graal.js 的推荐方法是什么?我们像这样使用 Graal.js
我们是否应该为每个执行线程提供唯一的上下文/绑定。这可以通过上下文/绑定对池或使用 threadlocal 来完成。这是正确的方法吗?
graalvm - 使在 Chrome 中调试 graaljs 成为可能的神器
我正在尝试在 graaljs 中采用调试:
java.lang.IllegalArgumentException: Could not find option with name inspect.
我的build.gradle
依赖项如下所示:
而且我绝对记得曾经我应该添加另一个依赖项,以便可以在 chrome 中进行调试 - 但是我不记得 - 或者在任何代码源或文档中找到 - 我应该添加什么作为依赖项
graalvm - 是否可以将预编译的 js 存储和加载到 org.graalvm.polyglot.Context
有什么方法可以将 javascript 源代码转换为一些预编译的声明,可以以某种方式存储和加载,org.graalvm.polyglot.Context
而不是将其评估为原始字符串?像--persistent-code-cache
在 nashorn 中没有记录的东西。
graalvm - 如何将 Map 从 Java 传递到 graal.js?
我在 Scala/Java 中有一个 Map 我希望在 graal.js 引擎上运行的 Javascript 中可见。
后来,graal.js 中的一个 Javascript 函数被调用:
其中 bindFn 是一个编译函数(如下),而 args 是一个包含我的 Thing 对象的 1 元素列表。
Javascript:
thing.foo() 的输出有效,但所有其他输出在 Javascript 中解析为“foreign {}”。它们在地图中都没有任何值。
如何获取在 graal.js Javascript 代码(最好是原生到 Javascript)中可见的 JVM 上创建的 Map 数据?
java - 等价于 graal.js 脚本引擎中的 Nashorn 的 importPackage
我正在将旧代码从 JDK 8 迁移到 JDK 12。
在这个过程中,我注意到使用脚本引擎importPackage
时不存在。用于脚本引擎"graal.js"
时存在。"javascript"
有什么方法可以实现相同的功能"graal.js"
吗?GraalJS 存储库上的 Nashorn 迁移文档没有涵盖这一点。
javascript - 用 graalVM 替换 nashorn
我正在将 Javascript 引擎从 Nashorn 迁移到 GraalVm,但无法实例化 GraalJSScriptEngine/ScriptEngine。我尝试了不同的方法:
我收到以下错误:
它在执行 ^ 时返回 null。ScriptEngineManager
我还注意到实例中只有一个工厂(Nashorn) 。
我在类路径中添加了 truffle-api jar 并使用 VM 选项运行它:-ea -XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI -Dpolyglot.js.nashorn-compat=true
我在具有以下附加依赖项的 Java 13 上运行它:
graalvm - GraalVM Polyglot 无法加载 Java 类
想要从 Nashorn 迁移到 GraalVM。安装 Graal VM CE
测试应用
例外:
怎么了?
java - 在 GraalVM Polyglot 上下文中从 JavaScript 访问 Java 对象
在 GraalVM CE 上运行。
情况1:
结果:
为什么?
据我所知,d
正确通过:
返回"HelloWorld"
。
案例二:
例外
但是getName
是公开的……怎么了?
java - 使用 graal.js 通过 Java 访问 JavaScript 数组
我正在将一个项目从 Nashorn 迁移到 graal.js。该项目使用了大量脚本(超过 3,400 个),并且在 Java 端有一个调用方法的函数;该方法返回一个 JavaScript 对象列表。
以前使用 ScriptUtils 在 Nashorn 上运行良好。这段代码是在我拿起它之前由从事该项目的开发人员编写的:
如何使用 graal.js 通过 Java 访问数组?我试过使用Value.asValue(p)as(MyObj[])
无济于事。我还尝试遵循 Nashorn 迁移指南,他们建议将对象转换为 List 或 Map,但也无济于事。
我知道一个解决方案,我必须重写脚本以仅使用new Java.type('java.util.ArrayList');
并返回 aList
而不是数组 - 但是有成千上万的脚本,重写所有脚本将非常乏味。