BackEnd/Java&Kotilin
[Java] 컴파일 방법과 Option
Hero_O
2022. 8. 2. 23:03
자바 컴파일
자바 실행 과정
- 자바 파일(. java)을 자바 컴파일러(javac)를 통해 클래스 파일(. class : 바이트코드)로 컴파일한다.
- 컴파일된 클래스파일을 클래스 로더가 JVM 메모리 로딩시킨다.
- JIT 컴파일러가 핫스팟으로 정한 부분은 네이티브 코드 화해서 JVM 내부에 캐싱한다.
- 인터프리터가 한 줄씩 읽어가며 네이티브 코드로 컴파일하여 실행하는데, JIT 컴파일러가 컴파일한 코드 부분은 캐싱된 것을 사용한다.
자바 컴파일러 : javac
- JDK에 포함된 자바 컴파일러로 자바 언어사양(JLS) 을 충족하는 소스코드를 자바 가상 머신 사양(JVMS)에 맞는 바이트코드를 생성한다.
바이트코드는 JVM이 이해할 수 있는 바이너리 코드(기계어)다.
- options : 명령줄 옵션.
- sourcefiles : 컴파일할 하나 이상의 소스 파일(예: MyClass.java).
- classes : 주석에 대해 처리할 하나 이상의 클래스(예: MyPackage.MyClass).
- @argfiles : 옵션 및 소스 파일을 나열하는 하나 이상의 파일, 해다 파일은 -J 옵션이 허용되지 않습니다.
javac Option
Option | Descript |
-bootclasspath | 부트스트랩 클래스 파일의 위치를 재정의합니다. (부트스트랩 클래스 파일은 Java 런타임을 구현하는 클래스) |
-classpath, -cp | 컴파일러가 컴파일할 때 필요로하는 (직접 작성한) 클래스 파일에 위치를 지정합니다. |
-d | 생성된 클래스 파일을 저장할 위치를 지정합니다 |
-deprecation | Deprecated된 API가 사용된 소스 위치를 출력하여, 컴파일러가 경고하도록 합니다. |
-encoding | 소스코드에서 사용하 문자인코딩을 지정 |
-endorseddirs | Overrides location of endorsed standards path. |
-extdirs | Overrides locations of installed extensions. |
-g | 모든 디버깅 정보를 생성합니다. |
-g:{lines,vars,source} | 일부의 디버깅 정보를 생성한다 |
-g:none | 디버깅 정보를 생성하지 않는다. |
-help | 표준 옵션의 개요를 출력합니다. |
-J | 런타임 시스템으로 옵션을 직접 전달합니다. 여기서 옵션은 java 명령어의 옵션중 하나입니다. 예로는 -J-Xms48m은 시작 메모리를 48MB로 설정합니다. |
-nowarn | 경고를 생성하지 않는다. |
-source | 소스파일에 자바 버전을 지정하여, 소스 호환성을 제공합니다 |
-sourcepath | 입력 원본 파일을 찾을 위치를 지정합니다. |
-target | 특정 JVM 버젼에 대한 클래스파일을 생성합니다. 해당 옵션을 사용하여 원하는 버전의 JVM에서 실행할 수 있는 클래스파일을 컴파일 할 수 있다. 높은 버전에서 컴파일한 클래스를 낮은 버전에서 실행하면 java.lang.UnsupportedClassVersionError 발생 가능성이 있다. 이 때 해당 JRE 버전에 맞는 형태로 컴파일을 수행할 수 있다. |
-verbose | 컴파일러가 수행하는 작업에대한 메시지를 출력 |
-version | 버젼정보를 출력한다. |
M | 비표준 옵션 개요를 출력한다. |