JShell Step by Step

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

[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

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>|-all|-start]
| 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|-history|-start] <file>
| Save snippet source to a file.
| /open <file>
| open a file as source input
| /vars [<name or id>|-all|-start]
| list the declared variables and their values
| /methods [<name or id>|-all|-start]
| list the declared methods and their signatures
| /types [<name or id>|-all|-start]
| 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>|<subject>]
| get information about jshell
| /set editor|start|feedback|mode|prompt|truncation|format ...
| set jshell configuration information
| /? [<command>|<subject>]
| 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.

Join the Red Hat Developer Program (it’s free) and get access to related cheat sheets, books, and product downloads.