Java 9는 JShell이라는 새로운 대화형(인터랙티브) 도구를 도입했습니다. 이 도구를 활용하면 자바의 클래스, 인터페이스, 열거형(enum), 객체, 문장(statement) 등을 사용자 친화적이고 간편한 방식으로 실행하고 테스트할 수 있습니다. JShell은 사용자가 입력한 명령을 평가(evaluate)하여 결과를 즉시 보여주는 방식으로 동작하며, REPL(Read-Evaluate-Print-Loop, 읽기-평가-출력-반복) 원리를 기반으로 작동합니다.
JShell의 주요 명령어
1. /var — 변수 목록 확인
/var 명령어는 지금까지 사용된 모든 변수 목록을 조회할 때 사용합니다. 계산을 수행하는 과정에서 JShell은 암시적 변수(implicit variable)를 자동으로 생성합니다. /var 명령어를 입력하면 그동안 선언된 모든 변수가 표시되는데, 아래 예제의 $1, $2, $3처럼 암시적 변수도 함께 확인할 수 있습니다.
jshell> 2+5 $1 ==> 7 jshell> 8%3 $2 ==> 2 jshell> 9/3 $3 ==> 3 jshell> /var | int $1 = 7 | int $2 = 2 | int $3 = 3
2. /types [옵션] — 타입 정보 조회
/types [option] 명령어는 현재 선언된 모든 클래스, 인터페이스, 열거형(enum)의 타입 정보를 보여줍니다. [option] 자리에 특정 이름이나 ID를 지정하면 해당 타입만 선택적으로 확인할 수 있습니다.
jshell> class Test1 {
...> void testMethod1() {
...> System.out.println("TutorialsPoint");
...> }
...> }
| created class Test1
jshell> /types Test1
| class Test1
jshell> /types Test2
| No such snippet: Test23. /methods — 메서드 목록 확인
/methods 명령어는 지금까지 선언된 모든 메서드 목록을 제공합니다. 아래 예제에서는 demo()라는 메서드를 생성한 후 /methods 명령어로 확인하는 과정을 보여줍니다.
jshell> String demo(String firstName, String lastName) {
...> return firstName + lastName;
...> }
| created method demo(String, String)
jshell> /methods
| String demo(String, String)4. /list — 전체 스니펫 조회
/list 명령어는 JShell에서 가장 실용적인 명령어 중 하나입니다. 세션에서 지금까지 입력한 모든 스니펫(snippet)을 한눈에 확인할 수 있어, 지금까지 작업한 내용을 빠르게 복습하거나 추적할 때 매우 유용합니다.
jshell> /list
1 : 2+5
2 : 8%3
3 : 9/3
4 : class Test1 {
void testMethod1() {
System.out.println("TutorialsPoint");
}
}
5 : String demo(String firstName, String lastName) {
return firstName + lastName;
}이처럼 JShell의 기본 명령어들을 잘 활용하면 코드 조각을 빠르게 실험하고 학습할 수 있어, 자바 학습과 프로토타이핑 작업의 생산성을 크게 높일 수 있습니다.