본문 바로가기
Language/Java

[Java] Java 구동 원리

by 드럼치는 코린이 2021. 8. 24.
728x90
반응형

들어가기에 앞서..

나는 java를 사용하면서 "java는 어떻게 돌아가는 거지?" 문뜩 생각이 들었다.

6개월 동안 java를 사용했지만 그 생각에 스스로 확답을 주지 못했고,

java 구동원리에 대해 정확히 이해하고 쓰자는 생각으로 정리를 하기로 하였다.


java 구동원리

일단, 생활코딩의 java 구동원리의 대한 영상을 시청하면서 정리를 해보았다.

[출처] 생활코딩-JAVA1

우리는 컴퓨터에 java를 사용하기 위해 jdk를 다운로드하게 되는데 jdk안에는 여러 가지 프로그램이 있지만 가장 핵심 프로그램인 Java Virtual Machine이 우리의 컴퓨터에 깔리게 된다.

우리는 java를 사용할 때 java확장자에 java 언어를 사용한 소스코드를 작성하게 된다.

소스코드를 작성하고 저장을 눌렀을 때 컴파일이 되어 소스코드를 컴파일한 class파일이 생성된다.

그리고 그 소스코드를 run 했을 때 Java Virtual Machine이 class파일을 읽어 들여 우리의 컴퓨터에 실행시키게 된다.


더 자세하게 보면..

 

자바 클래스 파일을 작성 후 저장(build)을 하게 되면 자바 컴파일러(javac)가 인터프리터 방식으로 .java 파일을 한 줄씩 읽으면서 .class 파일로 변환한다. 즉, 자바 소스코드는 바이트 코드(반기계어)로 변환된다.

이때 변환된 .class파일은 JVM의 클래스 로더로(Class Loader) 동적로딩(Dynamic Loading)을 통해 필요한 클래스들을 로딩 및 링크하여 컴퓨터가 읽을 수 있는 기계어로 변환과 함께 런타임 데이터 영역(Runtime Data area), 즉 JVM의 메모리에 올리게 된다.

여기서 특징적인 부분은 java는 동적로드다. 즉, 컴파일타임이 아니라 런타임에 class를 처음으로 참조할 때 해당 class를 로드하고 링크하는 특징이 있다.


JVM의 장점

java의 class 파일들은 JVM 위에서 동작하기 때문에 어떤 운영체제에서도 실행 가능하다 - 독립성


마무리..

java 구동원리에 대해 공부하면서 JVM이 java의 핵심기술 처럼 느껴졌다. 생각보다 많은 내용들이 존재했고, 궁금한 것들이 많이 생겼는데

1. jdk 설치를 통해 여러 가지 프로그램중 JVM을 사용할 수 있게 되는데 JVM 외에 어떤 프로그램이 더 있는지?

2. JVM안에 존재하는 클래스 로더 및 실행엔진, 런타임 데이터 영역에 대해 더 자세하게 알아보고 싶어졌다.

728x90
반응형

댓글