《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);}}