我如何开始使用Oracle的Nashorn JS引擎进行编码?什么时候它会取代OpenJDK中的Rhino?

我正在寻找一种方法来开始使用Oracle的新Nashorn JavaScript引擎。 我已经DL了最新的OpenJDK 8(b65),看起来Rhino仍然是唯一包含的脚本引擎。

任何人都知道Nashorn何时(或在哪个版本中)将取代OpenJDK中的Rhino? 或者甚至更好,我可以在哪里获得包含它的JDK? 我知道Netbeans已经编写了一个调试器来使用它,只是不确定他们从哪里获得了库/代码来开始编写它。

有人有链接吗?

谢谢。

看起来OpenJDK上还没有Nashorn的迹象。

2012年10月Jim Laskey的最新评论显示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分支。

该分支的README说:

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添加到bootclasspath:

-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 Interpreter)创建别名,例如,如果您创建名为test.js的文件,则可以使用以下命令运行该程序:

 $ jjs test.js 

Mac OS = alias jjs =’/ Library / Java / JavaVirtualMachines / jdk1.8.0.jdk / Contents / Home / jre / bin / jjs’

Windows =定义一个名为“JAVA8_HOME”的环境变量并指向您的jdk8文件夹,然后您可以通过运行以下命令来调用jjs:

 > “%JAVA8_HOME%\jre\bin\jjs” test.js 

我最近一直在研究如何使用它,我目前认为你可以开始使用它的唯一方法是从源代码构建OpenJDK,因为它不是2月7日的当前版本。

我认为它将在本周晚些时候发布的开发者预览版中(2013年2月21日)。

资料来源: http : //openjdk.java.net/projects/jdk8/