공부/Java

[공부/Java] JVM, JRE, JDK

yulee_to 2022. 12. 24. 02:50

Java


자바 가상 머신 (JVM, Java Virtual Machine) 

  • 각기 다른 플랫폼에 설치해 동일한 자바 실행 환경을 만들어주는 소프트웨어
  • Java는 JVM 덕분에 플랫폼에 종속적이지 않지만, JVM 자체는 플랫폼에 종속적이라 운영체제에 맞는 JVM을 설치해줘야 함
  • 응용 프로그램을 구성하는 클래스 파일(.class)의 바이트 코드를 JVM 환경에서 실행
  • JVM은 자바 실행 환경인 JRE에 포함되어 있어 현재 사용하는 컴퓨터 운영체제에 맞는 자바 JRE가 설치되어 있다면 자바 가상 머신이 설치되어 있다는 의미

JVM을 사용함으로써 하나의 바이트 코드(.class)로 모든 플랫폼에서 동작할 수 있다는 것이 가장 큰 장점이다!

JVM 동작 방식

1. 자바로 개발된 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당

2. 자바 컴파일러(javac)가 자바 소스코드(.java)를 자바 바이트코드(.class)로 컴파일

3. Class Loader를 통해 JVM Runtime Data Are로 로딩

4. Runtime Data Area에 로딩된 .class들을 Execution Engine을 통해 해석

5. 해석된 바이트코드는 Runtime Data Area의 각 영역에 배치되어 수행하며 이 과정에서 Execution Engine에 의해 GC의 작동과 스레드 동기화가 이루어짐

 

동작 방식은 아래 JVM의 구조 포스팅을 참고!

 

[공부/Java] JVM 구성 - Class Loader, Execution Engine, Garbage Collector

JVM의 구성요소 Class Loader Class Loader는 바이트코드(.class)를 읽어들여서 클래스 객체를 생성하는 역할을 담당한다. class 로딩은 Run-Time에 일어난다. 개발자가 new라는 예약어로 객체를 생성하는 코드

yulee.tistory.com

JDK (Java Development Kit) 

자바 개발 키트로 개발자들이 자바로 개발을 하는데 사용된다.

자바 응용 개발 환경으로 컴파일러, 디버거, JRE 등 개발에 필요한 도구들이 포함되어 있다. 

JDK의 bin 디렉토리에 대표적으로 javac, java 등의 개발 도구들이 들어있다.

개발을 위해 실행도 시켜줘야 하기 때문에 JRE도 포함되어 있다.

 

bin 디렉터리에 들어 있는 주요한 개발 소프트웨어

  • javac : 자바 컴파일러 
  • java : 자바 프로그램 실행기, JVM을 작동시켜 자바 프로그램 실행
  • javadoc : 자바 소스로부터 HTML 형식의 API 문서 생성
  • jar : 자바 클래스 파일을 압축한 자바 아카이브 파일(.jar) 생성, 관리
  • jmod : 자바의 모듈 파일(.jmd)을 만들거나 모듈 파일의 내용 출력
  • jlink : 응용 프로그램에 맞춘 맞춤형 JRE 생성
  • jdb : 자바 응용프로그램의 실행 중 오류를 찾는 데 사용하는 디버거
  • javap : 클래스 파일의 바이트 코드를 소스코드와 함께 보여주는 디어셈블러 

JRE (Java Runtime Environment)

자바 실행 환경으로 자바로 만들어진 프로그램을 실행시키는데 필요한 라이브러리들과 각종 API, 그리고 JVM이 포함되어 있다.

JRE는 자바로 개발은 안되고 실행만 된다.

 

사용자 디렉터리 구성요소 

  • bin : 자바 개발, 실행에 필요한 도구와 유틸리티 명령
  • conf : 여러 종류의 패치 파일
  • include : 네이티브 코드 프로그래밍에 필요한 C 언어 헤더 파일
  • jmods : 컴파일된 모듈 파일들
  • legal : 각 모듈에 대한 저작권과 라이선스 파일
  • lib : 실행시간에 필요한 라이브러리 클래스들 

참고자료:

https://coding-factory.tistory.com/826

728x90