文章目录
- Java8-JavaScript-Nashorn
- 案例:Java代码执行JavaScript文件
- 案例:Java源代码嵌入JavaScript代码
- 案例:Java文件中设置JavaScript变量
Java8-JavaScript-Nashorn
Nashorn是JavaScript引擎。它用于在JVM(Java虚拟机)上动态执行JavaScript代码。Java提供了用于执行JavaScript代码的命令行工具jjs。
您可以通过使用jjs命令行工具并嵌入到Java源代码中来执行JavaScript代码。
案例:Java代码执行JavaScript文件
您可以直接从Java文件执行JavaScript文件。在以下代码中,我们将在FileReader类的帮助下读取文件hello.js。
import javax.script.*;
import java.io.*;
public class NashornExample { public static void main(String[] args) throws Exception{ // Creating script engine ScriptEngine ee = new ScriptEngineManager().getEngineByName("Nashorn"); // Reading Nashorn file ee.eval(new FileReader("js/hello.js")); }
}
输出结果为:
Hello Nashorn
hello.js内容如下:
var hello = function(){ print("Hello Nashorn");
};
hello();
案例:Java源代码嵌入JavaScript代码
您可以将JavaScript代码嵌入Java源文件中。Java编译器不会抱怨,但是当您拥有大量源代码时,这不是一个好习惯。在以下示例中,我们正在评估JavaScript代码。未来可能不会支持
import javax.script.*;
public class NashornExample { public static void main(String[] args) throws Exception{ // Creating script engine ScriptEngine ee = new ScriptEngineManager().getEngineByName("Nashorn"); // Evaluating Nashorn code ee.eval("print('Hello Nashorn');"); }
}
输出结果为:
Hello Nashorn
案例:Java文件中设置JavaScript变量
您可以将值传递给Java文件中的JavaScript变量。在下面的示例中,我们将变量绑定并传递到JavaScript文件。
文件: hello.js
print("Hello "+name);
文件: NashornExample.java
import javax.script.*;
import java.io.*;
public class NashornExample { public static void main(String[] args) throws Exception{ // 创建脚本引擎ScriptEngine ee = new ScriptEngineManager().getEngineByName("Nashorn"); //绑定脚本并定义脚本的作用域 Bindings bind = ee.getBindings(ScriptContext.ENGINE_SCOPE); bind.put("name", "Nashorn"); // 执行ee.eval(new FileReader("js/hello.js")); }
}