Tutorial

Java REPL - jshell

Published on August 4, 2022
author

Rambabu Posa

Java REPL - jshell

Java REPL or jshell is the new tool introduced in java 9. Today we will look into Java REPL basics and run some test programs in jshell interface.

Java REPL

Let’s first try to understand why REPL support was added in Java, if it was that important then why in so late release. As you know, Scala has become very popular to develop from small to large-scale applications because of it’s features and advantages. It supports multi-paradigm (Object-Oriented and Functional Programming) and REPL. Oracle Corporation is trying to integrate most of Scala features into Java. They have already integrated some functional programming features as part of Java 8, such as lambda expressions. Scala’s one of the best features is REPL (Read-Evaluate-Print-Loop). It’s a command line interface and Scala Interpreter to execute Scala programs. It’s very easy to use Scala REPL to learn basics of scala programming and even run small test code. Because of Scala REPL and it’s benefits in reducing the learning curve and ease of running test code, Java REPL got introduced in java 9.

Java REPL - jshell

Java REPL application name is jshell. JShell stands for Java Shell. jshell is an interactive tool to execute and evaluate java simple programs like variable declarations, statements, expressions, simple Programs etc. Open command prompt and check java version to make sure you have java 9 or above, then only you can use jshell. java repl, jshell Since jshell don’t need any IDEs or extra editors to execute simple java programs, It’s very useful for beginners in core java and experts to use it to learn and evaluate new features and small test code.

Java REPL - jshell basics

We can access Java REPL by using jshell command available as shown in below image. java repl Now, it’s time to execute few simple java examples to get the taste of java REPL tool.

pankaj:~ pankaj$ jshell 
|  Welcome to JShell -- Version 9
|  For an introduction type: /help intro

jshell> 

jshell> System.out.println("Hello World");
Hello World

jshell> String str = "Hello JournalDev Users"
str ==> "Hello JournalDev Users"

jshell> str
str ==> "Hello JournalDev Users"

jshell> System.out.println(str)
Hello JournalDev Users

jshell> int counter = 0
counter ==> 0

jshell> counter++
$6 ==> 0

jshell> counter
counter ==> 1

jshell> counter+5
$8 ==> 6

jshell> counter
counter ==> 1

jshell> counter=counter+5
counter ==> 6

jshell> counter
counter ==> 6

jshell> 

java repl example As shown in the above Java REPL examples, it’s very easy to develop “Hello World” program. We don’t need to define “public class” and public static void main(String[] args) method just to print one message. NOTE: We don’t need to use “semicolons” for simple statements as shown in the above diagram.

Java REPL - execute class

We can also define and execute class methods in Java REPL shell.

jshell> class Hello {
   ...> public static void sayHello() {
   ...> System.out.print("Hello");
   ...> }
   ...> }
|  created class Hello

jshell> Hello.sayHello()
Hello
jshell> 

java repl class

Java REPL - Help and Exit

To get jshell tool help section, use /help command. To exit from jshell, use command /exit.

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>
...

jshell> /exit
|  Goodbye
pankaj:~ pankaj$ 

We can also use Ctrl + D command to exit from jshell tool. That’s all about Java REPL and jshell tool basics, read more at jshell - java shell. Reference: JEP 222

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the author(s)

Category:
Tutorial
Tags:

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
JournalDev
DigitalOcean Employee
DigitalOcean Employee badge
December 5, 2015

Mind-blowing tutorial on Java SE 9. explained very well. Please deliver some more tutorials on Java 9. I want to learn it before release. Thank you so much

- Suresh

    JournalDev
    DigitalOcean Employee
    DigitalOcean Employee badge
    January 30, 2016

    Very nice tutorial. Please postry more tutorials on java 9.

    - Rakesh

      JournalDev
      DigitalOcean Employee
      DigitalOcean Employee badge
      July 18, 2016

      Thank you :)

      - Priya

        JournalDev
        DigitalOcean Employee
        DigitalOcean Employee badge
        August 3, 2016

        Nice Tutorial with hands-on images and well narrated steps.

        - Balamurugan Guruswamy

          JournalDev
          DigitalOcean Employee
          DigitalOcean Employee badge
          October 13, 2016

          I would be interested in knowing how garbage collection would happen in JShell jvm processes. Users might create huge variables and forget about them… how would Java handle that intelligently?

          - Anjaneya

          JournalDev
          DigitalOcean Employee
          DigitalOcean Employee badge
          October 13, 2016

          Thanks for reading my tutorials. Yes sure. I have already released Java SE 9 REPL Part-2. Wait for Part-3 post to answer your question. Ram

          - Rambabu Posa

          JournalDev
          DigitalOcean Employee
          DigitalOcean Employee badge
          July 20, 2017

          Hey! When are you planning to publish part-3 for it. As I’ve the same doubt related to Garbage Collection?

          - Rachit

            JournalDev
            DigitalOcean Employee
            DigitalOcean Employee badge
            September 20, 2017

            In what ways do you feel the jshell GC works differently than GC in the JVM? Jshell uses exactly the same GC algorithms as any other java application.

            - Filip

              JournalDev
              DigitalOcean Employee
              DigitalOcean Employee badge
              November 5, 2016

              Loved this tutorial. keep it up.

              - vega

                JournalDev
                DigitalOcean Employee
                DigitalOcean Employee badge
                January 29, 2017

                Cool Feature it’s lot helpful for beginners to learn concepts

                - Ramesh

                  JournalDev
                  DigitalOcean Employee
                  DigitalOcean Employee badge
                  October 11, 2017

                  It’s very Nice… Thank You.!!

                  - Vinay

                    JournalDev
                    DigitalOcean Employee
                    DigitalOcean Employee badge
                    October 27, 2017

                    how to set classpath of java 9 . thank you it’svery usefull

                    - Rajeev Ranjan

                      Try DigitalOcean for free

                      Click below to sign up and get $200 of credit to try our products over 60 days!

                      Sign up

                      Join the Tech Talk
                      Success! Thank you! Please check your email for further details.

                      Please complete your information!

                      Become a contributor for community

                      Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

                      DigitalOcean Documentation

                      Full documentation for every DigitalOcean product.

                      Resources for startups and SMBs

                      The Wave has everything you need to know about building a business, from raising funding to marketing your product.

                      Get our newsletter

                      Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

                      New accounts only. By submitting your email you agree to our Privacy Policy

                      The developer cloud

                      Scale up as you grow — whether you're running one virtual machine or ten thousand.

                      Get started for free

                      Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

                      *This promotional offer applies to new accounts only.