Java 9 play with jshell ( interactive java console) Ubuntu

If you have installed Java 9 on your machine you can play with jshell ( interactive java console).

In this tutorial:

  • how to start jshell
  • basic commands
  • unassigned and assigned variables
  • classes
  • methods
  • if and for loop
  • imports
  • jshell autocompletion

If you need to install java 9 you can find how to donwload and install it here:

start console

The jshell can be started by command:

jshell

result:

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

basic commands in jshell

Here you can find several useful commands while working with jshell:

  • /exit - if you want to quit current session. Another option for Ubuntu shell is by pressing: CTRL+Z
  • /vars - list of all jshell variables - unassigned and assigned(check section variables). Result:
-> /vars
|    int x = 10
|    String $2 = "Java 9"
|    Test ts = Test@42e26948
|    int $11 = 10
|    int $12 = 10
  • /methods - list of jshell methods
-> /methods
|    printf (String,Object...)void
|    printX ()void
  • /imports - all jshell imports
-> /imports 
|    import java.util.*
|    import java.io.*
|    import java.math.*
|    import java.net.*
|    import java.util.concurrent.*
|    import java.util.prefs.*
|    import java.util.regex.*
|    import java.util.Arrays
  • /classes - all jshell classes
-> /classes
|    class Test
  • /list - jshell snippets if any
-> /list 

   1 : int x = 10;
   2 : "Java 9"
   3 : System.out.println($2);
   4 : class Test {
       }
   5 : Test ts = new Test();
   6 : System.out.println(ts);
   7 : void printX(){
       System.out.println("X");
       }
   8 : printX()
   9 : import java.util.Arrays;
  10 : if(x > 0){
       System.out.println(x);
       }
  11 : 10

assigned and unassigned/temporary variables

This is how assigned variable is declared ( as you notice you don't need to put semicolons):

  • assigned variable
-> int x = 10
|  Added variable x of type int with initial value 10
  • unassigned variable
-> "Java 9"
|  Expression value is: "Java 9"
|    assigned to temporary variable $2 of type String

In order to access temporary variable you need to write: $2

-> System.out.println($2);
Java 9

Define classes in jshell

If you want to add new empty class Test then you need to write only: class Test {}

-> class Test {
>> }
|  Added class Test

creating new intance is the same as in java and the access to the class methods, variables:

-> Test ts = new Test()
|  Added variable ts of type Test with initial value Test@42e26948

-> System.out.println(ts);
REPL.$REPL12$Test@42e26948

Method declaration in jshell

Declaring new method can be done the same way as a class. You can start to type the method line by line using semicolons and enter:

-> void printX(){
>> System.out.println("X");
>> }
|  Added method printX()

You need to use semicolons with methods.

Executed method in jshell

-> printX()
X

Jshell autocompletion

If you use TAB you will find all possible commands starting with current text:

-> print
printX()   printf(    

Jshell imports

You can add new imports to jshell by:

import java.util.Arrays;

To view all imports: /imports:

-> /imports
|    import java.util.*
|    import java.io.*
|    import java.math.*
|    import java.net.*
|    import java.util.concurrent.*
|    import java.util.prefs.*
|    import java.util.regex.*
|    import java.util.Arrays

Jshell for and if

if in jshell with assigned variable:

-> if(x > 0){
>> System.out.println(x);
>> }
10

for loop:

-> for(int i=0;i<5;i++){
>>  System.out.println(i);
>> }
0
1
2
3
4