JShell은 Java 9에서 처음 도입된 REPL(Read-Evaluate-Print-Loop) 도구입니다. 이 도구를 사용하면 명령줄 환경에서 간단한 코드 조각(스니펫)을 즉시 실행하고 결과를 확인할 수 있습니다.
JShell 세션 시작과 종료
터미널이나 명령 프롬프트에 "jshell"을 입력하면 JShell 세션이 시작됩니다. 세션을 종료할 때는 "/exit" 명령을 사용하고, 특정 명령의 사용법을 찾아볼 때는 "/help" 명령을 활용합니다.
/reload — 기존 스니펫 다시 실행하기
"/reload" 명령을 사용하면 현재 JShell 세션에 입력된 모든 기존 스니펫을 다시 실행할 수 있습니다. 반면 "/reset" 명령은 세션의 이전 코드를 모두 제거하여 상태를 초기화하는 역할을 합니다.
아래 예제에서는 여러 개의 스니펫을 생성해 보겠습니다.
jshell> 2+10
$1 ==> 12
jshell> String s = "Tutorialspoint"
s ==> "Tutorialspoint"
jshell> System.out.println("Tutorialspoint")
Tutorialspoint
jshell> int num1 = 25
num1 ==> 25JShell에서는 스니펫 번호를 입력하여 해당 코드를 개별적으로 다시 실행할 수도 있습니다.
jshell> /1
2+10
$5 ==> 12
jshell> /2
String s = "Tutorialspoint";
s ==> "Tutorialspoint"
jshell> /3
System.out.println("Tutorialspoint")
Tutorialspoint
jshell> /4
int num1 = 25;
num1 ==> 25이제 "/reload" 명령을 적용해 보겠습니다. JShell은 상태를 재시작하고 복원한 뒤, 기존에 입력된 모든 스니펫을 순서대로 다시 실행하고 그 결과를 출력합니다.
jshell> /reload
| Restarting and restoring state.
-: 2+10
-: String s = "Tutorialspoint";
-: System.out.println("Tutorialspoint")
Tutorialspoint
-: int num1 = 25;
-: 2+10
-: String s = "Tutorialspoint";
-: System.out.println("Tutorialspoint")
Tutorialspoint
-: int num1 = 25;
-: int num1 = 25;/reset — 세션 상태 초기화하기
"/reset" 명령을 사용하면 JShell 세션의 이전 코드가 모두 제거되고 "Resetting state"라는 메시지가 출력됩니다. 이후 세션은 초기 상태로 돌아갑니다.
jshell> /reset | Resetting state. jshell>
정리하면, /reload는 기존 스니펫을 그대로 유지한 채 전체를 재실행할 때 유용하고, /reset은 모든 내역을 지우고 처음부터 작업을 시작하고 싶을 때 사용하는 것이 좋습니다.