- 답안
- 개발자가 자바 소스코드(.java)를 작성
- 자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일
- 이때 나오는 파일은 자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드.
- 컴파일된 바이트 코드를 JVM의 클래스로더(Class Loader)에게 전달
- 클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data area), 즉 JVM의 메모리에 올림
- 실행엔진(Execution Engine)은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행
- 인터프리터 : 바이트 코드 명령어를 하나씩 읽어서 해석하고 실행. 하나하나의 실행은 빠르나, 전체적인 실행 속도가 느리다.
- 인터프리터의 단점을 보완하기 위해 도입된 방식
- 하나씩 인터프리팅하여 실행하는 것이 아니라 바이트 코드 전체가 컴파일된 바이너리 코드를 실행하는 것이기 때문에 전체적인 실행속도는 인터프리팅 방식보다 빠름
- Java 컴파일 과정
- java는 JVM 덕에 OS에 독립적인 특징을 가짐 / JVM 의 어떤 기능 덕에 그게 가능한지 컴파일 과정을 통해 알 수 있음
'기술면접 준비' 카테고리의 다른 글
영속성 컨텍스트(Persistence Context)란? (0) | 2024.07.30 |
---|---|
가비지 컬렉션(Garbage Collection, GC) 이란? (0) | 2024.07.30 |
JVM 이란 무엇이고 왜 필요한지? (0) | 2024.07.30 |
JPA의 더티 체킹이란 무엇인가? (0) | 2024.07.30 |
JPA란 무엇인가? JPA는 언제 필요하고 언제 필요하지 않은지? (0) | 2024.07.30 |