# Module jdk.jshell

This module provides support for Java Programming Language 'snippet' evaluating tools, such as Read-Eval-Print Loops (REPLs), including the jshell tool. Separate packages support building tools, configuring the execution of tools, and programmatically launching the existing Java shell tool.

The `jdk.jshell` is the package for creating 'snippet' evaluating tools. Generally, this is only package that would be needed for creating tools.

The `jdk.jshell.spi` package specifies a Service Provider Interface (SPI) for defining execution engine implementations for tools based on the `jdk.jshell` API. The `jdk.jshell.execution` package provides standard implementations of `jdk.jshell.spi` interfaces and supporting code. It also serves as a library of functionality for defining new execution engine implementations.

The `jdk.jshell.tool` package supports programmatically launching the jshell tool.

The `jdk.jshell.execution` package contains implementations of the interfaces in `jdk.jshell.spi`. Otherwise, the four packages are independent, operate at different levels, and do not share functionality or definitions.

Tool Guides:
  jshell

Since:
  9

- - ## Packages

    Exports
    Package | Description
    --- | ---
    jdk.jshell | Provides interfaces for creating tools, such as a Read-Eval-Print Loop (REPL), which interactively evaluate "snippets" of Java programming language code.
    jdk.jshell.execution | Provides implementation support for building JShell execution engines.
    jdk.jshell.spi | Defines the Service Provider Interface for pluggable JShell execution engines.
    jdk.jshell.tool | Provides a mechanism to launch an instance of a Java™ shell tool.

    Indirect Exports
    From | Packages
    --- | ---
    java.compiler | javax.annotation.processing javax.lang.model javax.lang.model.element javax.lang.model.type javax.lang.model.util javax.tools
    java.prefs | java.util.prefs
    jdk.jdi | com.sun.jdi com.sun.jdi.connect com.sun.jdi.connect.spi com.sun.jdi.event com.sun.jdi.request

  - ## Modules

    Requires
    Modifier | Module | Description
    --- | --- | ---
    transitive | java.compiler | Defines the Language Model, Annotation Processing, and Java Compiler APIs.
    transitive | java.prefs | Defines the Preferences API.
    transitive | jdk.jdi | Defines the Java Debug Interface.

  - ## Services

    Provides
    Type | Description
    --- | ---
    ExecutionControlProvider |
    Tool |

    Uses
    Type | Description
    --- | ---
    ExecutionControlProvider | The provider used by JShell to generate the execution engine needed to evaluate Snippets.