Hôm nay chúng ta sẽ tìm hiểu những kiến thức cơ bản về Java REPL (jshell) trong Java 9 và chạy một số chương trình thử nghiệm trong giao diện jshell.

Tại sao REPL được thêm vào trong Java?
Trước tiên, hãy thử hiểu tại sao REPL lại được thêm vào trong Java, và nếu nó quan trọng đến vậy thì tại sao lại xuất hiện muộn như vậy. Như bạn biết, Scala đã trở nên rất phổ biến trong việc phát triển từ ứng dụng nhỏ đến ứng dụng quy mô lớn nhờ các tính năng và ưu điểm của nó. Nó hỗ trợ multi-paradigm (Object-Oriented và Functional Programming) và REPL. Oracle Corporation đang cố gắng tích hợp hầu hết các tính năng của Scala vào Java. Họ đã tích hợp một số tính năng của functional programming vào Java 8, chẳng hạn như lambda expressions. Một trong những tính năng tốt nhất của Scala là REPL (Read-Evaluate-Print-Loop). Đây là một command line interface và Scala Interpreter để thực thi các chương trình Scala. Rất dễ dàng để sử dụng Scala REPL nhằm học những kiến thức cơ bản của lập trình Scala và thậm chí chạy các đoạn code thử nghiệm nhỏ. Nhờ có Scala REPL và những lợi ích của nó trong việc giảm độ khó khi học cũng như sự tiện lợi khi chạy code thử, Java REPL đã được giới thiệu trong Java 9.
Java REPL
Ứng dụng Java REPL có tên là jshell. JShell là viết tắt của Java Shell.
jshell là một công cụ interactive để thực thi và đánh giá các chương trình Java đơn giản như khai báo biến (variable declarations), câu lệnh (statements), biểu thức (expressions), các chương trình nhỏ (simple programs), v.v.
Hãy mở dấu nhắc lệnh (command prompt) và kiểm tra phiên bản Java để chắc chắn rằng bạn đang sử dụng Java 9 hoặc cao hơn, bởi chỉ từ phiên bản này trở đi bạn mới có thể dùng jshell.

Bây giờ, đã đến lúc thực thi một vài ví dụ Java đơn giản để trải nghiệm công cụ Java REPL.
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>

Như được minh họa trong các ví dụ Java REPL ở trên, việc phát triển chương trình “Hello World” rất dễ dàng. Chúng ta không cần phải định nghĩa “public class” và phương thức public static void main(String[] args) chỉ để in ra một thông báo.
Lưu ý: Chúng ta không cần sử dụng “dấu chấm phẩy” (“semicolons” ) cho các câu lệnh đơn giản như trong sơ đồ trên.
Java REPL – execute class
Chúng ta cũng có thể định nghĩa và thực thi các class methods trong Java REPL shell.
jshell> class Hello {
...> public static void sayHello() {
...> System.out.print("Hello");
...> }
...> }
| created class Hello
jshell> Hello.sayHello()
Hello
jshell>

Java REPL – Trợ giúp và thoát
Để mở phần trợ giúp của công cụ jshell, sử dụng lệnh /help. Để thoát khỏi jshell, sử dụng lệnh /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$
Chúng ta cũng có thể sử dụng tổ hợp phím Ctrl + D để thoát khỏi công cụ jshell. Như vậy là toàn bộ phần cơ bản về Java REPL và công cụ jshell, đọc thêm tại jshell – java shell. Tham khảo: JEP 222.