자바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.*;
s6 : import java.util.concurrent.*;
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
'Programming > Java' 카테고리의 다른 글
[Java] Map.of() - java 9 (0) | 2023.03.14 |
---|---|
Maven 경로 변경 / 이클립스 settings.xml파일 변경 (0) | 2019.08.12 |
[Java] e.printStackTrace() String으로 변환하기(printStactTrace to String) (0) | 2019.04.05 |
[Java] base64 인코딩 디코딩 (encoding / decoding) (0) | 2019.04.03 |
자바 디렉토리 내 특정 파일 리스트 출력 / 디렉토리 전체 목록 가져오기 (2) | 2019.04.03 |
댓글