JShell이란?
JShell은 Java 9에서 처음 도입된 대화형 도구(REPL, Read-Eval-Print Loop)입니다. JShell을 사용하면 main() 메서드 없이도 표현식, 변수, 메서드, 클래스 등 다양한 코드 조각(스니펫)을 즉시 작성하고 실행하며 결과를 바로 확인할 수 있어 학습과 간단한 테스트에 매우 유용합니다.
ID로 이전 스니펫 실행하기
JShell은 입력된 모든 스니펫에 고유한 ID를 자동으로 부여합니다. 슬래시(/) 뒤에 해당 ID를 입력하면 이전에 실행했던 스니펫을 언제든지 다시 실행할 수 있습니다.
예를 들어 /1을 입력하면 JShell이 가장 먼저 입력한 첫 번째 스니펫을 화면에 표시하고, 다시 실행한 뒤 그 결과를 보여줍니다. 또한 /! 명령을 사용하면 직전에 입력한 마지막 스니펫을 유효 여부와 관계없이 그대로 재실행할 수 있습니다.
예제 1: /1, /2, /3, /4로 스니펫 재실행
아래 코드에서는 여러 개의 스니펫을 생성한 후, 각 ID를 지정하여 순서대로 다시 실행하는 과정을 확인할 수 있습니다.
C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro
jshell> 2+10
$1 ==> 12
jshell> String s = "Tutorialspoint"
s ==> "Tutorialspoint"
jshell> System.out.println("Tutorialspoint")
Tutorialspoint
jshell> int num1 = 25
num1 ==> 25
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예제 2: /!로 마지막 스니펫 재실행
다음 코드에서는 /! 명령을 사용하여 마지막에 입력한 스니펫을 다시 실행하는 방법을 보여줍니다.
jshell> 2+5 $1 ==> 7 jshell> 10-6 $2 ==> 4 jshell> /1 2+5 $3 ==> 7 jshell> /! 2+5 $4 ==> 7
정리
JShell에서는 /ID 형식으로 특정 스니펫을, /!로 가장 최근 스니펫을 손쉽게 재실행할 수 있습니다. 이 기능을 활용하면 동일한 코드를 반복해서 입력할 필요 없이 빠르게 실험하고 결과를 검증할 수 있습니다.