JShell (Java Shell): Interactive Java Programming

JShell, introduced in Java 9, is a Read-Eval-Print Loop (REPL) tool that allows developers to interactively experiment with Java code. It provides a lightweight and convenient way to evaluate expressions, test code snippets, and explore Java features without the need for a full-fledged compilation and execution cycle. Let’s explore the key features and usage of JShell.

Key Features:

1. Interactive Execution:

  • JShell allows developers to enter Java expressions, statements, and declarations interactively. The tool immediately evaluates and displays the results.
   jshell> int x = 5;
   x ==> 5

   jshell> x * 2
   $3 ==> 10

2. Automatic Variable Naming:

  • JShell automatically assigns names like $1, $2, etc., to variables, making it easy to reference and reuse results.
   jshell> String message = "Hello, JShell!";
   message ==> "Hello, JShell!"

   jshell> $1.length()
   $2 ==> 14

3. Tab Completion:

  • JShell supports tab completion for commands, types, and method names, enhancing the developer’s productivity.
   jshell> String msg = "Hello, JShell!";
   msg ==> "Hello, JShell!"

   jshell> msg.le<tab>

4. Command and Variable Recall:

  • Developers can recall and edit previous commands and expressions using the arrow keys or by referencing their assigned variable names.
   jshell> int x = 10;
   x ==> 10

   jshell> x * x
   $2 ==> 100

   jshell> /list $1
   int x = 10;

5. Exception Handling:

  • JShell provides information about exceptions, helping developers identify and fix issues in real-time.
   jshell> int result = 10 / 0;
   |  Exception java.lang.ArithmeticException: / by zero
   |        at (#1:1)


1. Launching JShell:

  • Open a terminal or command prompt and type jshell to launch the Java Shell.
   $ jshell
   |  Welcome to JShell -- Version 16
   |  For an introduction type: /help intro

2. Entering Code:

  • Enter Java code directly into the JShell prompt. Press Enter to execute the code.
   jshell> int x = 42;
   x ==> 42

3. Listing Variables and Methods:

  • Use /vars and /methods commands to list variables and methods, respectively.
   jshell> String message = "Hello, JShell!";
   message ==> "Hello, JShell!"

   jshell> /vars
   String message = "Hello, JShell!"

4. Exiting JShell:

  • Type /exit or press Ctrl+D to exit JShell.
   jshell> /exit
   |  Goodbye

Use Cases:

1. Code Exploration:

  • Use JShell to quickly explore Java features, APIs, and libraries without the need for a full Java project.

2. Testing Code Snippets:

  • Test small code snippets or expressions to understand their behavior before incorporating them into a larger project.

3. Learning Java:

  • JShell is an excellent tool for learning Java, allowing beginners to experiment and understand the language constructs interactively.

4. Prototyping:

  • Rapidly prototype and iterate on code ideas without the overhead of creating and managing full Java classes.


JShell is a valuable addition to the Java developer’s toolkit, providing an interactive and exploratory environment for working with Java code. Whether you’re learning Java, testing code snippets, or prototyping ideas, JShell offers a lightweight and efficient way to experiment with Java features. Incorporate JShell into your workflow to enhance your Java programming experience.