이번 포스팅에서는 java를 사용하게 된다면 무조건 만나게 되는 이 jdk, jre, jvm에 대해서 설명을 해볼것이다.
용어의 관계는 JDK가 JRE,JVM을 포함하고 있고, JRE는 JVM을 포함하고 있다.
그림으로 본다면 다음과 같다.
작은것부터 jvm , jre , jdk 순서대로 하나하나 소개를 해보도록 할 것이다.
JVM
Java Virtual Machine 의 약자로 자바의 최대 강점중 하나는 jvm 이라는 자바 가상환경 어디서든 자바 코드를 돌릴수 있다는 점이다.
그러면서 추가적으로 메모리를 효율적으로 관리 및 최적화를 해주는데 이 작업을
가비지컬렉션 이라고 하여 jvm이 메모리를 관리하는 프로세스를 지칭하는 말이다.
JRE
Java Runtime Environment 의 약자로 자바 클래스 라이브러리, JVM, 그리고 위에는 나오지 않지만 자바 클래스 로더를 포함한다.
클래스로더와 클래스 라이브러리를 통해 작성된 자바 코드를 라이브러리와 결합 후에 JVM으로 넘겨서 실행을 시킨다.
JRE 그 자체로 기능이 있다기보다는 JVM이 동작하기 위한 환경을 만드는 것이다.
JDK
Java Development Kit 의 약자로 일반적으로 우리가 자바를 공부하기 위해서 설치하는것이 바로 이 jdk이다.
위에서 언급한것 처럼 jdk는 jre를 내포하고 있기에 jre를 받을지 jdk를 받을지 고민한다면 ,
자바로 뭘 개발하는것이 아니라 실행만 하게 되는경우에만 jre를 사용하고 개발을 하는 분이라면 jdk를 설치하며 자바를 환경에 설치해주면 된다.
jdk에는 jre에 없는 자바 컴파일러를 포함하고 있기에 그렇다.
우리가 만든 자바 파일은 .java로 생성이 되지만 실행하기 위해서는 컴파일을 거쳐 .class라는 파일이 생성되게 된다.
마무리로 아래 사진으로 이해를 해볼수 있다.
'IT > Java' 카테고리의 다른 글
Spring 에서 IOC, AOP, DI 에 대하여 (54) | 2022.03.09 |
---|---|
implements, extends 란? (23) | 2022.02.26 |
JPA N+1 이란? (19) | 2022.02.11 |
SpringBoot/JPA part.10 (36) | 2022.02.08 |
SpringBoot/JPA part.9 (18) | 2022.02.07 |
댓글