JShell이란 무엇인가?
JShell은 Java를 대화형으로 학습할 수 있도록 도와주는 도구로, REPL(Read-Evaluate-Print-Loop) 방식으로 동작합니다. 즉, 사용자가 입력한 선언문, 구문, 표현식을 즉시 평가하고 그 결과를 바로 확인할 수 있습니다.
이전 세션의 코드 재사용하기
JShell 세션을 종료한 후 새로운 세션을 시작할 때, 이전에 입력했던 코드를 다시 활용하고 싶은 경우가 자주 발생합니다. 이럴 때 /open [파일_경로] 명령어를 사용하면 됩니다. 이 명령어는 지정된 파일 경로에 있는 모든 코드와 내부 명령어들을 현재 JShell 세션으로 불러옵니다.
일반적으로 소스 코드는 .jsh 확장자를 가진 파일로 저장되며, 아래 예제에서는 /open [파일_경로] 명령어를 사용해 해당 파일의 소스 코드를 로드하는 과정을 보여줍니다.
실행 예제
C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro
jshell> x
| Error:
| cannot find symbol
| symbol: variable x
| x
| ^
jshell> y
| Error:
| cannot find symbol
| symbol: variable y
| y
| ^
jshell> /list
jshell> /open C:\Users\User\Desktop\save.jsh
jshell> /list
1 : int x = 15;
2 : double y = 25.0;
3 : public int sum(int a, int b) {
return a + b;
}
jshell> x
x ==> 15
jshell> y
y ==> 25.0
jshell> int result = sum(5, 7)
result ==> 12예제 설명
위 실행 결과를 단계별로 살펴보면 다음과 같습니다.
1. 처음 JShell을 실행한 상태에서 변수 x와 y를 입력하면 'cannot find symbol' 오류가 발생합니다. 아직 해당 변수들이 정의되지 않았기 때문입니다.
2. /list 명령어를 실행해도 아무것도 출력되지 않는데, 이는 현재 세션에 입력된 코드가 없음을 의미합니다.
3. /open C:\Users\User\Desktop\save.jsh 명령어를 통해 데스크톱에 저장된 save.jsh 파일을 로드합니다.
4. 다시 /list 명령어를 실행하면 파일에 저장되어 있던 변수 선언(int x = 15;, double y = 25.0;)과 메서드 정의(sum)가 모두 로드된 것을 확인할 수 있습니다.
5. 이후 변수 x, y의 값을 조회하거나 로드된 sum 메서드를 호출하여 sum(5, 7)의 결과인 12를 정상적으로 얻을 수 있습니다.
정리
이처럼 JShell에서는 /open 명령어를 사용하여 이전에 저장해 둔 .jsh 파일의 코드를 손쉽게 불러올 수 있습니다. 이를 통해 세션이 종료되더라도 작업 내용을 지속적으로 재사용할 수 있어 학습과 실험 과정의 효율성이 크게 향상됩니다.