All Day Tired

JDK, JRE, JVM 본문

Back/Java

JDK, JRE, JVM

yu.dev 2024. 10. 14. 00:03

요즘 기계적으로 개발만 하는 기분이라 초심으로 돌아가는 의미에서 강의들으면서 정리한 내용을 적어봄....

 

컴파일

사람이 이해하는 코드를(ex. System.out.println("hello");) 기계가 이해할 수 있는 기계어(010101....)로 번역하는 과정

 

컴파일러

컴파일을 하는 프로그램

 

바이트 코드(바이너리 코드)

0과 1로 이루어진 코드, 컴퓨터가 이해하는 코드, 기계어

0과 1의 조합(=바이트 코드)은 운영체제마다 달라서 같은 0과 1의 코드라도 윈도우에서는 hello가 출력될 수 있으나 맥, 리눅스에서는 hello가 출력되지 않을 수 있음.
C언어의 경우에서는 각각의 운영체제마다 다른 컴파일러가 필요함. 그래서 이 컴파일러가 각각의 운영체제마다 다른 0과 1의 조합인 코드를 만들어냄.
하지만 Java는 Java 컴파일러가 하나가 있고 이 Java 컴파일러 하나에서 생성된 0과 1의 바이트 코드가 하나 있음. 이 바이트 코드가 각각의 운영체제 위에 JVM에 가게 됨. JVM이란 0과 1의 조합인 바이트 코드와 운영체제를 호환시켜주는 역할을 함. 이건 Java를 설치하면 같이 설치가 되어서 각 운영체제에 Java를 설치했다면 있을 수 밖에 없음. 따라서 JVM을 거치기때문에 Java는 컴파일러가 하나만 있으면 됨.
-> 컴파일러가 기계어로 번역을 해주고 JVM이 운영체제에 맞게 한번 더 번역함

JDK > JRE > JVM

JVM

자바가상머신, 운영체제별로 존재, 바이트 코드를 읽고 검증하고 실행, 바이트 코드를 운영

 

JRE

자바실행환경, JRE = jvm + Java 프로그램 실행에 필요한 라이브러리 파일(출력을 할 때 쓰이는 System.out.println 이런게 들어있는 라이브러리 파일) 등, JVM실행환경 구현(JVM이 실행되기 위한 라이브러리들을 가지고 있다)

 

JDK

자바개발도구, JDK = JRE + 개발을 위한 도구, 컴파일러/디버그 도구 등이 포함

JDK를 설치하면 JRE와 JVM이 함께 설치됨, Java버전 = JDK 버전

'Back > Java' 카테고리의 다른 글

람다식, 익명클래스  (0) 2024.12.17
Annotation  (0) 2024.11.26
Optional  (1) 2024.09.19
Comments