목표
자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기.
학습할 것
- JVM이란 무엇인가
: Java Virtual Machine 의 약자. (자바 가상 기계)
: 자바의 특징 중 하나인 WORA(write once run anywhere)을 할 수 있도록 만들어준다.
: 타 언어는 운영체제에 종속적(플랫폼 종속적)이라 아무데서나 실행이 불가하지만 java는 JVM만 있으면 어디서든 실행 가능
- 컴파일 하는 방법
: 컴파일이란
소스 프로그램(우리가 작성하는 프로그래밍 언어) => 기계어(컴퓨터가 읽을 수 있는 언어) 변환하는 과정
* 자바의 경우 (확장자)
.java => .class
: javac
자바 소스를 바이트 코드로 변환하는 컴파일러
- 실행하는 방법
: 자바는 컴파일을 해준 뒤에 (.class 파일로 만든 후) JVM위에서 실행이 가능하다.
: 컴파일 뒤에 실행.
: java
jre의 bin 디렉토리에도 동시에 설치되어있는 자바 응용프로그램 실행기로 이 도구를 통해 JVM이 작동하며 자바프로그램이 실행
- 바이트코드란 무엇인가
: 자바 컴파일러가 자바 소스 프로그램을 컴파일 한 기계어
: 플랫폼에 대한 종속성 없이 JVM에서 실행되는 바이너리 코드다. (2진수로 되어있음)
- JIT 컴파일러란 무엇이며 어떻게 동작하는지
: JIT(just-in-time compilation)
: JVM , .NET, node.js 등 에서 컴파일 하는 방식
: interpreter 방식의 단점을 보완하기 위해 도입된 방식
: JIT 컴파일러는 바이트코드를 읽어 빠른 속도로 기계어를 생성할 수 있다.
이런 기계어 변환은 코드가 실행되는 과정에 실시간으로 일어나며(그래서 Just-In-Time이다), 전체 코드의 필요한 부분만 변환한다. 기계어로 변환된 코드는 캐시에 저장되기 때문에 재사용시 컴파일을 다시 할 필요가 없다.
: 딱 한번만 실행될 경우에는 인터프리터 방식이 더 나음
- JVM 구성 요소
1. Class Loader : 컴파일 한 .class 파일을 런타임에 올려서 실행하는 부분
2. Execution Engine : .class 파일을 해석한다 (인터프리터, JIT 방식으로)
3. Runtime Data Area : 해석된 프로그램은 여기서 돌아간다. JVM 메모리 영역. 필요에 따라 GC나 쓰레드 동기화등 관리해줌
4. Garbage Collector : 메모리 관리를 해준다. Runtime Data Area에서 해주는 역할 중 하나
- JDK와 JRE의 차이
: JDK (Java Development Kit)
: JRE (Java Run-time Environment)
: JDK가 더 큰 개념
JDK는 자바컴파일러 등 자바 응용 프로그램을 개발하는데 필요한 도구
+자바 응용프로그램이 실행될때 필요한 JVM,
+ 그리고 JRE(표준 클래스 파일들을 포함)까지 포함
출처: 위키백과 , 명품 자바프로그래밍 책 (참조)
'개발공부 > JAVA' 카테고리의 다른 글
자바스터디 2일차 (feat.백기선님) (0) | 2020.11.15 |
---|---|
자바의 특징 (0) | 2020.11.09 |
[자료구조] 스택 / STACK 알아보기 (0) | 2020.03.31 |
[JAVA] Iterator 알아보기 (0) | 2020.03.23 |
[JAVA] startsWith / endsWith 특정문자열 앞뒤 체크 (0) | 2020.03.19 |