JShell 찍먹해보기

바그다드·2023년 7월 4일
0

자바 문법?을 좀 더 다듬어보고자 유데미에서 강의를 듣는중에 JShell이라는 것을 알게 되었다.
JShell은 자바를 마치 python같은 인터프리터 언어처럼 한줄씩 입력하고 결과를 보여주는 기능을 제공한다.
그래서 테스트를 해보았다.

  1. 먼저 cmd에서 'jshell'을 입력해주자
C:\Users\10>jshell

  • 나 같은 경우에는 자바11버전이라고 떴고, 입력 라인에 경로는 사라지고 아래처럼 뜨면접속에 성공한 것이다.
jshell>
  1. 값을 입력하고 결과를 확인해보자.
jshell> 5*8
$1 ==> 40

jshell> 5+6
$2 ==> 11

jshell> System.out.println("hello")
hello

jshell> public class Test{
   ...> public int a;
   ...> public int b;
   ...> public Test(int a, int b)
   ...> {
   ...> this.a = a;
   ...> this.b = b;
   ...> }
   ...> }
|  created class Test

jshell> Test tmp = new Test(5,4);
tmp ==> Test@6a41eaa2

jshell> System.out.println(tmp.a)
5

jshell> System.out.println(tmp.b)
4
  • 실제로 각 입력값을 직접 입력해보면 그 즉시 결과가 출력되고 클래스나 메서드도 정의할 수 있다.
  1. 정의한 클래스나 메서드를 수정할 수도 있다.
jshell> /edit Test;

  • 콘솔에 '/edit 클래스,메서드이름'을 입력하면 캡처화면처럼 클래스를 수정할 수 있는 창이 뜨는데, 이 창에서 코드를 수정하고 accept를 클릭하면 실제로 기존에 선언한 클래스나 메서드가 수정된다.
jshell> Test tmp2 = new Test(1,2);
create test
tmp2 ==> Test@5622fdf
  • 생성자에 출력문을 추가해줬는데, 그게 그대로 반영된 것을 확인할 수 있다.
  1. /list
    : 내가 입력했던 코드를 확인할 수 있다.
jshell> /list

   1 : 5*8
   2 : 5+6
   3 : System.out.println("hello")
   5 : Test tmp = new Test(5,4);
   6 : System.out.println(tmp.a)
   7 : System.out.println(tmp.b)
   8 : public class Test{
       public int a;
       public int b;
       public Test(int a, int b){
       this.a = a;
       this.b = b;
       System.out.println("create test");
       }
       }
   9 : Test tmp2 = new Test(1,2);
  1. /save
    : 입력한 코드를 파일로 저장할 수 있다.
jshell> /save c:\Users\10\desktop\test.jsh

  • 바탕화면에 저장된 것을 확인할 수 있다.
  1. /open
    : 저장했던 코드를 불러올 수도 있다.
C:\Users\10>jshell
|  Welcome to JShell -- Version 11.0.16.1
|  For an introduction type: /help intro

jshell> /open c:\Users\10\desktop\test.jsh
hello
|  Error:
|  cannot find symbol
|    symbol:   class Test
|  Test tmp = new Test(5,4);
|  ^--^
|  Error:
|  cannot find symbol
|    symbol:   class Test
|  Test tmp = new Test(5,4);
|                 ^--^
|  Error:
|  cannot find symbol
|    symbol:   variable tmp
|  System.out.println(tmp.a)
|                     ^-^
|  Error:
|  cannot find symbol
|    symbol:   variable tmp
|  System.out.println(tmp.b)
|                     ^-^
create test

jshell> /list

   1 : 5*8
   2 : 5+6
   3 : System.out.println("hello")
   4 : public class Test{
       public int a;
       public int b;
       public Test(int a, int b){
       this.a = a;
       this.b = b;
       System.out.println("create test");
       }
       }
   5 : Test tmp2 = new Test(1,2);
  • 기존에 작성했던 코드가 그대로 남아있는 것을 확인할 수 있다. 다만 기존에 생성했던 객체는 다시 선언해줘야 한다.
  1. /exit
    : jshell에서 빠져나갈 때 사용
jshell> /exit
|  Goodbye

C:\Users\10>

간단하게 jshell에 대해 알아보았다. 한줄 한줄 결과를 확인할 필요가 있을 때 사용하면 편리할 것 같다.
여기서 테스트해본 기능 이외에도 많은 것들이 가능하기 때문에 더 자세한 것은 공식문서나 다른 블로그를 참고하자.

오라클 공식 문서
번역 - jshell 사용자 가이드

profile
꾸준히 하자!

0개의 댓글