2023. 1. 12. 16:15ㆍ기술 창고/Java
이전에는 JVM 에 대해서 정리해보았다.
JVM을 짤막하게 복습해보자면 원 소스 코드의 java file을 컴파일러를 통해 바이트 코드 class file로 변환하고, 여러 OS 환경과 플랫폼에서 실행될 수 있도록 지원해주는 자바 가상 머신이다.
그렇다면 초기에 개발자가 작성한 원 소스 코드 java file을 컴파일 해주는 작업이 우선적으로 선행이 되어야 하는데 어떻게 컴파일이 되어 바이트 코드로 변환이 되는 것일까?
자바 컴파일 순서
1. 개발자가 자바 소스 코드 작성 (java file)
2. 자바 컴파일러가 자바 소스 코드를 읽어 바이트 코드(class file)로 변환.
# 바이트 코드는 아직 컴퓨터가 읽을 수 없는 JVM만이 읽을 수 있는 코드
3. 컴파일된 바이트 코드를 JVM 내부의 클래스 로더에 전달한다.
4. 클래스 로더는 로딩(동적 로딩)을 통해 필요한 클래스들을 로딩, 링킹하여 런타임 데이터 영역(Runtime Data Area)에 올린다.
5. 실행엔진(Execution Engine)은 JVM 메모리(런타임 데이터 영역)에 올라온 바이트 코드들을 실행한다.
6-1. 인터프리터 방식 : 바이트 코드 명령어들을 한 줄씩 읽고 해석하여 실행. 전체적인 속도가 느리다는 단점을 가지고 있다.
6-2. JIT Compiler 방식 : 인터프리터 방식의 단점을 보완하기 위한 실행 방식이다. 바이트 코드 전체를 컴파일하여 바이너리 코드(네이티브 코드)로 변경하여 이후에는 더 이상 인터프리팅으로 실행하지 않고, 바이너리 코드로 직접 실행하는 방식이다.
전체적인 속도가 인터프리터 방식보다 빠르다.
'기술 창고 > Java' 카테고리의 다른 글
[Java] 객체 / 클래스 / 인스턴스 (0) | 2023.01.12 |
---|---|
[Java] Stack / Heap (0) | 2023.01.12 |
[Java] JVM (Java Virtual Machine) (1) | 2023.01.11 |
[Java] 동일성 (Identity) / 동등성 (equality) (0) | 2023.01.09 |
[Java] Java Map 내부 구현 파악 (0) | 2023.01.06 |