자바 컴파일러인 javac는 주로 명령 프롬프트나 터미널을 통해 실행됩니다. javac를 사용할 때는 컴파일할 소스코드 파일의 경로를 명령어 뒤에 입력하면 됩니다. 주요 옵션 중에는 -d를 사용하여 컴파일된 바이트코드 파일을 저장할 디렉토리를 지정하거나, -cp를 사용하여 컴파일에 필요한 클래스패스를 지정하는 등의 기능이 있습니다. 아래 글에서 자세하게 알아봅시다.
javac 컴파일러 사용하기
1. 자바 컴파일러란?
자바 컴파일러(javac)는 자바 소스코드를 바이트코드로 변환하는 도구입니다. 이 바이트코드는 JVM(Java Virtual Machine)에서 실행될 수 있는 형식이며, 자바 프로그램을 실행하기 위해 필요합니다.
2. javac 명령어 사용하기
javac를 사용하기 위해서는 명령 프롬프트나 터미널을 열고 해당 명령어를 입력해야 합니다. 다음은 javac를 사용하는 방법입니다.
javac [옵션] [소스코드 파일 경로]
3. javac 주요 옵션
javac는 다양한 옵션을 제공하여 컴파일 과정을 제어할 수 있습니다. 주요 옵션 몇 가지를 살펴보겠습니다.
-d 디렉토리
-d 옵션은 컴파일된 바이트코드 파일을 저장할 디렉토리를 지정하는 역할을 합니다. 이 옵션을 사용하지 않으면 기본적으로 소스코드 파일과 같은 디렉토리에 바이트코드 파일이 생성됩니다.
-cp 클래스패스
-cp 옵션은 컴파일에 필요한 클래스패스를 지정하는 역할을 합니다. 클래스패스는 컴파일러나 실행 시에 클래스 파일을 찾을 수 있는 경로입니다. 여러 개의 경로를 지정할 때는 콜론(:)으로 경로를 구분합니다.
-source 버전
-source 옵션은 자바 소스코드의 버전을 지정하는 역할을 합니다. 이 옵션을 사용하여 컴파일할 소스코드의 버전을 명시적으로 지정할 수 있습니다.
4. 예시
다음은 javac 명령어를 사용하여 Hello.java 파일을 컴파일하는 예시입니다.
javac Hello.java
위 명령어를 실행하면 Hello.java 파일이 컴파일되고, Hello.class 파일이 생성됩니다.
만약 컴파일된 바이트코드를 다른 디렉토리에 저장하고 싶다면 -d 옵션을 사용할 수 있습니다.
javac -d classes Hello.java
위 명령어를 실행하면 Hello.java 파일이 컴파일되고, 컴파일된 Hello.class 파일이 classes 디렉토리에 저장됩니다.
소스코드가 여러 개의 파일로 이루어져 있다면 모든 파일을 한 번에 컴파일해야 합니다.
javac -d classes *.java
위 명령어를 실행하면 현재 디렉토리에 있는 모든 소스코드 파일이 컴파일되고, 컴파일된 바이트코드 파일은 classes 디렉토리에 저장됩니다.
또한 클래스패스를 지정하기 위해 -cp 옵션을 사용할 수도 있습니다.
javac -cp lib.jar Hello.java
위 명령어를 실행하면 Hello.java 파일이 컴파일되는 동시에 lib.jar 파일에 있는 클래스들을 참조하여 컴파일합니다.
마치며
javac 컴파일러는 자바 소스코드를 바이트코드로 변환하여 JVM에서 실행할 수 있는 형식으로 변환해주는 중요한 도구입니다. 옵션을 통해 컴파일 과정을 제어할 수 있으며, 클래스패스를 지정하여 필요한 클래스 파일을 참조할 수 있습니다. javac 명령어를 사용하여 자바 소스코드를 컴파일하면 소스코드와 같은 디렉토리에 바이트코드 파일이 생성되며, 다른 디렉토리에 저장하고 싶다면 -d 옵션을 사용할 수 있습니다.
추가로 알면 도움되는 정보
1. 자바 소스코드는 .java 확장자를 가지며, 컴파일된 바이트코드는 .class 확장자를 가집니다.
2. javac 컴파일러를 사용하여 여러 개의 소스코드 파일을 한 번에 컴파일할 수 있습니다.
3. -source 옵션을 사용하여 컴파일할 소스코드의 버전을 명시적으로 지정할 수 있습니다.
4. 클래스패스를 지정하는 옵션으로는 -cp 또는 -classpath가 있습니다.
5. 클래스패스는 여러 개의 경로를 지정할 수 있으며, ‘:’ 또는 ‘;’ 문자로 경로를 구분합니다.
놓칠 수 있는 내용 정리
-d 옵션을 사용하여 컴파일된 바이트코드를 다른 디렉토리에 저장할 수 있다는 점을 유의해야 합니다.
또한, 클래스패스를 지정하여 컴파일에 필요한 클래스 파일을 참조할 수 있습니다.