2015年做网站行不行,房产网站建设的目的,增城高端定制网站建设,qq空间网页版登录入口引入了Java 8和名为“ Nashorn”的新JavaScript引擎。 Nashorn基于Da Vinci Machine#xff0c;该项目旨在为JVM添加动态语言支持。 Nashorn是使混合软件比以前更轻松的一个很好的里程碑。 该引擎的出色功能使您能够在Java#xff08;任何其他编译语言#xff09;代码和java… 引入了Java 8和名为“ Nashorn”的新JavaScript引擎。 Nashorn基于Da Vinci Machine该项目旨在为JVM添加动态语言支持。 Nashorn是使混合软件比以前更轻松的一个很好的里程碑。 该引擎的出色功能使您能够在Java任何其他编译语言代码和javascript之间进行全双工通信。 使用Nashorn的最简单方法是JDK 8或OpenJDK 8中捆绑的命令行工具您可以在“ / bin”中找到它。 通过执行jjs您将面对jjs提示符提示您可以交互使用Nashorn也可以将js文件作为参数传递给jjs。 您可以在下面找到使用jjs的基本示例 考虑下面的simple.js文件 var nameNashorn;
print(name); 现在通过调用jjs simple.js将在屏幕上显示“ Nashorn”文本。 我认为jjs足以用于介绍如果您需要更多信息可以键入jjs -help。 您也可以在Java代码中使用Nashorn脚本引擎。 考虑下面的Program.java文件 public class Program {public static void main(String... args) throws ScriptException {ScriptEngineManager factory new ScriptEngineManager();ScriptEngine nashornEngine factory.getEngineByName(nashorn);nashornEngine.eval(print(hello world););}
} 使用此简单的代码您的屏幕上将会显示一个非常漂亮的问候世界。 您也可以将js文件评估为脚本引擎ScriptEngine接口的eval方法具有Reader抽象类类型的重载。 因此您可以简单地传递任何作为Reader类实例的对象。 考虑以下代码 script1.js内容 var version 1;function hello(name) {return hello name;
} Program.java内容 public class Program {public static void main(String... args) throws ScriptException, NoSuchMethodException {ScriptEngineManager factory new ScriptEngineManager();ScriptEngine nashornEngine factory.getEngineByName(nashorn);nashornEngine.eval(new InputStreamReader(Program.class.getResourceAsStream(script1.js)));System.out.println(nashornEngine.get(version));Invocable invocable (Invocable) nashornEngine;Object result invocable.invokeFunction(hello, soroosh);System.out.println(result);
}
} ScriptEngine接口有一个get方法如您在示例中所注意到的您可以调用它来检索ScriptEngine中定义的任何变量或任何状态。 在上面的示例中“ version”是在simple.js文件中声明的变量。 每个脚本引擎都有其自己的ScriptEngine类实现并且脚本引擎可以实现一些可选接口以扩展其功能。 如果您检查NashornSriptEngine的源代码则类签名为 public final class NashornScriptEngine extends javax.script.AbstractScriptEngine implements javax.script.Compilable, javax.script.Invocable 因此Nashorn脚本引擎也使您能够使用这两个界面。 在上面的示例中用于调用在脚本引擎中声明的函数的示例使用了Invocable接口。 注意 ScriptEngine是有状态的因此如果您在脚本引擎上调用某些函数或评估某些代码则对象和变量的状态可能会影响其结果。 结论 在这篇文章中我试图以一种非常基本和实用的方式介绍Nashorn。在以后的文章中我将进一步展示Java Nashorn的互操作性及其在现实世界中的用法。 翻译自: https://www.javacodegeeks.com/2014/04/introduction-to-nashorn.html