Module jdk.scripting.nashorn
Package jdk.nashorn.api.scripting

## Class NashornScriptEngine

- java.lang.Object
- - javax.script.AbstractScriptEngine
  - - jdk.nashorn.api.scripting.NashornScriptEngine

All Implemented Interfaces:
  Compilable, Invocable, ScriptEngine

    public final class NashornScriptEngine
    extends AbstractScriptEngine
    implements Compilable, Invocable

JSR-223 compliant script engine for Nashorn. Instances are not created directly, but rather returned through `NashornScriptEngineFactory.getScriptEngine()`. Note that this engine implements the `Compilable` and `Invocable` interfaces, allowing for efficient precompilation and repeated execution of scripts.

Since:
  1.8u40
See Also:
  `NashornScriptEngineFactory`

### Field Summary

Fields
`static String` `NASHORN_GLOBAL` Key used to associate Nashorn global object mirror with arbitrary Bindings instance.

### Fields inherited from class javax.script.AbstractScriptEngine

`context`

### Fields inherited from interface javax.script.ScriptEngine

`ARGV, ENGINE, ENGINE_VERSION, FILENAME, LANGUAGE, LANGUAGE_VERSION, NAME`

### Method Summary

All Methods Instance Methods Concrete Methods
`CompiledScript` `compile(Reader reader)` Compiles the script (source read from `Reader`) for later execution.
`CompiledScript` `compile(String str)` Compiles the script (source represented as a `String`) for later execution.
`Bindings` `createBindings()` Returns an uninitialized `Bindings`.
`Object` `eval(Reader reader, ScriptContext ctxt)` Same as `eval(String, ScriptContext)` where the source of the script is read from a `Reader`.
`Object` `eval(String script, ScriptContext ctxt)` Causes the immediate execution of the script whose source is the String passed as the first argument.
`ScriptEngineFactory` `getFactory()` Returns a `ScriptEngineFactory` for the class to which this `ScriptEngine` belongs.
`<T> T` `getInterface(Class<T> clazz)` Returns an implementation of an interface using functions compiled in the interpreter.
`<T> T` `getInterface(Object thiz, Class<T> clazz)` Returns an implementation of an interface using member functions of a scripting object compiled in the interpreter.
`Object` `invokeFunction(String name, Object... args)` Used to call top-level procedures and functions defined in scripts.
`Object` `invokeMethod(Object thiz, String name, Object... args)` Calls a method on a script object compiled during a previous script execution, which is retained in the state of the `ScriptEngine`.

### Methods inherited from class javax.script.AbstractScriptEngine

`eval, eval, eval, eval, get, getBindings, getContext, getScriptContext, put, setBindings, setContext`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### NASHORN_GLOBAL

    public static final String NASHORN_GLOBAL

Key used to associate Nashorn global object mirror with arbitrary Bindings instance.

See Also:
  Constant Field Values

### Method Detail

#### eval

    public Object eval(Reader reader,
                       ScriptContext ctxt)
                throws ScriptException

Description copied from interface: `javax.script.ScriptEngine`
Same as `eval(String, ScriptContext)` where the source of the script is read from a `Reader`.

Specified by:
  `eval` in interface `ScriptEngine`
Parameters:
  `reader` - The source of the script to be executed by the script engine.
  `ctxt` - The `ScriptContext` passed to the script engine.
Returns:
  The value returned from the execution of the script.
Throws:
  `ScriptException` - if an error occurs in script. ScriptEngines should create and throw `ScriptException` wrappers for checked Exceptions thrown by underlying scripting implementations.

#### eval

    public Object eval(String script,
                       ScriptContext ctxt)
                throws ScriptException

Description copied from interface: `javax.script.ScriptEngine`
Causes the immediate execution of the script whose source is the String passed as the first argument. The script may be reparsed or recompiled before execution. State left in the engine from previous executions, including variable values and compiled procedures may be visible during this execution.

Specified by:
  `eval` in interface `ScriptEngine`
Parameters:
  `script` - The script to be executed by the script engine.
  `ctxt` - A `ScriptContext` exposing sets of attributes in different scopes. The meanings of the scopes `ScriptContext.GLOBAL_SCOPE`, and `ScriptContext.ENGINE_SCOPE` are defined in the specification.
  The `ENGINE_SCOPE` `Bindings` of the `ScriptContext` contains the bindings of scripting variables to application objects to be used during this script execution.
Returns:
  The value returned from the execution of the script.
Throws:
  `ScriptException` - if an error occurs in script. ScriptEngines should create and throw `ScriptException` wrappers for checked Exceptions thrown by underlying scripting implementations.

