본문 바로가기
Programming/Java

자바9 jshell 사용법 / REPL

by 배고프당 2019. 4. 9.
728x90

자바9가 나왔다는 소식을 듣긴 들었지만.. 

아직도 자바7, 8만 쓰고있는 나에게 새로운 지식을 얻게 해주고자 테스트도 할겸 PC에 설치를 했다.

 

 

 

1.7.x

1.8.x

 

이런식으로 뜨던 자바 버전이 9.0.x 형식으로 바뀌었다.

 

오라클 공식홈페이지에 설명되어있는 jshell 설명을 번역해보니

 

  • Java Shell 도구(JShell)은 자바 프로그래밍 언어를 학습하고 자바 코드를 프로토 타이핑하기 위한 대화식 도구입니다.

  • JShell은 선언, 명령문 및 표현식을 입력할때 이를 평가하고 결과를 즉시 표시하는 REPL(Read-Evaluate-Print Loop)입니다.

  • 이 도구는 명령 행에서 실행됩니다.

 

라고 설명이 잘 적혀있다.

 

JDK9부터 적용되었고 JShell 을 사용하려면 cmd 창에서 jshell을 입력하기만 하면 된다.

 

 

기본은 normal 모드로 되어있지만, 자세한 정보 표시모드(?) 라고 해서 verbose 모드가 있는데 verbose모드로 들어가려면

 

최초 cmd 로그창에서 jshell -v를 입력하거나 

기본 모드이면

1
2
3
jshell>/set feedback verbose
 
jshell>/set feedback normal
 

 

이런식으로 변경하여 사용할 수 있다.

 


예전에는 "Hello World"라는 단어를 쓰는 것만으로도 자바에서는 클래스의 선언과 컴파일, 그리고 실행하는 절차가 필요했었다.

다음과 같은 형태로..

 

1
2
3
4
5
6
7
8
9
public class HelloWorld{
 
public static void main(String[] args){
 
    System.out.println("Hello World!!");
 
}
 
}
 
 

 

하지만 jshell을 사용하면 다음과 같이 할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
jshell> System.out.println("Hello World!!");
 
Hello World!!
 
jshell> void hello(){System.out.println("hello");}
 
|  created method hello()
 
jshell> hello();
 
hello
 

 

여기서 hello 메소드를 수정하고 싶으면 다음과 같이 할수도 있다.

 

1
jshell>/edit hello
 

 

/edit hello를 하면 수정을 한 후에 Accept 버튼을 누르면 적용이 된다

 

/list 명령어는 지금까지 입력한 코드를 보여주고

모든 조각들을 보려면 /list -all을 실행하면 된다

1
jshell> /list
 

 

1
2
3
4
5
6
7
1 : System.out.println("Hello World!!");
 
3 : hello();
 
4 : void hello(){System.out.println("hello 헬로 하이");}
 
 
 
 

 

1
jshell> /list -all
 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
s1 : import java.io.*;
s2 : import java.math.*;
s3 : import java.net.*;
s4 : import java.nio.file.*;
s5 : import java.util.*;
s7 : import java.util.function.*;
s8 : import java.util.prefs.*;
s9 : import java.util.regex.*;
s10 : import java.util.stream.*;
1 : System.out.println("Hello World!!");
2 : void hello(){System.out.println("hello");}
3 : hello();
4 : void hello(){System.out.println("hello 헬로 하이");}
 

 

/ID를 입력하여 해당 구문을 다시 실행 할 수도 있다.

 

예를 들면 /2를 하게 되면 hello()함수가 호출된다.

1
jshell> /2
 

 

1
2
3
4
5
void hello(){System.out.println("hello");}
 
|  modified method hello()
 
|    update overwrote method hello()
 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
** 자주쓰는 jshell 명령어
 
/drop >>>>> 삭제
 
/edit >>>>> 편집
 
/list  >>>>> 입력한 것들 표시
 
/save  >>>>> 파일 홈디렉토리에 저장
 
/open  >>>>> 파일에서 실행
 
/vars  >>>>> JShell 내에서 선언된 변수 표시
 
/methods  >>>>> JShell 내에서 선언된 메소드를 표시
 
/types  >>>>> JShell 내에서 선언된 형식을 표시
 
/imports >>>>> import 아이템 표시
 
/history >>>>> 입력한 명령어 목록 표시
 
/help >>>>> 도움말 표시
 
/exit >>>>> JShell 종료
 
/ID >>>>> ID로 지정한 것 재실행
 
/! >>>>> 직전에 실행한 것을 재실행
 

 

참고사이트

오라클공식문서, jshell github

 

 

728x90

댓글