Module java.scripting
Package javax.script

Interface ScriptEngineFactory


public interface ScriptEngineFactory
ScriptEngineFactory 用于描述和实例化 ScriptEngines

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

ScriptEngineManager 使用在 ServiceLoader 类中描述的服务提供程序加载器机制来获取 ScriptEngineFactory 实例。请参见 ScriptEngineManager()ScriptEngineManager(java.lang.ClassLoader)
自版本:
1.6
  • Method Details

    • 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()
      返回一个不可变的与可以由引擎执行的脚本相关联的MIME类型列表。该列表由 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.LANGUAGE
      • ScriptEngine.LANGUAGE_VERSION
      • ScriptEngine.NAME

      这些键的值是分别由 getEngineNamegetEngineVersiongetLanguageNamegetLanguageVersion 返回的字符串。对于 NAME,由 getNames 返回的字符串之一被返回。

      还定义了一个保留键,THREADING,其值描述引擎相对于并发执行脚本和维护状态的行为。这些键 THREADING 的值为:

      • null - 引擎实现不是线程安全的,不能用于在多个线程上并发执行脚本。
      • "MULTITHREADED" - 引擎实现在内部是线程安全的,脚本可以并发执行,尽管一个线程上脚本执行的效果可能对其他线程上的脚本可见。
      • "THREAD-ISOLATED" - 实现满足 "MULTITHREADED" 的要求,同时,引擎在执行在不同线程上执行的脚本时维护符号的独立值。
      • "STATELESS" - 实现满足 "THREAD-ISOLATED" 的要求。此外,脚本执行不会更改 ScriptEngine 的引擎范围中的 Bindings 中的映射。特别是,在执行脚本之前和之后,Bindings 中的键及其关联的值是相同的。


      实现可以定义特定于实现的键。
      参数:
      key - 参数的名称
      返回:
      给定参数的值。如果未为键分配值,则返回 null
      抛出:
      NullPointerException - 如果键为 null。
    • getMethodCallSyntax

      String getMethodCallSyntax(String obj, String m, String... args)
      返回一个字符串,可用于使用支持的脚本语言的语法调用 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 += ",";
                }
            }
            ret += ")";
            return ret;
       }
        
      参数:
      obj - 表示要调用其方法的对象的名称。该名称是使用 ScriptEngineput 方法、ENGINE_SCOPE Bindingsput 方法或 ScriptContextsetAttribute 方法创建绑定时使用的名称。脚本中使用的标识符可能是指定的名称的装饰形式。
      m - 要调用的方法的名称。
      args - 方法调用中参数的名称。
      返回:
      用于以脚本语言的语法调用方法的字符串。
      抛出:
      NullPointerException - 如果 obj 或 m 或 args 或 args 的任何元素为 null。
    • getOutputStatement

      String getOutputStatement(String toDisplay)
      返回一个字符串,可用作语句以使用支持的脚本语言的语法显示指定的字符串。例如,Perl 引擎的实现可能是;
      
       public String getOutputStatement(String toDisplay) {
            return "print(" + toDisplay + ")";
       }
       
      参数:
      toDisplay - 要由返回的语句显示的字符串。
      返回:
      用于以脚本语言的语法显示字符串的字符串。
    • getProgram

      String getProgram(String... statements)
      返回具有给定语句的有效脚本语言可执行程序。例如,PHP 引擎的实现可能是;
      
       public String getProgram(String... statements) {
            String retval = "<?\n";
            int len = statements.length;
            for (int i = 0; i < len; i++) {
                retval += statements[i] + ";\n";
            }
            return retval += "?>";
       }
       
      参数:
      statements - 要执行的语句。可能是对 getMethodCallSyntaxgetOutputStatement 方法的调用的返回值。
      返回:
      程序
      抛出:
      NullPointerException - 如果 statements 数组或其任何元素为 null
    • getScriptEngine

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