# Uses of Interface
jdk.jshell.spi.ExecutionControl

Packages that use ExecutionControl
Package | Description
--- | ---
jdk.jshell.execution | Provides implementation support for building JShell execution engines.
jdk.jshell.spi | Defines the Service Provider Interface for pluggable JShell execution engines.

## Uses of ExecutionControl in jdk.jshell.execution

Classes in jdk.jshell.execution that implement ExecutionControl
Modifier and Type | Class | Description
--- | --- | ---
`class` | `DirectExecutionControl` | An `ExecutionControl` implementation that runs in the current process.
`class` | `JdiDefaultExecutionControl` | The implementation of `ExecutionControl` that the JShell-core uses by default.
`class` | `JdiExecutionControl` | Abstract JDI implementation of `ExecutionControl`.
`class` | `LocalExecutionControl` | An implementation of `ExecutionControl` which executes in the same JVM as the JShell-core.
`class` | `RemoteExecutionControl` | The remote agent runs in the execution process (separate from the main JShell process).
`class` | `StreamingExecutionControl` | An implementation of the `ExecutionControl` execution engine SPI which streams requests to a remote agent where execution takes place.

Methods in jdk.jshell.execution that return ExecutionControl
Modifier and Type | Method | Description
--- | --- | ---
`ExecutionControl` | FailOverExecutionControlProvider.`generate​(ExecutionEnv env, Map<String,​String> parameters)` | Create and return a locally executing `ExecutionControl` instance.
`ExecutionControl` | LocalExecutionControlProvider.`generate​(ExecutionEnv env, Map<String,​String> parameters)` | Create and return a locally executing `ExecutionControl` instance.
`static ExecutionControl` | Util.`remoteInputOutput​(InputStream input, OutputStream output, Map<String,​OutputStream> outputStreamMap, Map<String,​InputStream> inputStreamMap, BiFunction<ObjectInput,​ObjectOutput,​ExecutionControl> factory)` | Creates an ExecutionControl for given packetized input and output.

Methods in jdk.jshell.execution with parameters of type ExecutionControl
Modifier and Type | Method | Description
--- | --- | ---
`static void` | Util.`forwardExecutionControl​(ExecutionControl ec, ObjectInput in, ObjectOutput out)` | Forward commands from the input to the specified `ExecutionControl` instance, then responses back on the output.
`static void` | Util.`forwardExecutionControlAndIO​(ExecutionControl ec, InputStream inStream, OutputStream outStream, Map<String,​Consumer<OutputStream>> outputStreamMap, Map<String,​Consumer<InputStream>> inputStreamMap)` | Forward commands from the input to the specified `ExecutionControl` instance, then responses back on the output.

Method parameters in jdk.jshell.execution with type arguments of type ExecutionControl
Modifier and Type | Method | Description
--- | --- | ---
`static ExecutionControl` | Util.`remoteInputOutput​(InputStream input, OutputStream output, Map<String,​OutputStream> outputStreamMap, Map<String,​InputStream> inputStreamMap, BiFunction<ObjectInput,​ObjectOutput,​ExecutionControl> factory)` | Creates an ExecutionControl for given packetized input and output.

## Uses of ExecutionControl in jdk.jshell.spi

Methods in jdk.jshell.spi that return ExecutionControl
Modifier and Type | Method | Description
--- | --- | ---
`static ExecutionControl` | ExecutionControl.`generate​(ExecutionEnv env, String spec)` | Search for a provider, then create and return the `ExecutionControl` instance.
`static ExecutionControl` | ExecutionControl.`generate​(ExecutionEnv env, String name, Map<String,​String> parameters)` | Search for a provider, then create and return the `ExecutionControl` instance.
`ExecutionControl` | ExecutionControlProvider.`generate​(ExecutionEnv env, Map<String,​String> parameters)` | Create and return the `ExecutionControl` instance.