Skip to main content
Redhat Developers  Logo
  • Products

    Featured

    • Red Hat Enterprise Linux
      Red Hat Enterprise Linux Icon
    • Red Hat OpenShift AI
      Red Hat OpenShift AI
    • Red Hat Enterprise Linux AI
      Linux icon inside of a brain
    • Image mode for Red Hat Enterprise Linux
      RHEL image mode
    • Red Hat OpenShift
      Openshift icon
    • Red Hat Ansible Automation Platform
      Ansible icon
    • Red Hat Developer Hub
      Developer Hub
    • View All Red Hat Products
    • Linux

      • Red Hat Enterprise Linux
      • Image mode for Red Hat Enterprise Linux
      • Red Hat Universal Base Images (UBI)
    • Java runtimes & frameworks

      • JBoss Enterprise Application Platform
      • Red Hat build of OpenJDK
    • Kubernetes

      • Red Hat OpenShift
      • Microsoft Azure Red Hat OpenShift
      • Red Hat OpenShift Virtualization
      • Red Hat OpenShift Lightspeed
    • Integration & App Connectivity

      • Red Hat Build of Apache Camel
      • Red Hat Service Interconnect
      • Red Hat Connectivity Link
    • AI/ML

      • Red Hat OpenShift AI
      • Red Hat Enterprise Linux AI
    • Automation

      • Red Hat Ansible Automation Platform
      • Red Hat Ansible Lightspeed
    • Developer tools

      • Red Hat Trusted Software Supply Chain
      • Podman Desktop
      • Red Hat OpenShift Dev Spaces
    • Developer Sandbox

      Developer Sandbox
      Try Red Hat products and technologies without setup or configuration fees for 30 days with this shared Openshift and Kubernetes cluster.
    • Try at no cost
  • Technologies

    Featured

    • AI/ML
      AI/ML Icon
    • Linux
      Linux Icon
    • Kubernetes
      Cloud icon
    • Automation
      Automation Icon showing arrows moving in a circle around a gear
    • View All Technologies
    • Programming Languages & Frameworks

      • Java
      • Python
      • JavaScript
    • System Design & Architecture

      • Red Hat architecture and design patterns
      • Microservices
      • Event-Driven Architecture
      • Databases
    • Developer Productivity

      • Developer productivity
      • Developer Tools
      • GitOps
    • Secure Development & Architectures

      • Security
      • Secure coding
    • Platform Engineering

      • DevOps
      • DevSecOps
      • Ansible automation for applications and services
    • Automated Data Processing

      • AI/ML
      • Data Science
      • Apache Kafka on Kubernetes
      • View All Technologies
    • Start exploring in the Developer Sandbox for free

      sandbox graphic
      Try Red Hat's products and technologies without setup or configuration.
    • Try at no cost
  • Learn

    Featured

    • Kubernetes & Cloud Native
      Openshift icon
    • Linux
      Rhel icon
    • Automation
      Ansible cloud icon
    • Java
      Java icon
    • AI/ML
      AI/ML Icon
    • View All Learning Resources

    E-Books

    • GitOps Cookbook
    • Podman in Action
    • Kubernetes Operators
    • The Path to GitOps
    • View All E-books

    Cheat Sheets

    • Linux Commands
    • Bash Commands
    • Git
    • systemd Commands
    • View All Cheat Sheets

    Documentation

    • API Catalog
    • Product Documentation
    • Legacy Documentation
    • Red Hat Learning

      Learning image
      Boost your technical skills to expert-level with the help of interactive lessons offered by various Red Hat Learning programs.
    • Explore Red Hat Learning
  • Developer Sandbox

    Developer Sandbox

    • Access Red Hat’s products and technologies without setup or configuration, and start developing quicker than ever before with our new, no-cost sandbox environments.
    • Explore Developer Sandbox

    Featured Developer Sandbox activities

    • Get started with your Developer Sandbox
    • OpenShift virtualization and application modernization using the Developer Sandbox
    • Explore all Developer Sandbox activities

    Ready to start developing apps?

    • Try at no cost
  • Blog
  • Events
  • Videos

JShell Step by Step

October 24, 2017
Amit Nijhawan
Related topics:
Java

