Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java 9 JShell 시작 스크립트 완벽 정리: DEFAULT, JAVASE, PRINTING

JShell이란 무엇인가?

JShell은 Java 9에 새롭게 도입된 대화형 Java Shell 도구입니다. 코드를 한 줄씩 입력하면 즉시 실행 결과를 확인할 수 있어, 간단한 문법 테스트나 API 학습에 매우 유용합니다. JShell은 REPL(Read-Evaluate-Print-Loop), 즉 '읽기-평가-출력-반복' 방식으로 동작하며, 명령줄 프롬프트에서 바로 실행할 수 있습니다.

--startup 플래그로 시작 스크립트 지정하기

JShell은 실행 시점에 미리 정의된 스크립트를 자동으로 로드하는 기능을 제공합니다. --startup 플래그를 사용하면 파일명 또는 DEFAULT, JAVASE, PRINTING 중 하나를 지정할 수 있습니다. 또한 /list -start 명령어를 입력하면 시작 시 평가되는 모든 스니펫(코드 조각)을 확인할 수 있습니다.

  • DEFAULT: 기본 동작을 로드합니다. 이 옵션을 아예 지정하지 않았을 때와 동일하게 작동합니다.
  • JAVASE: Java SE의 모든 패키지를 기본적으로 임포트(import)합니다.
  • PRINTING: print, println, printf 함수를 별도 선언 없이 바로 사용할 수 있도록 정의해 줍니다.

1. DEFAULT 시작 스크립트 예제

아래 코드에서는 DEFAULT를 시작 스크립트로 사용한 결과입니다. 자주 쓰이는 핵심 패키지들이 자동으로 임포트됩니다.

C:\Users\User>jshell --startup DEFAULT
|  Welcome to JShell -- Version 9.0.4
|  For an introduction type: /help intro

jshell> /list -start

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.*;

2. JAVASE 시작 스크립트 예제

아래는 JAVASE를 시작 스크립트로 지정한 결과입니다. java.awt, javax.swing, javax.crypto 등 Java SE 전체 패키지(총 173개)가 일괄 임포트됩니다.

C:\Users\User>jshell --startup JAVASE
|  Welcome to JShell -- Version 9.0.4
|  For an introduction type: /help intro

jshell> /list -start

s1 : import java.applet.*;
s2 : import java.awt.*;
s3 : import java.awt.color.*;
s4 : import java.awt.datatransfer.*;
s5 : import java.awt.desktop.*;
s6 : import java.awt.dnd.*;
s7 : import java.awt.event.*;
s8 : import java.awt.font.*;
s9 : import java.awt.geom.*;
s10 : import java.awt.im.*;
// ... (중략: java.beans, java.io, java.lang, java.net,
//      java.nio, java.rmi, java.security, java.sql,
//      java.time, java.util, javax.swing, javax.xml 등
//      Java SE 전체 패키지가 순서대로 임포트됨)
s171 : import org.xml.sax.*;
s172 : import org.xml.sax.ext.*;
s173 : import org.xml.sax.helpers.*;

3. PRINTING 시작 스크립트 예제

아래는 PRINTING을 시작 스크립트로 지정한 결과입니다. System.out.print()를 매번 길게 작성하지 않아도 되도록 print, println, printf 메서드가 오버로딩 형태로 미리 정의됩니다.

C:\Users\User>jshell --startup PRINTING
|  Welcome to JShell -- Version 9.0.4
|  For an introduction type: /help intro

jshell> /list -start

s1 : void print(boolean b) { System.out.print(b); }
s2 : void print(char c) { System.out.print(c); }
s3 : void print(int i) { System.out.print(i); }
s4 : void print(long l) { System.out.print(l); }
s5 : void print(float f) { System.out.print(f); }
s6 : void print(double d) { System.out.print(d); }
s7 : void print(char s[]) { System.out.print(s); }
s8 : void print(String s) { System.out.print(s); }
s9 : void print(Object obj) { System.out.print(obj); }
s10 : void println() { System.out.println(); }
s11 : void println(boolean b) { System.out.println(b); }
s12 : void println(char c) { System.out.println(c); }
s13 : void println(int i) { System.out.println(i); }
s14 : void println(long l) { System.out.println(l); }
s15 : void println(float f) { System.out.println(f); }
s16 : void println(double d) { System.out.println(d); }
s17 : void println(char s[]) { System.out.println(s); }
s18 : void println(String s) { System.out.println(s); }
s19 : void println(Object obj) { System.out.println(obj); }
s20 : void printf(java.util.Locale l, String format, Object... args) { System.out.printf(l, format, args); }
s21 : void printf(String format, Object... args) { System.out.printf(format, args); }

정리

세 가지 시작 스크립트의 용도를 요약하면 다음과 같습니다. 빠른 테스트에는 DEFAULT(또는 생략), GUI·네트워크 등 광범위한 API 실험에는 JAVASE, 출력 결과를 간결하게 확인하고 싶을 때는 PRINTING을 선택하면 됩니다. 필요하다면 직접 작성한 스크립트 파일을 --startup 플래그에 지정하여 나만의 초기 환경을 구성할 수도 있습니다.