我正在寻找一种方法来开始使用Oracle的新Nashorn JavaScript引擎。我已经DL了最新的OpenJDK 8(b65),看来Rhino仍然是唯一包含的脚本引擎。
任何人都知道Nashorn何时(或在哪个版本中)将取代OpenJDK中的Rhino?或者甚至更好,我可以在哪里获得包含它的JDK?我知道Netbeans已经编写了一个调试器来使用它,只是不确定他们从哪里获得了库/代码来开始编写它。
任何人都有一些链接?
感谢。
答案 0 :(得分:15)
看起来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日更新:
JDK 8 b68包含尚未合并的nashorn~jdk8分支。
这个分支的自述文件说:
Nashorn回购正在迁移到OpenJDK,因此也是如此 在几个方面不完整。 构建系统未完全集成。完成后,Nashorn将会 安装在JRE的适当位置。 集成后,JDK的正确版本将被包含在内 犀牛。在此期间,请确保使用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 is out和Nashorn是默认的JS引擎。
答案 1 :(得分:9)
我已经做了更多的挖掘,你可以让Nashorn使用它的backport来处理JDK7:
https://bitbucket.org/ramonza/nashorn-backport
检查存储库并尝试使用{Bit}工具栏页面中描述的ant -f make/build.xml
构建它
如果由于dynalink而导致构建失败,请应用问题部分here中列出的补丁(我假设开发人员很快会将其修补到主存储库中)。
构建它时,您应该在克隆存储库的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。
答案 2 :(得分:5)
安装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
答案 3 :(得分:2)
我最近一直在研究如何使用它,我目前认为你可以开始使用它的唯一方法是从源代码构建OpenJDK,因为它不是2月7日的当前版本。 / p>
我认为它将在本周晚些时候发布的开发者预览版中(2013年2月21日)。