《Java核心技术 卷II》Java平台的脚本机制
Java平台的脚本机制
脚本引擎:可以执行用某种特定语言编写的脚本类库。
ScriptEngineManager
虚拟机启动时用它发现可用的脚步引擎。
调用getEngineFactories来枚举这些引擎。
知道所需要的引擎可以通过名字、MIME类型或拓展文件来请求它。
var manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
通过类路径提供Ja让包来添加更多的语言支持。
oracle JDK以往都包含一个JavaScript引擎,但在Java15中被移除。
下载安装JavaScript引擎的Jar包。
如果你想在 Java 程序中使用 JavaScript 引擎,可以使用 Rhino 或 Nashorn 等,它们是 Java 中内置的 JavaScript 引擎,不需要额外下载 Jar 包(对于 Java 8 及以下版本,使用 Rhino;对于 Java 8 到 Java 14,Nashorn 是内置的)。
如果你使用的是 Java 15 及以上,Nashorn 被弃用,你可以考虑使用 GraalVM 的 JavaScript 引擎,你可以通过 Maven 或 Gradle 等构建工具添加相应的依赖。
<dependency>
<groupId>org.graalvm.js</groupId>
<artifactId>js</artifactId>
<version>22.3.0</version>
</dependency>
D:\Code成立\software\apache-maven-3.9.3\repo\org\graalvm\js\js\22.3.0\js-22.3.0.jar
整体了解详情请参考:GraalVM
由于暂时不想装GraalVM,案例给出的是JDK1.8.
package 第8章脚本;
import java.util.Arrays;
import java.util.List;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineFactory;
import javax.script.ScriptEngineManager;
public class JSScriptEngineTest {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
List<ScriptEngineFactory> slist = manager.getEngineFactories();
System.out.println(Arrays.toString(slist.toArray()));
ScriptEngine js = manager.getEngineByName("JavaScript");
System.out.println(js);
ScriptEngineFactory jsFactory = slist.get(0);
List<String> jsNames = jsFactory.getNames();
List<String> jsExtensions = jsFactory.getExtensions();
List<String> jsMimeTypes = jsFactory.getMimeTypes();
System.out.println(jsNames);
System.out.println(jsExtensions);
System.out.println(jsMimeTypes);
}
}