-
개발자가 자바 소스코드(.java)를 작성합니다.
-
자바 컴파일러가 자바 소스코드(.java)파일을 읽어 바이트코드(.class)코드로 컴파일 합니다. 바이트코드(.class)파일은 아직 컴퓨터가 읽을 수 없는 JVM(자바 가상 머신)이 읽을 수 있는 코드입니다. (java - > class)
-
컴파일된 바이트코드(.class)를 JVM의 클래스로더(Class Loader)에게 전달합니다.
-
클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data Area), 즉 JVM의 메모리에 올립니다.
-
실행엔진(Execution Engine)은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행합니다. 이 때 실행 엔진은 두 가지 방식으로 변경합니다.
- 이 과정을 보면 스터디 시간에 추론했던 것처럼 클래스들을 JVM의 메모리에 올려서 메모리에 올라간 field들을 참조하는 것을 알 수 있습니다.
참고
https://yang-droid.tistory.com/48
개발자가 자바 소스코드(.java)를 작성합니다.
자바 컴파일러가 자바 소스코드(.java)파일을 읽어 바이트코드(.class)코드로 컴파일 합니다. 바이트코드(.class)파일은 아직 컴퓨터가 읽을 수 없는 JVM(자바 가상 머신)이 읽을 수 있는 코드입니다. (java - > class)
컴파일된 바이트코드(.class)를 JVM의 클래스로더(Class Loader)에게 전달합니다.
클래스 로더는 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 런타임 데이터 영역(Runtime Data Area), 즉 JVM의 메모리에 올립니다.
실행엔진(Execution Engine)은 JVM 메모리에 올라온 바이트 코드들을 명령어 단위로 하나씩 가져와서 실행합니다. 이 때 실행 엔진은 두 가지 방식으로 변경합니다.
참고
https://yang-droid.tistory.com/48