JShell은 Java 9에서 새롭게 도입된 대화형 명령줄 도구입니다. 입력을 받아 평가한 후 결과를 명령줄을 통해 사용자에게 출력하기 때문에 REPL(Read-Eval-Print-Loop)이라고도 부릅니다.
JShell에서는 일반 Java 코드와 마찬가지로 여러 줄에 걸친 제어 흐름 문(control flow statements)을 실행할 수 있습니다. if-else 문, for 루프, while 루프 같은 제어 흐름 문도 모두 JShell에서 그대로 사용할 수 있습니다.
JShell은 여러 줄로 구성된 문장을 인식하면 다음 줄을 입력하라는 의미로 프롬프트 기호 "...>"를 표시합니다. 이 기호가 나타나면 나머지 코드를 계속 입력하면 됩니다.
if-else 문 예제
jshell> int distance = 50
distance ==> 50
jshell> if(distance < 30) {
...> System.out.println("It's near");
...> } else {
...> System.out.println("It's far");
...> }
It's far
jshell>위 예제에서 변수 distance의 값이 50이므로 조건식 distance < 30은 거짓(false)이 되고, else 블록의 "It's far"가 출력됩니다.
while 루프 예제
jshell> int i = 10
i ==> 10
jshell> while(i < 25) {
...> System.out.println(i + " ");
...> i++;
...> }
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
jshell>변수 i가 10부터 시작해 조건 i < 25를 만족하는 동안 값을 하나씩 증가시키며 반복 출력합니다. 따라서 10부터 24까지 총 15개의 숫자가 순서대로 출력됩니다.
for 루프 예제
jshell> String names[] = {"Adithya", "Jai", "Raja", "Chaitanya", "Ravi", "Surya"}
names ==> String[6] { "Adithya", "Jai", "Raja", "Chaitanya", "Ravi", "Surya" }
jshell> for(String name : names) {
...> System.out.println(name);
...> }
Adithya
Jai
Raja
Chaitanya
Ravi
Surya
jshell>위 예제는 향상된 for 문(for-each)을 활용해 문자열 배열 names의 요소를 하나씩 꺼내 출력합니다. 배열의 크기를 직접 관리할 필요 없이 간결하게 반복 처리할 수 있다는 점이 특징입니다.
정리
JShell을 사용하면 별도의 클래스나 main 메서드를 작성하지 않고도 제어 흐름 문을 즉시 테스트할 수 있습니다. 코드를 한 줄씩 입력하면서 결과를 바로 확인할 수 있기 때문에, 간단한 로직 검증이나 학습용 실험 환경으로 매우 유용합니다.