JShell: 7. JShell 소개
이 문서는 Java9의 오라클 공식 문서 중 JShell 사용자 가이드의 한글화 문서입니다. 원문 정보는 다음과 같습니다.
- 원문: https://docs.oracle.com/javase/9/jshell/scripts.htm
- 제목: Java Platform, Standard Edition Java Shell User’s Guide: 7 Scripts
- 문서번호: E87478-01
- 릴리즈: 2017년 09월
- 라이센스: 원본 문서 라이센스를 준수합니다.
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, println 및 printf 메서드를 바로 사용할 수 있습니다. /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
- 사전 정의 스크립트는 별도 파일로 존재하지 않습니다. Java JDK의 API 형태로 개발되어 있습니다. [return]