# Module jdk.jshell

module jdk.jshell
Provides the jshell tool for evaluating snippets of Java code, and defines a JDK-specific API for modeling and executing snippets. The JShell API supports Java Programming Language 'snippet' evaluating tools, such as Read-Eval-Print Loops (REPLs). 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 the 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.

Module Graph:
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
  The provider used by JShell to generate the execution engine needed to evaluate Snippets.
  Tool
  Common interface for tools that can be invoked from a program.
  Uses
  Type
  Description
  ExecutionControlProvider
  The provider used by JShell to generate the execution engine needed to evaluate Snippets.