问题标签 [nashorn]
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 - 将 Nashorn 与其他 Web 应用程序框架一起使用
在 JavaOne 2013 中,我参加了关于 Project Nashorn 的研讨会。我知道后很惊讶。从 JavaScript 调用 Java,反之亦然。
但是我仍然不清楚一个问题,即我们如何使用 Nashorn 来支持 JSF、ADF Faces 或 Wicket 等 Web 应用程序框架。如果有人给出任何指示,那将是非常可观的。
java - 在 JDK 8 中,Nashorn 和新的 JSON-P (javax.json) API 之间是否有任何计划的互操作性?
最近我查看了 Nashorn 和新的 JSON-P API (javax.json)。由于两者显然都面向 JSON,它们之间是否有任何计划的互操作性(即 Nashorn 是否包括对 javax.json.spi.JsonObject 的本机支持)?
编辑#1
@维克加莫夫,
通过互操作性,我的意思是一种在运行时将 javascript / JSON 对象注入脚本的方法。我知道 Nashorn 允许来自其他 JVM 语言的对象,例如标准 Java 对象。但是,如果有人想使用 100% javascript,则需要一种简单的方法来从外部创建纯 JS 对象,看起来jlaskey、hannesw(根据 JSObject 的评论)和 Oracle 的其他人/女孩提供了一个实现这一目标的方法。
java - 将 javascript Web 应用程序链接到 java
我正在尝试让 java 和 javascript 相互交谈。理想情况下,我希望它们共享对象,但 java 应用程序调用 javascript 函数就足够了。我试过 Rhino 但有点挣扎,因为它似乎无法在正在运行的 js 引擎中调用函数(也许我只是不知道怎么做?)。有关如何使此链接发生的任何提示?性能是一个问题,但不是非常关键。
基本上; 我有一个使用 javascript 动态更新页面内容的 Web 应用程序。页面的内容是通过 java 代码创建的,所以我需要一种方法让 java 代码告诉 javascript 什么时候发生了变化以及发生了什么变化。
谢谢
LiveConnect 似乎可以解决问题,但小程序会导致安全漏洞。Java8 中的 Nashorn 会和 Rhino 做同样的事情,还是能够保持运行的 JVM 并监听调用?
javascript - Java Nashorn 中的(反)引用方法变体
考虑代码:
示例 1
这行得通。
但这不起作用:
示例 2
我假设,这是因为fork
这里不是一个 JS Function 实例,它实际上是一个实例jdk.internal.dynalink.beans.SimpleDynamicMethod
我尝试使用fork.apply(executor,function() { ... });
,但很自然,SimpleDynamicMethod 没有apply
.
实际上,为什么示例 2 不起作用,而示例 1 起作用?
这仅仅是 Nashorn 的一项福利吗?是否有比示例 1 更好的方法来定义 fork() 函数?
更新
在示例 2 中,
print(typeof fork);
报告function
print(fork)
报告[jdk.internal.dynalink.beans.SimpleDynamicMethod Future java.util.concurrent.AbstractExecutorService.submit(Callable)]
例外是(第 13 行阅读fork(function() {
)
javascript - 通过 nashorn 实例化类
我正在考虑用 javascript / nashorn 替换我用于配置的所有 xml 文件和构建器。假设我有一个作为构建器样式配置对象的 java 类
我想直接在 javascript 中实例化这个类,并让 nashorn 返回给我它的一个实例。我想用javascript编码它
然后最后读取文件,将其传递给脚本引擎,并让它评估对象作为配置的实例。
- 这可能使用类似 json 的语法吗?
- 我不会有问题使用 Packages.Configuration / Java.type("Configuration"); Java.extend(),但尚未取得任何成功。
- 还是我必须为返回值制作/使用合适的阅读器?
java-8 - Nashorn JS 对象对 java.util.Map 有效吗?
我有java方法
从 JS 调用这个方法
例外:
但在 Nashorn 文档“Java 和 JavaScript 之间的数据类型映射”中说“每个 JavaScript 对象也是一个 java.util.Map,因此接收地图的 API 将直接接收它们”。
我究竟做错了什么?
java - 安全的 Nashorn JS 执行
如何使用 Java8 Nashorn 安全地执行一些用户提供的 JS 代码?
该脚本为一些基于 servlet 的报告扩展了一些计算。该应用程序有许多不同的(不受信任的)用户。脚本应该只能访问 Java 对象以及由定义的成员返回的对象。默认情况下,脚本可以使用 Class.forName() 实例化任何类(使用我提供的对象的 .getClass() )。有什么方法可以禁止访问我没有明确指定的任何 java 类?
javascript - Nashorn:奇怪的包裹退回
在 Java 的 Nashorn 引擎中,当你评估代码时,如果你这样做
e 将为空。
但是,我发现的一件事是,如果我这样做
e(以及 anothervar)将是 org.bukkit.event 包。
为什么 Nashorn 有它,所以在我访问带有点符号的包后,它会开始使用括号符号?
java - 如何在 Nashorn 中访问超类成员
我正在尝试在 JavaScript 中扩展一个具体的 Java 类(来自 javafx 库的 TableCell),然后在超类上调用一个方法。我用 Rhino 引擎做这个没有问题,但它在 Nashorn 上失败了。我的代码是:
除了上面在8 月添加到 nashorn 的“super$setText”语法之外,我还尝试了 nashorn 指南中访问超类方法中Java.super
提到的调用:
当填充相应的表视图时,这些片段都失败了。cell.super$setText
throws'null' has no such function "super$setText"
这让我觉得很奇怪,因为我已经粘贴了该方法的全部内容 - 封闭变量应该不可能cell
变为 null。Java.super(cell).setText
抛出“不能调用未定义。”
我还尝试了方便的属性语法cell.text = item
,它似乎设置了一个新的 javascript 字段而没有抱怨,但没有在表格视图中显示文本。
我的 JDK8 版本是最近的
我无法辨别这是一个 nashorn 错误,还是我的来源有问题。这是正确的语法吗?我还想知道它是否重要,setText
它没有定义在 上TableCell
,而是它的超类之一。nashorn 是否只能向上遍历层次结构?