티스토리 뷰
자바 컴파일
자바 실행 과정
- 자바 파일(. 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 | 비표준 옵션 개요를 출력한다. |
'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 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 객체 풀
- multimap
- Memory Fragmentation
- Clean Architecture
- SpringBoot 2.2
- 내부 단편화
- pool
- 컴포짓 패턴
- 수직 분할
- Sticky Session
- Session
- 장애 해결기
- 세션 불일치
- RestAssured
- ATDD
- pass by value
- 동적 타입 언어
- 클린 아키텍처
- 뾰족함
- 수평 분할
- pass by reference
- 동적 디스패치
- 정적 타입 언어
- java
- OOP
- 외부 단편화
- 육각형 아키텍처
- 메모리 파편화
- 메모리 단편화
- Object Pool
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함