我正在寻找一种方法来开始使用 Oracle 的新 Nashorn JavaScript 引擎。我已经对最新的 OpenJDK 8 (b65) 进行了深度学习,看来 Rhino 仍然是唯一包含的脚本引擎。
任何人都知道 Nashorn 何时(或在哪个版本中)将取代 OpenJDK 中的 Rhino?或者更好的是,我在哪里可以获得已经包含它的 JDK?我知道 Netbeans 已经编写了一个调试器来使用它,只是不确定他们从哪里得到库/代码来开始编写它。
有人有一些链接吗?
谢谢。
看起来 OpenJDK 上还没有 Nashorn 的迹象。
Jim Laskey 在 2012 年 10 月的最新评论表明 2012 年第四季度:
https://blogs.oracle.com/nashorn/entry/welcome_to_the_nashorn_blog#comment-1351205506968
我认为是时候在 SO 上贴一个nashorn标签了!
2012 年 12 月 1 日更新:
看起来像 2012 年 12 月下旬 OpenJDK 可能有它https://blogs.oracle.com/nashorn/entry/request_for_project_nashorn_open
2013 年 3 月 10 日更新:
@Seth 是正确的,1.7 版本 3 PRERELEASE不是 Nashorn。我的错!
JDK 8 b68包括一个尚未合并的nashorn~jdk8分支。
这个分支的自述文件说:
Nashorn 存储库正在迁移到 OpenJDK 的过程中,因此在几个方面是不完整的。构建系统未完全集成。完成后,Nashorn 将安装在 JRE 中的适当位置。集成后,正确版本的 JDK 将包裹在 Nashorn 周围。同时,请确保您使用 JDK8 b68 或更高版本。
如果您从源代码签出 nashorn~jdk8,您可以构建nashorn.jar
cd nashorn~jdk8/nashorn/make
ant clean; ant
您可以在最近的 jdk 1.8 版本中从javax.script.ScriptEngineManager请求“nashorn”引擎:
jrunscript -cp ./nashorn.jar -l "nashorn" -e "println(engine.factory.getParameter(
javax.script.ScriptEngine.ENGINE))"
> Oracle Nashorn
或在路径中使用nashorn.jar:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
2014 年 3 月 19 日更新:
来自@ncasas 的更新;JDK 8 已经发布,Nashorn 是默认的 JS 引擎。
我做了更多的挖掘工作,您可以通过使用位于此处的反向端口让 Nashorn 使用 JDK7:
https://bitbucket.org/ramonza/nashorn-backport
签出该存储库并尝试ant -f make/build.xml
按照 BitBucket 页面上的说明使用它来构建它
如果由于 dynalink 导致构建失败,请应用此处问题部分中列出的补丁(我假设开发人员很快会将其修补到主存储库中)。
在构建它时,您应该在克隆存储库的 dist 文件夹中获得一个 nashorn.jar 文件。
现在您需要使用类似于以下的 VM 选项将此 jar 添加到您的引导类路径:
-Xbootclasspath/a:C:/nashorn-backport/dist/nashorn.jar
现在你应该可以使用 nashorn 了。为了确保这是我编写的一个快速测试程序,它将列出可用的引擎工厂:
import javax.script.*;
public class NashornTest {
public static void main(String args[]) {
ScriptEngineManager manager = new ScriptEngineManager();
for (ScriptEngineFactory f : manager.getEngineFactories()) {
printBasicInfo(f);
System.out.println();
}
}
public static void printBasicInfo(ScriptEngineFactory factory) {
System.out.println("engine name=" + factory.getEngineName());
System.out.println("engine version=" + factory.getEngineVersion());
System.out.println("language name=" + factory.getLanguageName());
System.out.println("extensions=" + factory.getExtensions());
System.out.println("language version=" + factory.getLanguageVersion());
System.out.println("names=" + factory.getNames());
System.out.println("mime types=" + factory.getMimeTypes());
}
}
使用 bootclasspath 集运行它会列出 Rhino 和 Nashorn,没有它你只会看到 Rhino。
安装 JDK8 并为您的 JDK 的 jjs(Nashorn 解释器)创建一个别名,例如,如果您创建一个名为 test.js 的文件,您可以使用以下命令运行该程序:
$ jjs test.js
Mac OS = alias jjs='/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/bin/jjs'</p>
Windows = 定义一个名为 'JAVA8_HOME' 的环境变量并指向您的 jdk8 文件夹,然后您可以通过运行以下命令来调用 jjs:
> “%JAVA8_HOME%\jre\bin\jjs” test.js
我最近一直在研究如何使用它,我目前认为开始使用它的唯一方法是从源代码构建 OpenJDK,因为从 2 月 7 日开始,它不在当前版本中。
我认为它会在本周晚些时候发布的开发者预览版中(2013 年 2 月 21 日)。
来源: http: //openjdk.java.net/projects/jdk8/