Module jdk.jshell

# Package jdk.jshell.spi

Defines the Service Provider Interface for pluggable JShell execution engines. The JShell core tracks and compiles Snippets then sends them (represented in a wrapper class) to the execution engine for loading, and in the case of executable Snippets, execution. The JShell implementation includes a default execution engine (currently a remote process which is JDI controlled). By implementing the `ExecutionControl` interface and its generating class, an implementation of the `ExecutionControlProvider` interface, and installing it with `JShell.Builder.executionEngine(String)` other execution engines can be used. Where the passed String is an `ExecutionControl` spec.

The `ExecutionControl` spec is the `ExecutionControlProvider` name optionally followed by a parameter specification. The syntax of the spec is:

     spec   := name : params
            | name
     name   := identifier
     params := param , params
            | param
            |
     param  := identifier ( value )

Where 'name' is the `ExecutionControlProvider` name. Where 'param' is a Map key from `ExecutionControlProvider.defaultParameters()` and the parenthesized value; See, for example, `JdiExecutionControlProvider`. Where 'identifier' is a sequence of Java identifier part characters from the Basic Multilingual Plane.

For example:

- local
- jdi:hostname(localhost)
- failover:1(jdi),2(jdi:launch(true),timeout(3000)),3(local)

Since:
  9
See Also:
  `for execution implementation support`

- Interface Summary
  Interface | Description
  --- | ---
  ExecutionControl | This interface specifies the functionality that must provided to implement a pluggable JShell execution engine.
  ExecutionControlProvider | The provider used by JShell to generate the execution engine needed to evaluate Snippets.
  ExecutionEnv | Functionality made available to a pluggable JShell execution engine.

- Class Summary
  Class | Description
  --- | ---
  ExecutionControl.ClassBytecodes | Bundles class name with class bytecodes.

- Exception Summary
  Exception | Description
  --- | ---
  ExecutionControl.ClassInstallException | A class install (load or redefine) encountered a problem.
  ExecutionControl.EngineTerminationException | Unbidden execution engine termination has occurred.
  ExecutionControl.ExecutionControlException | The abstract base of all `ExecutionControl` exceptions.
  ExecutionControl.InternalException | An internal problem has occurred.
  ExecutionControl.NotImplementedException | The command is not implemented.
  ExecutionControl.ResolutionException | An exception indicating that a `DeclarationSnippet` with unresolved references has been encountered.
  ExecutionControl.RunException | The abstract base of of exceptions specific to running user code.
  ExecutionControl.StoppedException | An exception indicating that an `ExecutionControl.invoke(java.lang.String, java.lang.String)` (or theoretically a `ExecutionControl.varValue(java.lang.String, java.lang.String)`) has been interrupted by a `ExecutionControl.stop()`.
  ExecutionControl.UserException | A 'normal' user exception occurred.
  SPIResolutionException | The construction and throw of this exception is embedded in code generated by the JShell core implementation in such a way that, upon executing a `RECOVERABLE_DEFINED` user method, this exception is thrown.