javax.script

接口
异常
public interface ScriptEngineFactory

ScriptEngineFactory 用来描述和实例化 ScriptEngine

实现 ScriptEngine 的每个类都有一个相应的工厂,该工厂公开描述引擎类的元数据。

ScriptEngineManager 使用 Jar 文件规范 中描述的服务提供者机制来获取所有当前 ClassLoader 中可用的 ScriptEngineFactory 实例。

从以下版本开始:
1.6

方法摘要
 String getEngineName()
          返回 ScriptEngine 的完全名称。
 String getEngineVersion()
          返回 ScriptEngine 的版本。
 List<String> getExtensions()
          返回文件扩展名的不可变列表,这些扩展名通常标识使用此 ScriptEngine 支持的语言所编写的脚本。
 String getLanguageName()
          返回此 ScriptEngine 支持的脚本语言的名称。
 String getLanguageVersion()
          返回此 ScriptEngine 支持的脚本语言的版本。
 String getMethodCallSyntax(String obj, String m, String... args)
          返回一个 String,该 String 可用来调用使用受支持脚本语言语法的 Java 对象的方法。
 List<String> getMimeTypes()
          返回 mimetypes 的不可变列表,这些 mimetypes 与可由引擎执行的脚本关联。
 List<String> getNames()
          返回 ScriptEngine 短名称的不可变列表,这些名称由 ScriptEngineManager 用来标识 ScriptEngine
 String getOutputStatement(String toDisplay)
          返回一个 String,该 String 可用作一个语句来显示使用受支持脚本语言语法的指定 String。
 Object getParameter(String key)
          返回属性值,该属性的含义可能是特定于实现的。
 String getProgram(String... statements)
          返回一个包含给定语句的有效脚本语言的可执行程序。
 ScriptEngine getScriptEngine()
          返回与此 ScriptEngineFactory 关联的 ScriptEngine 的实例。
 

方法详细信息

getEngineName

String getEngineName()
返回 ScriptEngine 的完全名称。例如,基于 Mozilla Rhino Javascript 引擎的实现可以返回 Rhino Mozilla Javascript Engine

返回:
引擎实现的名称。

getEngineVersion

String getEngineVersion()
返回 ScriptEngine 的版本。

返回:
ScriptEngine 实现版本。

getExtensions

List<String> getExtensions()
返回文件扩展名的不可变列表,这些扩展名通常标识使用此 ScriptEngine 支持的语言所编写的脚本。该数组由 ScriptEngineManager 使用,用于实现其 getEngineByExtension 方法。

返回:
扩展名列表。

getMimeTypes

List<String> getMimeTypes()
返回 mimetypes 的不可变列表,这些 mimetypes 与可由引擎执行的脚本关联。该列表由 ScriptEngineManager 类使用,用于实现其 getEngineByMimetype 方法。

返回:
mime 类型的列表。

getNames

List<String> getNames()
返回 ScriptEngine 短名称的不可变列表,这些名称由 ScriptEngineManager 用来标识 ScriptEngine。例如,基于 Mozilla Rhino Javascript 引擎的实现可以返回包含 {"javascript", "rhino"} 的列表。


getLanguageName

String getLanguageName()
返回此 ScriptEngine 支持的脚本语言的名称。

返回:
受支持语言的名称。

getLanguageVersion

String getLanguageVersion()
返回此 ScriptEngine 支持的脚本语言的版本。

返回:
受支持语言的版本。

getParameter

Object getParameter(String key)
返回属性值,该属性的含义可能是特定于实现的。其值在所有实现中定义的键有:
  • ScriptEngine.ENGINE
  • ScriptEngine.ENGINE_VERSION
  • ScriptEngine.NAME
  • ScriptEngine.LANGUAGE
  • ScriptEngine.LANGUAGE_VERSION

用于这些键的值分别是 getEngineNamegetEngineVersiongetNamegetLanguageNamegetLanguageVersion 返回的 String。

还定义了保留键 THREADING,它的值描述了与脚本并发执行和状态维护有关的引擎行为。用于 THREADING 键的值有:

    null - 引擎实现不是线程安全的,并且无法用来在多个线程上并发执行脚本。

    "MULTITHREADED" - 引擎实现是内部线程安全的,并且脚本可以并发执行,尽管在某个线程上执行脚本的效果对于另一个线程上的脚本是可见的。

    "THREAD-ISOLATED" - 该实现满足 "MULTITHREADED" 的要求,并且引擎为不同线程上执行的脚本中的符号维护独立的值。

    "STATELESS" - 该实现满足 "THREAD-ISOLATED" 的要求。此外,脚本执行不改变 Bindings 中的映射关系,该 Bindings 是 ScriptEngine 的引擎范围。具体来说,Bindings 及其关联值中的键在执行脚本之前和之后是相同的。



实现可以定义特定于实现的键。

参数:
key - 参数名
返回:
给定参数的值。如果没有为键分配值,则返回 null

getMethodCallSyntax

String getMethodCallSyntax(String obj,
                           String m,
                           String... args)
返回一个 String,该 String 可用来调用使用受支持脚本语言语法的 Java 对象的方法。例如,Javascript 引擎的实现可能是:


public String getMethodCallSyntax(String obj,
String m, String... args) {
String ret = obj;
ret += "."+ m + "(";
for (int i = 0; i < args.length; i++) {
ret += args[i];
if (i == args.length - 1) {
ret += ")";
} else {
ret += ",";
          }
      }
return ret;
 }

参数:
obj - 表示其方法将被调用的对象的名称。该名称是用来使用 ScriptEngineput 方法、 ENGINE_SCOPE Bindingsput 方法或者 ScriptContextsetAttribute 方法创建 bindings 的名称。脚本中使用的标识符可以是指定标识符的装饰形式。
m - 要调用的方法的名称。
args - 方法调用中的参数名称。
返回:
用来调用使用脚本语言语法的方法的 String。

getOutputStatement

String getOutputStatement(String toDisplay)
返回一个 String,该 String 可用作一个语句来显示使用受支持脚本语言语法的指定 String。例如,Perl 引擎的实现可能是:


public String getOutputStatement(String toDisplay) {
return "print(" + toDisplay + ")";
 }
 

参数:
toDisplay - 将由返回的语句显示的 String。
返回:
用来显示使用脚本语言语法的 String 的字符串。

getProgram

String getProgram(String... statements)
返回一个包含给定语句的有效脚本语言的可执行程序。例如,PHP 引擎的实现可能是:


public String getProgram(String... statements) {
$retval = "<?\n";
int len = statements.length;
for (int i = 0; i < len; i++) {
$retval += statements[i] + ";\n";
      }
$retval += "?>";

 }
 

参数:
statements - 要执行的语句。可能是调用 getMethodCallSyntaxgetOutputStatement 方法的返回值。
返回:
程序

getScriptEngine

ScriptEngine getScriptEngine()
返回与此 ScriptEngineFactory 关联的 ScriptEngine 的实例。通常返回一个新的 ScriptEngine,但这些实现可以池化、共享或重用引擎。

返回:
新的 ScriptEngine 实例。