좋은 인연, 좋은 발견

JVM, JRE, JDK의 차이는 무엇인지 알아봅시다. 본문

it

JVM, JRE, JDK의 차이는 무엇인지 알아봅시다.

dohwankim 2018. 5. 2. 20:28

자바언어를 이용해 코딩을 하다보면 자주 접하는 용어 중 JVM, JRE, JDK가 있습니다.

이들은 무슨 뜻인지 알아보도록 하겠습니다.


 JVM은 자바 가상 머신(Java Virtual Machine)의 약자입니다.

JVM은 자바소스코드로부터 만들어진 자바 바이너리 파일인 .class파일을 실행할 수 있습니다.

JVM은 플랫폼에 의존적입니다. 즉, 리눅스의 JVM과 윈도우즈의 JVM은 서로 다릅니다.

다만, 컴파일된 동일한 자바 바이너리 파일은 리눅스의 JVM이든, 윈도우즈의 JVM이든 각각 동일하게 동작시킬 수 있도록 되어있습니다.


 JVM의 동작원리를 다시 보자면 아래와 같습니다.

첫번째로 자바 바이너리 코드를 읽어냅니다.

두번째로 자바 바이너리 코드를 검증하게 됩니다.

세번째로 자바 바이너리 코드를 실행합니다.


JVM은 실행환경(Runtime Environment)의 규격을 제공합니다. 가령, 필요한 라이브러리, 기타 등등 파일을 제공합니다.


JVM의 규격은 JAVA SE, JAVA EE, JAVA ME, JAVA CARD가 있습니다.


JAVA SE는 모든 자바 플랫폼의 기본이 되고 JVM, 자바 언어 규격 제정의 기준이 됩니다. 또, 데스크탑 환경 및 서버 환경에서 널리 사용됩니다.


JAVA EE는 기업 서버환경에서 사용될 목적으로 제정된 플랫폼으로 자바 SE에 추가 API가 더 정의된 형태입니다.


JAVA MM은 CLDC와 CDC를 제공합니다.

 - CLDC는 저사양 임베디드 시스템을 위한 플랫폼으로 특히 스마트폰이 아닌 피저폰에서 많이 사용됩니다. 8~32MHz 클럭으로 동작하는 16비트 혹은 32비트 프로세서, 최소 160KB ROM(Flash), 32KB RAM을 목표로하는 플랫폼입니다.

 - CDC는 상태적으로 고사양 임베디드 시스템을 위한 플랫폼으로 디지털 TV나 블루레이 디스크 플레이어에 널리 사용되고 있습니다. 원래는 스마트폰 같은 고사양 휴대폰에도 CDC를 보급하는 것이 목적이었으나 안드로이드, iOS 위주로 재편된 시장에서는 거의 사용되지 않고 있습니다.


자바카드는 Classic Edition과 Connected Edition을 제공합니다.

 - Classic Edition은 메모리/CPU가 제약된 스마트카드용 플랫폼으로 목표 환경은 RAM 1.2KB, EEPROM이나 flash 16KB, ROM 32~48K 정도를 가집니다.

 - Connected Edition은 스마트카드의 고사양화에 의해 새로 추가된 플랫품입니다. 최소 환경은 비휘발성 메모리 176KB, RAM 16KB를 요구합니다. ROM 512KB, 읽고 쓸 수 있는 비휘발성 메모리 128KB, RAM 24KB 정도의 환경을 목표로 합니다.



참고로 JRE와 JDK의 개념은 아래와 같습니다.

 JRE는 자바 실행 환경(Java Runtime Environment)의 약자입니다.

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

즉, JRE는 JVM의 실행환경을 구현했다고 할 수 있습니다.


 JDK는 자바 개발도구(Java Development Kit)의 약자입니다.

JDK는 JRE에 추가로 개발에 필요한 도구(javac,java,javaw 등)를 포함하고 있습니다.

Comments