# 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`
JdiExecutionControlProvider.`generate(ExecutionEnv env, Map<String,String> parameters)`
`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.