본문 바로가기

Java

[JAVA] JVM, JRE, JDK

JVM(Java Virtual Machine)란?

자바 가상 머신. 

Java 바이트코드(.class)가 실행될 수 있는 런타임 환경을 제공해주는 규격이다.

각각의 OS의 구성이 다르기 때문에 JVM, JRE, JDK는 플랫폼에 의존적이지만, Java는 플랫폼에 독립적이다.

플랫폼 의존적

     플랫폼에 따라 코드가 변경되거나, 다시 컴파일해야 하거나, 또는 아예 실행조차 할 수 없는 경우

※ 플랫폼 독립적

     특정 운영체제나 기계에 상관없이 사용가능한 경우



JVM의 역할

∎ Loads Code : 소스코드 읽기

∎ Verifies Code : 소스코드 검증 및 확인(문법 및 정상 동작 확인)

∎ Executes Code : 소스코드 실행(실제 머신에서 소스코드를 실행해 프로그램 구동)

∎ Provides Runtime Envrionment : 런타임 환경 제공(어떠한 장비에서건 구동이 되기 위해 기본 베이스 환경 구축)




JRE(Java Runtime Environment)란?

자바 실행 환경.

런타임 환경을 제공하는데 사용되며, 물리적으로 존재하는 JVM을 구현하는 역할을 한다.

JRE는 JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타파일들을 가지고 있다.


Java언어로 작성된 프로그램을 실행하기 위해서는 JRE(Java SE Runtime Environment)가 필요하다.

Java언어를 사용하는 개발자가 아니라 Java언어로 만들어진 프로그램을 실행하는 사용자라면 JRE만 컴퓨터에 설치하면 된다.




JDK(Java Development Kit)란?

자바 개발 도구.

JRE와 개발 툴을 포함한다. 

컴파일러를 포함하며, 자바코드를 클래스파일로 만들어준다.

Java 언어를 사용하는 개발자는 Java언어로 작성된 소스를 컴파일하고 관리할 필요가 있다. 

이때 사용되는 도구를 JDK(Java SE Development Kit)라고 말한다. 

컴파일한 결과를 실행하기 위해서는 JRE가 필요하기 때문에 JDK안에는 JRE도 포함되어 있다.







참고자료

https://www.edwith.org/

http://jusungpark.tistory.com/13

http://tworab.tistory.com/13

'Java' 카테고리의 다른 글

[Java] 클래스, 객체  (0) 2018.12.30
[Java] 배열  (0) 2018.12.30
[Java] 변수  (0) 2018.12.30
[Java] Java 개요  (0) 2018.12.30
[JAVA] Eclipse & Java Code Conventions  (0) 2018.11.20