[Java] 02. JVM (Java Virtual Machine)
[Java] 02. JVM (Java Virtual Machine)
지금 당장은 이해하기 어려운 내용들이 많습니다
하지만 지금 한 번, 프로그래밍에 익숙해지면서 또 한 번씩 읽다보면 Java의 구조를 자세하게 이해할 수 있게 될겁니다
1. JDK, JRE, JVM
- JDK : Java Development Kit / 자발 개발 도구
- JRE : Java Runtime Environment / 자발 실행 환경
- JVM : Java Virtual Machine / 자발 가상 기계
2. Java의 호환성
Java는 Write Once Use Anywhere이라는 목적을 가지고 있습니다
즉, 하나의 목적파일로 어디든 실행이 가능하기에 운영체제에 구애받지 않고 개발을 할 수 있습니다
C언어는 One Source Multi Object Use Anywhere (하나의 소스파일로 각 기계에 맞는 목적파일로 어디든 사용 가능)라는 점에서 Java와의 차이점이 드러납니다
3. Java의 실행 과정
- 개발자는 자바 소스파일(.java)을 작성합니다
- JDK가 제공하는 javac를 사용하여 소스파일을 컴파일합니다
- JVM의 Class Loader는 컴파일로 생성된 바이트 코드(.class)를 전달 받아 동적 로딩을 통해 실행에 필요한 클래스들을 로딩하여 JVM 내부 Runtime Data Arear에 로드합니다
- JVM의 Execution에 의해 기계어로 해석되어 실행됩니다
4. Compile 언어 / Interpreter 언어
4-1. Compile 언어
C, C++, Java, C#, …
- 소스파일 전체를 컴파일한 후 기계어를 CPU와 메모리를 통해 읽어서 바로 실행하는 방식으로 동작이 되는 언어
- 소스파일의 크기가 크면 컴파일 과정이 오래 걸릴 수 있습니다
- 컴파일이 된 후에 기계어로 바로 실행되기 때문에 실행 속도가 빠릅니다
- Java는 javac에 의해 바이트코드로 컴파일 되지만 JVM에서는 인터프리터로 실행됩니다, 그래서 Compile 언어이지만 Interpreter 언어의 특징을 동시에 가집니다
4-2. Interpreter 언어
Javascript, Ruby, Python, …
- 소스파일을 컴파일하지 않고 Interpreter를 사용하여 한 줄 씩 번역하면서 실행하는 방식으로 동작이 되는 언어
- 컴파일 언어처럼 별도의 목적파일이 존재하지 않습니다
- 컴파일 과정 없이 바로 실행되기 때문에 수정 및 디버깅시 편합니다
- Interpreter만 존재하면 어디서든지 실행이 가능하기 때문에 자유롭고 독립적입니다
- 실시간으로 번역되면서 실행되기 때문에 실행 속도가 느립니다
5. JVM (Java Virtual Machine)
JVM은 Java프로그램이 실행되는 가상 컴퓨터라고 생각하시면 됩니다
This post is licensed under CC BY 4.0 by the author.