max*_*max 20 java openjdk rhino nashorn
我正在寻找一种方法来开始使用Oracle的新Nashorn JavaScript引擎.我已经DL了最新的OpenJDK 8(b65),看起来Rhino仍然是唯一包含的脚本引擎.
任何人都知道Nashorn何时(或在哪个版本中)将取代OpenJDK中的Rhino?或者甚至更好,我可以在哪里获得包含它的JDK?我知道Netbeans已经编写了一个调试器来使用它,只是不确定他们从哪里获得了库/代码来开始编写它.
有人有链接吗?
谢谢.
pd4*_*d40 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日更新:
@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
Run Code Online (Sandbox Code Playgroud)
您可以在最近的jdk 1.8版本中从javax.script.ScriptEngineManager请求"nashorn"引擎:
jrunscript -cp ./nashorn.jar -l "nashorn" -e "println(engine.factory.getParameter(
javax.script.ScriptEngine.ENGINE))"
> Oracle Nashorn
Run Code Online (Sandbox Code Playgroud)
或者在路径中使用nashorn.jar:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
Run Code Online (Sandbox Code Playgroud)
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());
}
}
Run Code Online (Sandbox Code Playgroud)
使用bootclasspath设置运行将列出Rhino和Nashorn,没有它你将只看到Rhino.
安装JDK8并为JDK的jjs(Nashorn Interpreter)创建别名,例如,如果创建名为test.js的文件,则可以运行以下程序:
$ jjs test.js
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)