#### getFactory

    public ScriptEngineFactory getFactory()

Description copied from interface: `javax.script.ScriptEngine`
Returns a `ScriptEngineFactory` for the class to which this `ScriptEngine` belongs.

Specified by:
  `getFactory` in interface `ScriptEngine`
Returns:
  The `ScriptEngineFactory`

#### createBindings

    public Bindings createBindings()

Description copied from interface: `javax.script.ScriptEngine`
Returns an uninitialized `Bindings`.

Specified by:
  `createBindings` in interface `ScriptEngine`
Returns:
  A `Bindings` that can be used to replace the state of this `ScriptEngine`.

#### compile

    public CompiledScript compile(Reader reader)
                           throws ScriptException

Description copied from interface: `javax.script.Compilable`
Compiles the script (source read from `Reader`) for later execution. Functionality is identical to `compile(String)` other than the way in which the source is passed.

Specified by:
  `compile` in interface `Compilable`
Parameters:
  `reader` - The reader from which the script source is obtained.
Returns:
  An instance of a subclass of `CompiledScript` to be executed later using one of its `eval` methods of `CompiledScript`.
Throws:
  `ScriptException` - if compilation fails.

#### compile

    public CompiledScript compile(String str)
                           throws ScriptException

Description copied from interface: `javax.script.Compilable`
Compiles the script (source represented as a `String`) for later execution.

Specified by:
  `compile` in interface `Compilable`
Parameters:
  `str` - The source of the script, represented as a `String`.
Returns:
  An instance of a subclass of `CompiledScript` to be executed later using one of the `eval` methods of `CompiledScript`.
Throws:
  `ScriptException` - if compilation fails.

#### invokeFunction

    public Object invokeFunction(String name,
                                 Object... args)
                          throws ScriptException,
                                 NoSuchMethodException

Description copied from interface: `javax.script.Invocable`
Used to call top-level procedures and functions defined in scripts.

Specified by:
  `invokeFunction` in interface `Invocable`
Parameters:
  `name` - of the procedure or function to call
  `args` - Arguments to pass to the procedure or function
Returns:
  The value returned by the procedure or function
Throws:
  `ScriptException` - if an error occurs during invocation of the method.
  `NoSuchMethodException` - if method with given name or matching argument types cannot be found.

#### invokeMethod

    public Object invokeMethod(Object thiz,
                               String name,
                               Object... args)
                        throws ScriptException,
                               NoSuchMethodException

Description copied from interface: `javax.script.Invocable`
Calls a method on a script object compiled during a previous script execution, which is retained in the state of the `ScriptEngine`.

Specified by:
  `invokeMethod` in interface `Invocable`
Parameters:
  `thiz` - If the procedure is a member of a class defined in the script and thiz is an instance of that class returned by a previous execution or invocation, the named method is called through that instance.
  `name` - The name of the procedure to be called.
  `args` - Arguments to pass to the procedure. The rules for converting the arguments to scripting variables are implementation-specific.
Returns:
  The value returned by the procedure. The rules for converting the scripting variable returned by the script method to a Java Object are implementation-specific.
Throws:
  `ScriptException` - if an error occurs during invocation of the method.
  `NoSuchMethodException` - if method with given name or matching argument types cannot be found.

#### getInterface

    public <T> T getInterface(Class<T> clazz)

Description copied from interface: `javax.script.Invocable`
Returns an implementation of an interface using functions compiled in the interpreter. The methods of the interface may be implemented using the `invokeFunction` method.

Specified by:
  `getInterface` in interface `Invocable`
Type Parameters:
  `T` - the type of the interface to return
Parameters:
  `clazz` - The `Class` object of the interface to return.
Returns:
  An instance of requested interface - null if the requested interface is unavailable, i. e. if compiled functions in the `ScriptEngine` cannot be found matching the ones in the requested interface.

#### getInterface

    public <T> T getInterface(Object thiz,
                              Class<T> clazz)

Description copied from interface: `javax.script.Invocable`
Returns an implementation of an interface using member functions of a scripting object compiled in the interpreter. The methods of the interface may be implemented using the `invokeMethod` method.

Specified by:
  `getInterface` in interface `Invocable`
Type Parameters:
  `T` - the type of the interface to return
Parameters:
  `thiz` - The scripting object whose member functions are used to implement the methods of the interface.
  `clazz` - The `Class` object of the interface to return.
Returns:
  An instance of requested interface - null if the requested interface is unavailable, i. e. if compiled methods in the `ScriptEngine` cannot be found matching the ones in the requested interface.