JShell: 7. JShell 소개

JShell: 7. JShell 소개

이 문서는 Java9의 오라클 공식 문서 중 JShell 사용자 가이드의 한글화 문서입니다. 원문 정보는 다음과 같습니다.

JShell 사용자 가이드의 한글화 문서는 다음과 같이 구성됩니다.


JShell 사용자 가이드: 7. 스크립트


JShell 스크립트는 한 개 파일에 기술된 일련의 스니펫과 JShell 명령이거나 한 줄로 기술된 스니펫 혹은 명령입니다.

스크립트 형태로는 파일과 사전 정의 스크립트1가 있습니다. 다음 표사는 정의 스크립트에 대한 요약입니다.

스크립트 명 스크립트 내용
DEFAULT 일반적으로 사용되는 임포트 문으로 구성됩니다. 이 스크립트는 별도로 시작 스크립트를 지정하지 않을 때 사용됩니다.
PRINTING PrintStream 클래스의 print, println, 그리고 printf 메서드를 직접 참조하는 JShelll 메서드를 정의합니다.
JAVASE java.se 모듈로 정의된 핵심 Java SE API를 임포트합니다. 패키지의 수가 많기 때문에 JShell 시작이 상당히 지연될 수 있습니다.
  • 주제
    • 시작 스크립트 Scripts
    • 스크립트 생성과 로딩

시작 스크립트(Startup Scripts)

시작 스크립트는 JShell 세션이 시작될 때 실행되는 스니펫과 명령으로 구성됩니다. DEFAULT 스크립트는 일반적으로 자주 사용되는 import 문으로 구성되어 있습니다. 필요한 경우 사용자 정의 스크립트를 작성할 수 있습니다.

Jshell이 “reset(재설정)” 될 때마다 시작 스크립트가 실행됩니다. JShell 세션은 처음 시작 및 /reset, /reload, /env 명령이 실행될때 “Reset(재설정)“됩니다. 스크립트를 별도로 설정하지 않으면 기본 시작 스크립트인 DEFAULT 스크립트가 실행됩니다. 이 DEFAULT 스크립트는 일반적으로 사용되는 import 문으로 구성되어 있습니다.

Java는 java.lang 패키지를 자동으로 import 합니다. 따라서 java.lang을 import 문을 사용하여 명시적으로 가져올 필요 없습니다.

시작 스크립트를 설정하는 용도로 /set start 명령을 사용합니다.

jshell> /set start mystartup.jsh

jshell> /reset
|  Resetting state.

모든 /set 명령과 마찬가지로, -retain 옵션을 사용하지 않으면 /set start 명령은 현재 세션에서만 유효합니다. 일반적으로 -retain 옵션은 시작 스크립트 설정을 테스트할 때에는 사용하지 않습니다. 원하는 설정을 찾았을 경우, -retain 옵션을 이용하여 이 설정을 보존합니다.

jshell> /set start -retain

시작 스크립트는 JShell이 시작할 때마다 실헹됩니다.

시작 스크립트는 세션 상태가 재설정(reset) 될 때만 현재 세션에 실행됩니다. 스크립트 내용만 저장되며, 스크립트 파일에 대한 참조는 저장되지 않습니다. 이 스크립트 파일은 /set start 명령이 실행될 때만 읽힙집니다. 사전 정의 스크립트는 참조로 실행되고 새로운 JDK가 릴리즈될 때만 업데이트됩니다.

시작 스크립트는 커맨드 라인 옵션 –startup을 사용하여 지정할 수 있습니다.

% jshell --startup mystartup.jsh

System.out을 사용할 필요 없이 print 메서드를 사용할 수 있다면 매우 편리합니다. 사전정의 PRINTING 스크립트를 사용하면 print, printlnprintf 메서드를 바로 사용할 수 있습니다. /set start 명령을 사용하여 두 개 이상의 시작 스크립트를 지정할 수 있습니다. 다음 예제는 기본 import 문(DEFAULT)과 print 메소드 정의(PRINTING) 모두를 로드하는 시작 설정입니다.

jshell> /set start -retain DEFAULT PRINTING

jshell> /exit
|  Goodbye

% jshell
|  Welcome to JShell -- Version 9
|  For an introduction type: /help intro

jshell> println("Hello World!")
Hello World!

-retain 옵션을 사용하여 jshell이 실행될 때마다 사전 정의 스크립트가 실행하도록 설정할 수 있습니다. 옵션 없이 /set start 명령을 사용하면 시작 스크립트에서 정의한 내용을 자세하게 확인할 수 있습니다.

커맨드 라인에서 두 개 이상의 시작 스크립트를 설정하려면 각 스크립트에 –startup 플래그를 사용해야 합니다.

% jshell --startup DEFAULT --startup PRINTING

스크립트 생성과 로딩

스크립트를 이용하여 JShell 세션 내에서 사용할 import 문과 코드를 JShell 세션에 설정합니다.

스크립트 생성

스크립트는 외부 편집기를 이용하여 생성할 수 있습니다. 또한 스크립트는 JShell에 입력 한 항목으로부터 생성할 수도 있습니다. 다음 명령 중 하나를 사용하여 JShell 세션의 항목을 이용하여 스크립트를 만듭니다.

jshell> /save mysnippets.jsh

jshell> /save -history myhistory.jsh

jshell> /save -start mystartup.jsh

위 예제의 첫 번째 명령은 현재 활성 상태의 스니펫을 mysnippets.jsh에 저장합니다. 두 번째 명령은 myhistory.jsh에 히스토리에 기록된 모든 스니펫과 명령을 저장합니다. 스크립트에 저장된 스니펫은 현재 유효한 스니펫과 유효하지 않은 스니펫 모두를 포함합니다. 마지막 명령은 현재 시작 스크립트를 mystartup.jsh에 저장합니다. 명령에 사용된 파일명은 유효한 파일 경로 및 이름이어야 합니다.

스크립트 로드

JShell 세션을 시작할 때 커맨드 라인에서 스크립트를 로드할 수 있습니다.

% jshell mysnippets.jsh

JShell 세션 내에 /open 명령을 사용하여 스크립트를 로드 할 수도 있습니다.

jshell> /open PRINTING

  1. 사전 정의 스크립트는 별도 파일로 존재하지 않습니다. Java JDK의 API 형태로 개발되어 있습니다. [return]
작성자: 김태완
김태완 avatar
작성자: 김태완
1999년 부터 Java, Framework, Middleware, SOA, DB Replication, Cache, CEP, NoSQL, Big Data, Cloud를 키워드로 살아왔습니다. 현재는 한국오라클 빅데이터 팀 소속으로 빅데이터와 Machine Learning을 중점에 두고 있습니다. 최근에는 Deep Learning을 열공 중입니다.
E-mail: taewanme@gmail.com