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 명령은 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 메타 명령을 사용한다.




최종 수정 : 2022-09-04