ابزار JShell  یک ابزار تعاملی کامندلاینی برای یادگیری زبان برنامه نویسی جاوا و نمونه سازی کد جاوا است که در ورژن 9 زبان جاوا معرفی شده است. یکی از کارهای دست و پا گیر در یادگیری جاوا خصوصا تست کردن و یادگیری ویژگی جدید در ورژن های جدید جاوا ، یا تست کردن و پیاده سازی یک کد دلخواه ، درست کردن کلاس و بعد پیاده سازی متد main و کامپایل و... است که تا حدودی دست و پا گیر و وقت گیر است .
در JShell بدون نیاز به ساختن کلاس و متد و ... به آسانی میتوانید کدهای جاوا مانند تعریف متغیر ، لیست و آرایه و...  را در کنسول JShell تایپ کرده و بدون معطلی خروجی را مشاهده کنید .
با استفاده از JShell به راحتی میتوانید از API های ناآشنا استفاده کنید ، همچنین به راحتی میتوانید statement ها و متدهای خود را در Jshell پیاده سازی و تست کنید .
JShell را به دلیل امکاناتش ، REPL نیز مینامند که مخفف کلمات زیر است :

Read : وارد کردن و خواندن کد
Evaluate : ارزیابی کد
Print  : چاپ نتایج
Loop : استفاده از حلقه ها

برای استفاده از Jshell میتوان با تایپ کردن jshell در محیط ترمینال وارد محیط Jshell شد .

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

jshell>​

حال میتوان به راحتی در محیط jshell کدهای جاوا را تایپ و اجرا کرد مانند :

- تعریف کلاس ها 
- Statement ها
- تعریف اینترفیس
- تعریف متد
- تعریف فیلد و...

تعریف متغیر ها :
int a = 5
a ==> 5​

int b = 3
b ==> 3

 

تعریف متد :

public int sum (int x,int y){ return x+y; }
|created method sum(int,int)

jshell> sum(a,b)

$2==>8

 

حلقه ها در JShell :

jshell> String[] cities = {"Shiraz", "Isfahan", "Rasht", "Tehran"}
cities==> String[4] { "Shiraz", "Isfahan", "Rasht", "Tehran"}

jshell> for(String city : cities) {
   ...>     System.out.println(city);
   ...> }
Shiraz
Isfahan
Rasht
Tehran

 

Jshell یک سری پکیج پرکاربرد جاوا را به صورت پیشفرض import کرده است . با تایپ imports/ میتوان لیست آنها را مشاهده کرد :

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


برای ایمپورت کردن پکیج های دیگر مانند پکیج time و... در صورت نیاز میتوان از دستور زیر استفاده کرد :

import java.time.*