

Table of Contents
Requirement jshell :
Immediate feedback is important when learning a programming language. The number one reason schools cite for moving away from Java as a teaching language is that other languages have a “REPL” and have far lower bars to an initial "Hello, world!"
program. A Read-Eval-Print Loop (REPL) is an interactive programming tool which loops, continually reading user input, evaluating the input, and printing the value of the input or a description of the state change the input caused. Scala, Ruby, JavaScript, Haskell, Clojure, and Python all have REPLs and all allow small initial programs. JShell adds REPL functionality to the Java platform.
Exploration of coding options is also important for developers prototyping code or investigating a new API. Interactive evaluation is vastly more efficient in this regard than edit/compile/execute and System.out.println
.
Let’s move towards examples:
Jshell Features
Following functionally provided by java 9 JShell:
- Import Declaration
- Class Declaration
- Interface Declaration
- Method Declaration
- Field Declaration
- Statement
- Primary
1. JShell Statement
> jshell 10+5 $9 ==> 15

jshell-mathematical-calculation
jshell> String companyName="Javadeveloperzone"; companyName ==> "Javadeveloperzone" jshell> System.out.println(companyName); Javadeveloperzone
2. Jshell Class declaration
jshell > class Exployee { String name; Exployee(String name){ this.name=name; } public String getName() { return this.name; } } Exployee e=new Exployee("subhash"); e.getName();

jshell-create-class-example
3. Jshell method declaration:
public void methodUsingJSehll(){ System.out.println("I am created using JShell. I donot inside any class"); }

jshell-function-declaration
JShell does not support following things:
- In a top-level declaration, the access modifiers (
public
,protected
, andprivate
), and the modifiersfinal
andstatic
are not allowed and are ignored with a warning; the modifiersdefault
andsynchronized
are not allowed, and the modifierabstract
is allowed only on classes. - The
break
,continue
, andreturn
statements have no appropriate context at the top-level, and are not allowed. - Package Declaration is not allowed. All JShell code is placed in the transient
jshell
package. - In JShell, each unique declaration key has exactly one declaration at any given time. For variables and classes the unique declaration key is the name, and, in support of overloading, the unique declaration key for methods is the name and the parameter types (to allow for overloading). As this is Java, variable, methods, and classes each have their own name spaces.
Ref: http://openjdk.java.net/jeps/222