我如何开始使用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/