설명 순서는 다음과 같습니다.

1. JDK, JRE, JVM이란
2. JVM의 장점
3. JVM 구조

1. JDK, JRE, JVM이란

   - JDK : Java Debelopment Kit의 약자로, 자바로 개발할 때 필요한 도구들의 모음

   - JRE : Java Runtime Environment의 약자로, 자바 프로그램을 실행시킬 때 필요한 환경의 모음

   - JVM : Java Virtual Machine의 약자로, 자바 프로그램을 실행시키는 핵심적인 기기

   - Java 프로그램 실행 순서

      ① Java 소스코드(.java 파일)을 Java Compiler(javac)가 바이트코드인 .class파일로 컴파일

      ② JVM이 바이트코드를 기계어로 변환

      ③ 기계어 실행

 


2. JVM의 장점

   - 다른 언어는 작성한 코드를 특정 OS에서 컴파일 하면, 해당 OS에서만 실행가능한 프로그램이 만들어짐. 다른 OS에서는 실행이 불가능

   - 그렇지만, Java의 경우 어느 OS에서 컴파일된 바이트코드는 JVM만 있다면 다른 OS에서 실행이 가능함. 그래서 'Write Once Read Anywhere'라는 장점이 있음

   - 소스코드 -> 바이트코드 -> 기계어, 이렇게 되므로 두번 컴파일을 하기 때문에 속도의 문제가 발생하는데, JIT 컴파일러 방식으로 개선되어 속도에서도 개선을 이룸

   - JIT 컴파일러는 같은 코드를 매번 해석하지 않고, 실행할 때 컴파일을 하면서 해당 코드를 캐싱함


3. JVM 구조

   - 클래스 로더 : .class 파일을 필요에 따라 동적으로 로드하고 엮어서 JVM의 메모리 영역인 Runtime Data Areas에 배치함

   - 실행 엔진 : 런타임 데이터 영역에 배치된 바이트 코드를 명령어 단위로 읽어서 실행

   - 런타임 데이터 영역 : 프로그램을 실행할 때 사용되는 데이터들을 적재하는 영역

      ① 메서드 영역 : 바이트 코드(.class)를 처음 메모리에 올릴 때 초기화되는 대상을 저장하기 위한 공간. 이 영역은 클래스가 로드되고 종료될 때까지 저장됨. 이 영역에는 class 초기 정보 또는 static 변수나 메서드가 저장됨

      ② 힙 영역 : 런타임시 동적으로 생성되는 객체, 배열이 저장되는 공간

         * 만약 힙에 생성된 객체가 참조되지 않는다면, 이것을 쓰레기로 취급하고 Garbage Collector를 통해 제거됨

      ③ 스택 영역 : 메서드 호출마다 각각의 스택 프레임이 생성되고 이 안에서 사용되는 값을 임시로 저장하는 공간

      ④ PC 레지스터 : 현재 수행중인 JVM 명령어 주소를 저장하는 공간


JVM에 대해 알아볼 수 있었습니다.

'Java' 카테고리의 다른 글

JAR, WAR, EAR  (1) 2023.09.18
Garbage Collector  (0) 2023.09.15
Abstract Class vs Interface  (0) 2023.09.13
[Java의 정석] Static이란?  (0) 2023.04.07
[Java의 정석] JVM이란?  (0) 2023.04.01

+ Recent posts