Share:

    Java 9 has added the following new features:

    1. Java 9 REPL (JShell)
    2. Factory methods for immutable List, Set, Map, and Map.Entry
    3. Private methods in Interfaces
    4. Java 9 module system
    5. Process API improvements
    6. Try with Resources improvement
    7. CompletableFuture API improvements
    8. Reactive Streams

    I am going to explore JShell in this blog.

    Steps to follow:

    1. Download Java 9 from scratch and install.
    2. Run the shell.
    3. Get help from Java 9's REPL.
    4. Run a few calculations in JShell.
    5. Define a function and use it.

    Step 1: Download Java 9

    • Go to: http://jdk.java.net/9/ and download on the jdk 9.
    • Verify you have it installed or not.
    [anijhawa@anijhawa ~]$ java -version
    java version "9-ea"
    Java(TM) SE Runtime Environment (build 9-ea+165)
    Java HotSpot(TM) 64-Bit Server VM (build 9-ea+165, mixed mode)
    

    Step 2: Run JShell

    To connect jshell, type jshell in the terminal.

    [anijhawa@anijhawa ~]$ jshell
    | Welcome to JShell -- Version 9-ea
    | For an introduction type: /help intro
    jshell>
    

    Step 3: Get Help

    • Type /help on the terminal and get a list of things can do with JShell:
    jshell> /help
    | Type a Java language expression, statement, or declaration.
    | Or type one of the following commands:
    | /list [<name or id>]
    | list the source you have typed
    | /edit <name or id>
    | edit a source entry referenced by name or id
    | /drop <name or id>
    | delete a source entry referenced by name or id
    | /save [-all] <file>
    | Save snippet source to a file.
    | /open <file>
    | open a file as source input
    | /vars [<name or id>]
    | list the declared variables and their values
    | /methods [<name or id>]
    | list the declared methods and their signatures
    | /types [<name or id>]
    | list the declared types
    | /imports
    | list the imported items
    | /exit
    | exit jshell
    | /env [-class-path <path>] [-module-path <path>] [-add-modules <modules>] ...
    | view or change the evaluation context
    | /reset [-class-path <path>] [-module-path <path>] [-add-modules <modules>]...
    | reset jshell
    | /reload [-restore] [-quiet] [-class-path <path>] [-module-path <path>]...
    | reset and replay relevant history -- current or previous (-restore)
    | /history
    | history of what you have typed
    | /help [<command>]
    | get information about jshell
    | /set editor|start|feedback|mode|prompt|truncation|format ...
    | set jshell configuration information
    | /? [<command>]
    | get information about jshell
    | /!
    | re-run last snippet
    | /<id>
    | re-run snippet by id
    | /-<n>
    | re-run n-th previous snippet
    |
    | For more information type '/help' followed by the name of a
    | command or a subject.
    | For example '/help /list' or '/help intro'.
    |
    | Subjects:
    |
    | intro
    | an introduction to the jshell tool
    | shortcuts
    | a description of keystrokes for snippet and command completion,
    | information access, and automatic code generation
    | context
    | the evaluation context options for /env /reload and /reset
    
    • From /help command one of interesting command/imports, please try this and see the by default imports below:
    jshell> /imports 
    | import java.io.*
    | import java.math.*
    | import java.net.*
    | import java.nio.file.*
    | import java.util.*
    | import java.util.concurrent.*
    | import java.util.function.*
    | import java.util.prefs.*
    | import java.util.regex.*
    | import java.util.stream.*
    

    Step 4: Do some basic calculations.

    jshell> 2+2
    $1 ==> 4
    
    jshell> 4%7
    $2 ==> 4
    
    jshell> 14&3
    $3 ==> 2
    
    jshell> $2// we got variable number two!
    $2 ==> 4
    

    Step 5: Multiply Function Code

    Let's define a function that takes an int and square it, then let's call it.

    jshell> int squareThis(int i){return i*i;}
    | created method squareThis(int)
    
    jshell> squareThis(5)
    $6 ==> 25

    To build your Java EE Microservice visit WildFly Swarm and download the cheat sheet.

    Last updated: November 15, 2018

    Recent Posts

    • Meet the Red Hat Node.js team at PowerUP 2025

    • How to use pipelines for AI/ML automation at the edge

    • What's new in network observability 1.8

    • LLM Compressor: Optimize LLMs for low-latency deployments

    • How to set up NVIDIA NIM on Red Hat OpenShift AI

    Red Hat Developers logo LinkedIn YouTube Twitter Facebook

    Products

    • Red Hat Enterprise Linux
    • Red Hat OpenShift
    • Red Hat Ansible Automation Platform

    Build

    • Developer Sandbox
    • Developer Tools
    • Interactive Tutorials
    • API Catalog

    Quicklinks

    • Learning Resources
    • E-books
    • Cheat Sheets
    • Blog
    • Events
    • Newsletter

    Communicate

    • About us
    • Contact sales
    • Find a partner
    • Report a website issue
    • Site Status Dashboard
    • Report a security problem

    RED HAT DEVELOPER

    Build here. Go anywhere.

    We serve the builders. The problem solvers who create careers with code.

    Join us if you’re a developer, software engineer, web designer, front-end designer, UX designer, computer scientist, architect, tester, product manager, project manager or team lead.

    Sign me up

    Red Hat legal and privacy links

    • About Red Hat
    • Jobs
    • Events
    • Locations
    • Contact Red Hat
    • Red Hat Blog
    • Inclusion at Red Hat
    • Cool Stuff Store
    • Red Hat Summit

    Red Hat legal and privacy links

    • Privacy statement
    • Terms of use
    • All policies and guidelines
    • Digital accessibility

    Report a website issue