JVM(Java Virtual Machine)
Java 코드 및 Application을 동작시킬 수 있도록 런타임 환경을 제공해주는 Java Engine이다.
JRE(Java SE Runtime Environment)
Java 실행환경, JVM이 자바를 실행시킬때 필요한 라이브러리 및 기타 필수 파일을 가지고 있다.
JDK(Java Development Kit)
JRE 외에 개발을 위해 필요한 도구를 가지고 있다. 개발자를 위한 kit이다.
<< JDK의 상세 구조 >>
JVM(Java Virtual Machine)
JVM의 기능
1. 자바 프로그램이 어느 기기, 어느 운영체체 상에서도 실행 가능
2. 자바 프로그램의 메모리를 효율적으로 관리 & 최적화 3. 인터프리터로써 컴파일된 바이트 코드를 실행
- 가비지 컬렉션 : jvm이 메모리를 관리하는 프로세스를 지칭하는 용어.
- 자바 애플리케이션을 실행하기 위해 JVM은 자바 클래스 로더(Class Loader)와 자바 실행 엔진(Execution Engine)에 의존.
- JVM 구현 : 오픈 JDK의 핫스팟 JVM은 참조 구현으로 철저하게 증명된 코드기반 중 하나, 거의 모든 JVM은 오픈 JDK와 핫스팟 JVM의 포크(Fork)로 생성된 것이다.
* 포크(Fork) : 유닉스 계열 환경에서 포크란 프로세스가 자기자신을 복제하는 동작. 시스템 호출의 일종이며 커널안에서 구현된다.
JRE(Java SE Runtime Environment)
JRE의 기능
1. 자바클래스 라이브러리, JVM, 자바 클래스 로더를 포함.
2. 클래스 로더, 클래스 라이브러리를 통해 자바코드를 라이브러리와 결합한 후 JVM에 넘겨 실행
3. 각 JRE에는 코어 자바 클래스 라이브러리, 자바 클래스 로더, 자바 가상 머신이 포함된다.
- 자바의 메모리는 hip, stack, metaspace 세가지 구성 요소로 이뤄진다.
- 메타스페이스는 자바가 클래스 정의와 같이 프로그램에서 변화하지 않는 정보를 저장하는 장소다.
- 힙 공간은 자바가 변수 내용을 저장하는 장소다.
- 스택 공간은 자바가 함수 실행 및 변수 참조를 저장하는 장소다.
'Language & Framework > Java' 카테고리의 다른 글
[JAVA] :: 자바 기초 1 :: 객체 / 클래스 / 인스턴스 / 속성 / 함수 / 메소드 (2) | 2021.07.04 |
---|---|
[JAVA] 소켓(socket) 프로그래밍 (0) | 2021.01.20 |
[JAVA]입출력 IO & NIO (0) | 2021.01.20 |
[JAVA] 자바 컴파일은 어떻게 동작할까? (0) | 2021.01.18 |
[JAVA] Garbage Collection (가비지컬렉션)이란? (0) | 2021.01.18 |