JShell은 Java 9부터 도입된 Read-Evaluate-Print Loop(REPL) 도구로, 입력한 선언문, 문장, 표현식을 즉시 평가하고 그 결과를 바로 화면에 보여줍니다. 별도의 클래스나 main 메소드 작성 없이 코드를 빠르게 테스트할 수 있어 학습과 프로토타이핑에 매우 유용합니다. JShell은 명령 프롬프트(터미널)에서 jshell 명령어를 입력하여 실행할 수 있습니다.
아래에서는 JShell에서 표현식, 변수, 메소드를 정의하고 활용하는 방법을 살펴보겠습니다.
1. 표현식(Expression)
JShell에는 유효한 Java 표현식이라면 무엇이든 입력할 수 있습니다. 산술 연산, 문자열 조작, 메소드 호출 등의 표현식은 입력되는 즉시 평가되고 결과가 출력됩니다. 특히 결과 값을 따로 저장하지 않아도 JShell이 자동으로 변수를 생성해 할당하며, 이렇게 생성된 변수에는 $ 기호가 접두사로 붙습니다.
예제
jshell> 10 * 5 $1 ==> 50 jshell> 77 % 3 $2 ==> 2 jshell> $1 + $2 $3 ==> 52 jshell>
위 예제에서 첫 번째 결과는 자동 생성된 변수 $1에 저장되고, 두 번째 결과는 $2에 저장됩니다. 이후 $1 + $2처럼 이전 결과 변수를 그대로 재사용할 수 있습니다.
2. 변수(Variable)
JShell에서 정의하는 변수는 일반 Java 프로그램에서 정의하는 변수와 완전히 동일하게 동작합니다. 타입을 지정하여 변수를 선언하면, 해당 변수는 세션이 유지되는 동안 스코프 내에서 계속 사용할 수 있습니다.
예제
jshell> String str = "Tutorialspoint" str ==> "Tutorialspoint" jshell> str str ==> "Tutorialspoint" jshell>
정의된 변수 이름만 입력하면 현재 저장된 값을 즉시 확인할 수 있습니다. 참고로 /vars 명령어를 사용하면 세션에서 선언된 모든 변수 목록을 한눈에 확인할 수 있습니다.
3. 메소드(Method)
메소드도 Java 클래스 안에서 작성하는 것과 같은 방식으로 JShell에서 정의할 수 있습니다. JShell 세션에서 한 번 생성된 메소드는 해당 세션을 종료하기 전까지 언제든지 반복해서 호출할 수 있습니다.
예제
jshell> int sum(int x, int y) {
...> return x + y;
...> }
| created method sum(int,int)
jshell> sum(10,20)
$2 ==> 30
jshell>여러 줄에 걸쳐 메소드를 입력하면 JShell이 ...> 프롬프트를 표시하며 입력을 계속 받아들입니다. 메소드가 성공적으로 생성되면 | created method sum(int,int)와 같은 확인 메시지가 출력됩니다. 이후 수정이 필요하면 같은 이름으로 메소드를 다시 정의하기만 하면 기존 메소드가 새로운 정의로 교체됩니다.
마무리
이처럼 JShell을 활용하면 간단한 표현식 계산부터 변수와 메소드 정의까지 대화형 방식으로 손쉽게 테스트할 수 있습니다. 세션을 종료하려면 /exit 명령어를 입력하거나 Ctrl+D를 누르면 됩니다. Java 코드를 실험하고 학습하는 과정에서 JShell을 적극적으로 활용해 보시기 바랍니다.