# 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.