Интерфейс ScriptEngineFactory
- Все известные реализующие классы:
NashornScriptEngineFactory
public interface ScriptEngineFactory
ScriptEngineFactory используется для описания и создания экземпляров ScriptEngines.
Каждый класс, реализующий ScriptEngine имеет соответствующую фабрику, которая предоставляет метаданные, описывающие класс движка. ScriptEngineManager использует механизм загрузчика поставщиков услуг, описанный в ServiceLoader классе для получения экземпляров ScriptEngineFactory экземпляров. См. ScriptEngineManager() и ScriptEngineManager(java.lang.ClassLoader).
- С:
- 1.6
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
String | getEngineName() | Возвращает полное имя |
String | getEngineVersion() | Возвращает версию |
List<String> | getExtensions() | Возвращает неизменяемый список расширений файлов, которые обычно идентифицируют скрипты, написанные на языке, поддерживаемом этим |
String | getLanguageName() | Возвращает имя языка сценариев, поддерживаемого этим |
String | getLanguageVersion() | Возвращает версию языка сценариев, поддерживаемого этим |
String | getMethodCallSyntax(String obj,
String m,
String... args) | Возвращает строку, которую можно использовать для вызова метода объекта Java с использованием синтаксиса поддерживаемого языка сценариев. |
List<String> | getMimeTypes() | Возвращает неизменяемый список MIME-типов, связанных со скриптами, которые могут быть выполнены движком. |
List<String> | getNames() | Возвращает неизменяемый список коротких имен |
String | getOutputStatement(String toDisplay) | Возвращает строку, которая может быть использована как оператор для отображения указанной строки с использованием синтаксиса поддерживаемого языка сценариев. |
Object | getParameter(String key) | Возвращает значение атрибута, смысл которого может быть специфичным для реализации. |
String | getProgram(String... statements) | Возвращает допустимую исполняемую программу языка сценариев с заданными операторами. |
ScriptEngine | getScriptEngine() | Возвращает экземпляр |
Методы
getEngineName
String getEngineName()
Возвращает полное имя ScriptEngine. Например, реализация на основе Javascript-движка Mozilla Rhino может вернуть 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, которые могут использоваться для идентификации ScriptEngine ScriptEngineManager. Например, реализация на основе Javascript-движка Mozilla Rhino может вернуть список {"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
Значения для этих ключей — строки, возвращаемые getEngineName, getEngineVersion, getLanguageName, getLanguageVersion для первых четырёх ключей соответственно. Для NAME возвращается одна из строк, возвращаемых getNames.
Зарезервированный ключ THREADING, значение которого описывает поведение движка относительно одновременного выполнения скриптов и сохранения состояния, также определён. Значения для ключа THREADING:
-
null— реализация движка не потокобезопасна и не может использоваться для одновременного выполнения скриптов на нескольких потоках. -
"MULTITHREADED"— реализация движка внутренне потокобезопасна, и скрипты могут выполняться одновременно, хотя эффекты выполнения скрипта в одном потоке могут быть видны скриптам в других потоках. -
"THREAD-ISOLATED"— реализация удовлетворяет требованиям "MULTITHREADED", а также движок сохраняет независимые значения символов в скриптах, выполняющихся в разных потоках. -
"STATELESS"— реализация удовлетворяет требованиям"THREAD-ISOLATED". Кроме того, выполнение скриптов не изменяет сопоставления вBindings, которое является областью видимости движкаScriptEngine. В частности, ключи в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— имя, представляющее объект, метод которого нужно вызвать. Имя — то, которое используется для создания привязок с помощью методаputScriptEngine, методаputENGINE_SCOPEBindings, или методаsetAttributeScriptContext. -
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- Операторы, которые должны быть выполнены. Может быть результатом вызовов методовgetMethodCallSyntaxиgetOutputStatement. - Возвращает:
- Программу
- Исключение:
-
NullPointerException- если массивstatementsили любой из его элементов равен null
getScriptEngine
ScriptEngine getScriptEngine()
Возвращает экземпляр ScriptEngine, связанный с этим ScriptEngineFactory. Обычно возвращается новый ScriptEngine, но реализации могут использовать пулы, совместное использование или повторное использование движков.
- Возвращает:
- Новый экземпляр
ScriptEngine.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.scripting/javax/script/ScriptEngineFactory.html