Пакет javax.script
API для скриптинга состоит из интерфейсов и классов, которые определяют Java™ движки для скриптов и предоставляют фреймворк для их использования в Java приложениях. Этот API предназначен для использования разработчиками приложений, которые хотят выполнять программы, написанные на языках сценариев, в своих Java приложениях. Программы на языке сценариев обычно предоставляются конечными пользователями приложений.
Основные функциональные области пакета javax.script включают
-
Выполнение скриптов: Скрипты представляют собой потоки символов, используемые в качестве источников программ, выполняемых движками сценариев. Выполнение скриптов использует методы
evalклассаScriptEngineи методы интерфейсаInvocable. -
Связывание: Эта возможность позволяет экспонировать объекты Java программам на языке сценариев как именованные переменные. Для этой цели используются классы
BindingsиScriptContext. -
Компиляция: Эта функциональность позволяет сохранять промежуточный код, генерируемый передней частью движка сценариев, и выполнять его повторно. Это выгодно для приложений, которые выполняют один и тот же скрипт несколько раз. Эти приложения могут повысить эффективность, поскольку передние части движков должны выполнять скрипт только один раз на скрипт, а не один раз на каждое выполнение скрипта. Обратите внимание, что эта функциональность является необязательной, и движки сценариев могут выбрать её не реализовывать. Вызывающие стороны должны проверить доступность интерфейса
Compilableс помощью проверки instanceof. -
Вызов: Эта функциональность позволяет повторно использовать промежуточный код, генерируемый передней частью движка сценариев. В то время как компиляция позволяет повторно выполнять целые скрипты, представленные промежуточным кодом, функциональность вызова позволяет повторно выполнять отдельные процедуры/методы в скриптах. Как и в случае с компиляцией, не все движки сценариев обязаны предоставлять эту возможность. Вызывающая сторона должна проверить доступность
Invocable. -
Обнаружение движков сценариев: Приложения, написанные для API скриптинга, могут иметь специфические требования к движкам сценариев. Некоторые могут потребовать определенный язык сценариев и/или версию, в то время как другие могут потребовать определенный движок и/или версию реализации. Движки сценариев упаковываются определённым образом, чтобы движки можно было обнаружить во время выполнения и запросить их атрибуты. Механизм обнаружения движков основан на механизме загрузки поставщиков услуг, описанном в классе
ServiceLoader.ScriptEngineManagerвключает методgetEngineFactoriesдля получения всех экземпляровScriptEngineFactory, обнаруженных с помощью этого механизма.ScriptEngineFactoryимеет методы для запроса атрибутов движка сценариев.
- С:
- 1.6
| Интерфейс | Описание |
|---|---|
| Bindings | Отображение пар ключ/значение, все ключи которых являются |
| Compilable | Необязательный интерфейс, реализуемый ScriptEngines, чьи методы компилируют скрипты в форму, которая может быть выполнена повторно без повторной компиляции. |
| Invocable | Необязательный интерфейс, реализуемый ScriptEngines, чьи методы позволяют вызывать процедуры в скриптах, которые были ранее выполнены. |
| ScriptContext | Интерфейс, реализующие классы которого используются для подключения движков Script к объектам, таким как области видимости Bindings, в приложениях-хостах. |
| ScriptEngine |
|
| ScriptEngineFactory |
|
| Класс | Описание |
|---|---|
| AbstractScriptEngine | Предоставляет стандартную реализацию для нескольких вариантов метода |
| CompiledScript | Расширяется классами, которые хранят результаты компиляции. |
| ScriptEngineManager |
|
| SimpleBindings | Простая реализация Bindings, поддерживаемая |
| SimpleScriptContext | Простая реализация ScriptContext. |
| Исключение | Описание |
|---|---|
| ScriptException | Общий класс |
© 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/package-summary.html