Java 명령어 - Java SE Development Kit의 각종 개발 도구
Java SE Development Kit의 각종 개발 도구
JDK를 설치 하면 각종 개발 도구 {JAVA_HOME}/bin
에 위치한다.
- javac : 자바 컴파일러
- java : 자바 인터프리터
- javadoc : 자바 API 문서(HTML Document) 생성
- javap : 자바 역컴파일러
- appletviewer.exe : 자바 애플릿 뷰어
- jar : 자바 압축기
- jdb : 자바 디버거
- jshell 명령 : Java 코드 프로토타이핑을 위한 대화식 도구
아래에서 주요 명령에 대해서 설명한다.
javac 명령
javac
명령은 Java 코드 컴파일한다.
javac (option) [src]
option: 명령 옵션
src: 소스 파일
javac 명령은 Java 소스 코드(.java 파일)를 컴파일하고 클래스 파일(.class 파일)을 생성한다.
지정할 수 있는 명령 옵션(option)은 다음과 같다.
javac 명령의 주요 옵션
옵션 | 개요 |
---|---|
-encoding 문자 코드 |
소스 코드에서 사용하는 문자 코드 |
-sourcepath 경로 |
소스 파일을 저장할 경로 |
-d 경로 |
클래스 파일의 출력 경로 |
-classpath 경로 |
관련 클래스 파일의 검색 경로. 복수 지정시는 세미콜론(Windows), 또는 콜론(Unix) 단락 |
--module-path 경로 |
모듈 검색 경로 |
-verbose |
자세한 메시지 표시 |
-source 버전 |
대상 코드의 버전 지정 |
예를 들어, 다음은 클래스 파일의 출력 위치, 클래스 경로, 문자 코드를 지정한 예시이다.
$ javac -d ~/develop -classpath .:~/develop -encoding UTF-8 HelloWorld.java
-classpath
옵션은 소스를 컴파일하는데 필요한 클래스 파일 또는 JAR 파일의 위치(경로)를 나타낸다. 매번 설정하는 것이 귀찮은 경우에는 환경 변수 CLASSPATH
로 미리 지정해 두어도 된다.
java 명령
java
명령은 Java 프로그램 실행한다.
java (option) [clazz] (params)
option: 명령 옵션
clazz: 실행할 클래스
params: 매개변수
java 명령은 지정된 클래스를 로드 및 실행한다.
params는 Java 프로그램에 전달하는 값이다. main
메소드의 인수 args로 받을 수 있다. 여러 개가 있으면 공백으로 구분한다.
지정할 수 있는 명령 옵션(option)은 다음과 같다.
java 명령의 주요 옵션
옵션 | 개요 |
---|---|
-classpath 경로 |
관련 클래스 파일의 검색 대상. 복수 지정시는 세미콜론(Windows), 또는 콜론(Unix) 단락 |
–-module-path 경로 |
모듈 검색 경로 |
-jar |
.jar 파일 실행 |
-version |
Java 버전 보기 |
예를 들어, 다음은 Hello.jar를 실행하는 예시이다. 파라미터로서 “devkuma"를 설정한다.
$ java -jar Hello.jar "devkuma"
주의!
.jar 파일에서 응용 프로그램을 시작하려면 .jar 파일에 다음과 같은 내용의 매니페스트 파일(/META-INF/MANIFEST.MF)을 포함시켜야 한다. Main-Class 매개 변수는 시작할 클래스를 지정한다.
Main-Class: com.devkuma.tutorial.HelloWorld
jar 명령
jar
명령은 JAR 파일 생성한다
jar (option) [jfile] (clazz...)
option: 명령 옵션
jfile : 만들 jar 파일의 이름
clazz: 포함할 클래스 파일(복수 지정 가능)
JAR은 Java ARchive의 약자로 클래스 파일을 Zip 형식으로 압축한 형식이다. Java로 어플리케이션을 배포할 때는 JAR 형식으로 정리한 것을 배포하는 것이 일반적이다.
JAR 파일을 작성하려면 jar
명령을 사용한다.
지정할 수 있는 명령 옵션(option)은 다음과 같다.
jar 명령의 주요 옵션
옵션 | 개요 |
---|---|
c |
새 JAR 파일 작성 |
u |
기존 JAR 파일 업데이트 |
x |
JAR 파일의 내용 추출 |
t |
JAR 파일의 내용 목록 표시 |
f |
대상 JAR 파일 지정 |
–-module-path 경로 |
모듈 검색 경로 |
예를 들어, 다음은 미리 준비한 클래스 파일과 매니페스트 파일(MANIFEST.MF
)을 바탕으로 Hello.jar
을 작성하는 예시이다.
$ jar cvfm Hello.jar ./main/resource/com/devkuma/tutorial/META-INF/MANIFEST.MF ./main/src/com/devkuma/tutorial/*.class
javadoc 명령
javadoc
명령은 API 문서 작성한다.
javadoc (option) [src]
option: 명령 옵션
src : 문서의 원본 소스 파일
javadoc
명령은 소스 파일에 설명된 문서 주석에서 API 문서를 생성한다. 공식 사이트에서 공개된 API 문서도 원래 javadoc
명령으로 작성된 것이다.
예를 들어, 다음은 Java 표준 라이브러리에 포함된 Math 클래스의 문서 주석의 예이다.
/**
* The class {@code Math} contains methods for performing basic
* numeric operations such as the elementary exponential, logarithm,
* square root, and trigonometric functions.
... 중간 생략 ...
* @author unascribed
* @author Joseph D. Darcy ... 작성자
* @since JDK1.0 ... 대상 버전
*/
public final class Math {
...중간 생략...
/**
* Returns the trigonometric sine of an angle. Special cases:
* <ul><li>If the argument is NaN or an infinity, then the
* result is NaN. ... 메소드 개요
... 중간 생략...
* @param a – an angle, in radians. ... 인수
* @return the sine of the argument. ... 반환값
*/
public static double sin(double a) {
return StrictMath.sin(a); // default impl. delegates to StrictMath
}
...중간 생략...
}
javadoc 명령은 다음과 같이 실행할 수 있다. 다음은 /lang
폴더의 .java
파일을 기반으로 문서를 만드는 예제이다. 대상은 /docs
폴더이다.
$ javadoc -d docs ~/develop/*.java
jshell 명령
jshell
명령은 대화식 쉘 환경 시작한다.
jshell (option)
option: 명령 옵션
jshell
명령은 Java 코드를 커멘드 라인에서 대화식으로 실행하기 위해 REPL(Read-Eval-Print-Loop) 환경을 시작한다. Java 9에서 추가되었다.
Java 9 이전에는 간단한 코드를 사용하기 위해 컴파일 및 실행이라는 절차를 거쳐야 했지만 JShell을 사용하여 즉시 실행할 수 있다.
사용 가능한 명령 옵션(option)은 다음과 같다.
jshell 명령의 주요 옵션
옵션 | 개요 |
---|---|
–-classpath 경로 | 관련 클래스 파일의 검색 대상. 복수 지정시는 세미콜론(Windows), 또는 콜론(Unix) 단락 |
–-module-path 경로 | 모듈 검색 대상 |
–-enable-preview | 미리보기 기능 사용 |
예를 들어, 다음은 JShell을 시작하여 간단한 코드를 실행하는 예시이다.
% jshell
| Welcome to JShell -- Version 17.0.4.1
| For an introduction type: /help intro
jshell> import java.util.ArrayList; (1) 임포트
jshell> new ArrayList<String>(); (2) 리스트 정의
$2 ==> []
jshell> $2.add("안녕하세요."); (3) 리스트 조작
$3 ==> true
jshell> $2.add("반갑습니다.");
$4 ==> true
jshell> $2.get(0);
$5 ==> "안녕하세요."
jshell> /exit
| Goodbye
JShell 프롬프트는 jshell>
이다. 라이브러리를 이용할 때에는 일반 코드와 마찬가지로 import
명령으로 클래스를 가져온다(1).
이후의 코드(1 ~ 2)에서는 암묵적으로 main
메소드 부하의 코드로 간주된다. 또한, 변수 선언도 필요없다. 생성된 객체는 그대로 자동 변수 $1
, $2
…에 순서대로 대입되기 때문이다. (3)에서도 (2)에서 생성한 ArrayList
객체에 변수 $2
으로 액세스 할 수 있다.
JShell을 종료하려면 /exit
메타 명령을 사용한다.