티스토리 뷰

자바 컴파일


 

 

자바 실행 과정


  1. 자바 파일(. java)을 자바 컴파일러(javac)를 통해 클래스 파일(. class : 바이트코드)로 컴파일한다.
  2. 컴파일된 클래스파일을 클래스 로더가 JVM 메모리 로딩시킨다.
  3. JIT 컴파일러가 핫스팟으로 정한 부분은 네이티브 코드 화해서 JVM 내부에 캐싱한다.
  4. 인터프리터가 한 줄씩 읽어가며 네이티브 코드로 컴파일하여 실행하는데, 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 비표준 옵션 개요를 출력한다.

 

'BackEnd > Java&Kotilin' 카테고리의 다른 글

[Java] 자바의 에러와 예외  (0) 2022.08.15
[Java] 람다 ( Lambda ) 와 캡쳐링  (0) 2022.08.09
DAO, VO, DTO의 정의  (0) 2022.07.31
IS-A 와 HAS-A  (0) 2022.07.30
[Java] 다이나믹 프록시 (Dynamic Proxy)  (0) 2022.07.29
댓글