포스트

[JAVA] JDK, JRE, JVM

1. JDK, JRE, JVM


jdkjrejvmJDK, JRE, JVM 포함관계

1.1. JDK(Java Development Kit)

: JRE, 개발용라이브러리들을 포함

1.2. JRE(Java Runtime Environment)

: JVM이 자바 프로그램을 실행하기 위해 필요한 라이브러리와 파일들을 갖고 있다. 일반적인 자바 프로그램을 실행하기 위해 사용되는것이 JRE이다. 자바로 개발을 하지 않는 일반 사용자들은 자바로 만든 프로그램을 실행만 하면 되기 때문에 JRE만 설치해도 된다. JVM이 원활하게 잘 작동할 수 있도록 환경을 맞춰주는 역할

1.3. JVM(Java Virtual Machine)

: JAVA 프로그램용 운영체제(OS역할) 컴파일러와 디버거등이 포함된 버전 .java(소스코드)로부터 컴파일된 .class(자바 바이너리파일)을 실행한다 자바 바이너리파일을 플랫폼에 관계없이 독립적으로 JVM이 각 OS 위에서 동작 JVM은 각 플랫폼에 의존한다(windows, mac, linux, etc)

2. JVM


JVM의 역할을 크게 두가지로 볼 수 있다.

  • WORA

    한 번 쓰고 모든 곳에서 실행한다 (Write Once, Run Anywhere => WORA)
    - Java 원칙

C언어로 작성된 소스코드(Test.c)가 있다고 할 때

comp

각각의 컴파일러1를 통해 변환하게 되면, 변환을 한 운영체제에서만 실행파일을 실행할 수 있다.


compjava

자바 컴파일러는 .java 파일을 javac(java compiler)가 바이트코드로 쓰여진 .class 파일로 변환한다. 자바 컴파일러는 자바 소스코드를 JVM을 위한 기계어로 변환한다.

JAVA가 어느 기기, 어느 운영체제 상에서도 실행될 수 있도록 각 운영체제별 JVM은 자바측에서 개발하여 배포하므로, 프로그래머는 운영체제에 관계없이 프로그램을 개발할 수 있다.

  • 자바 프로그램의 메모리를 효율적으로 관리 & 최적화해 준다.
    가비지 컬렉션(Garbage Collection)
    자바 프로그램 상에서 사용하지 않은 메모리를 지속적으로 찾아 제거함

jvm


  1. Compiler : 소스코드를 컴퓨터 프로세서가 실행 할 수 있도록 기계어로 변환 

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.