# 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

Module Graph:
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.