JShell เป็นเครื่องมือโต้ตอบตั้งแต่ Java 9 เป็น REPL tool רשמיแรกของ Java สร้างสภาพแวดล้อมโปรแกรมมิ่งง่ายๆ ใน command line อ่าน input ผู้ใช้ ประเมินค่า และพิมพ์ผลลัพธ์
สามารถสร้าง JShell instance ใหม่แบบโปรแกรม ได้ในภาษา Java JShell และ API ที่เกี่ยวข้องอยู่ใน package jdk.jshell ได้ instance ใหม่ด้วย static method create() ของคลาส JShell เมธอด eval() ของคลาส JShell ใช้เพิ่มนิพจน์เข้า JShell instance คืน list ของ events ที่ triggered โดยการประเมินค่า เป็น snippet เดียวอย่าง expression statement method class variable declaration หรือ import statement แต่ละ SnippetEvent จาก eval() ตรวจสอบ output ของ expression ด้วย SnippetEvent.value()
ตัวอย่าง: สร้าง JShell Instance แบบโปรแกรม
import java.util.List;
import jdk.jshell.*;
public class JShellTest {
public static void main(String args[]) {
JShell jshell = JShell.create();
List<SnippetEvent> list = jshell.eval("int x = 7+3*4;");
System.out.println("Size of list: " + list.size());
System.out.println("Value of the expression is : " + list.get(0).value());
}
}
ผลลัพธ์
Size of snippetEventList : 1
Value of the expression is : 19
API สำคัญใน jdk.jshell
| Class/Interface | คำอธิบาย |
|---|---|
| JShell | Entry point สร้าง instance ด้วย create() |
| SnippetEvent | Event จากการ eval() มี kind, snippet, value() |
| Snippet | แทน code snippet (expression, statement, declaration) |
| SourceCodeAnalysis | วิเคราะห์ source code (completion, documentation) |
| Diag | Diagnostic (error, warning) จากการคอมไพล์ |