ebson

[JAVA STUDY] JDK, JRE, JVM 각각의 개요와 역할의 이해 본문

DEV-STUDY, ETC.

[JAVA STUDY] JDK, JRE, JVM 각각의 개요와 역할의 이해

ebson 2022. 8. 15. 16:19

JDK, JRE, JVM

 

1. 컴퓨터는 자바 언어를 어떻게 이해하는가?

  • 자바로 작성한 코드를 실행하면, 0과 1로 구성된 바이트코드(바이너리코드)로 컴파일함
  • 이 과정의 주체 프로그램을 컴파일러라고 함
  • 바이트 코드 : 0과 1로 이루어진 코드로서 컴퓨터가 이해할 수 있음
  • 컴파일 : 인간이 이해하기 쉬운 언어를 기계어로 번역하는 과정
  • 컴파일러 : 컴파일을 하는 프로그램

 

2. JVM의 역할은 무엇인가?

  • 0과 1의 조합을 운영체제마다 다르게 이해함
  • 그래서 C언어의 경우, 윈도우용, 맥용, 리눅스용 컴파일러를 각각 필요로 함
  • 그러나 자바는 자바 컴파일러만을 사용함
  • 그리고 자바 컴파일러가 생성한 바이트 코드를 윈도우, 맥, 리눅스 위의 JVM에게 줌
  • 그래서 JVM이란 바이트 코드를 자바 컴파일러와 운영체제가 호환하도록 하는 역할임
  • 다시 말해서, JVM이 자바 컴파일러가 준 바이트 코드를 각 운영체제에 맞게 번역함
  • JVM은 자바를 설치하면 함께 설치됨
  • JVM은 그루비, 스칼라, 코틀린 프로그램에서도 사용됨
  • -> 결론 : 보통의 프로그래밍 언어는 OS마다 다른 컴파일러가 필요하지만, JAVA는 JVM이 바이트코드를 OS에 맞게 번역해 주며 이 장점 덕에 JAVA외 언어에서도 사용함
  • JVM은 Java Virtual Machine의 약자임
  • JVM은 OS별로 존재함
  • JVM은 바이너리 코드를 읽고 검증하고 실행함

[ 그림 1 ] 컴파일러와 JVM의 역할

 

3. JRE는 무엇인가?

  • JRE는 Java Runtime Environment의 약자임
  • JRE는 JVM과 자바 프로그램 실행에 필요한 라이브러리의 집합임
  • JVM의 실행 환경을 구현함

 

4. JDK는 무엇인가?

  • JDK는 Java Development Kit의 약자임
  • JDK는 JRE와 자바 프로그램 개발을 위한 도구를 포함함
  • JDK는 컴파일러, 디버그 도구 등을 포함함
  • -> 결론 : JVM < JRE < JDK 순서로 포함됨, 그래서 JDK를 설치하면 JRE와 JVM도 함께 설치됨, 따라서 Java의 버전은 JDK의 버전을 의미함

[ 그림 2 ] JDK > JRE > JVM

 

5. Java의 버전과 종류(JDK의 버전과 종류)

  • 1995년 JDK Beta를 시작으로 2021년 9월에 Java SE 17버전이 출시됨
  • JDK 5 에서 Generic 기능이 추가됨
  • JDK 8 에서 Lambda 기능이 추가됨
  • 프로그램에는 LTS(Long Time Support)로서 오래써도 되는 버전이 있음
  • JDK 종류로는 ORACLE, AZUL, OpenJDK, Red Hat/CentOS 등이 있다.
  • Oracle JDK는 오라클에서 만든 것으로 개인에게는 무료, 기업용은 유료임
  • Open JDK는 Oracle JDK와 비슷한 성능이지만 언제나 무료임
  • -> 결론 : JDK에는 버전이 있고 각 버전별로 새로운 기능이 추가되거나 기존 기능이 사라짐 그리고 JDK에는 종류가 있고 기능 자체는 모두 동일하나 성능과 비용의 차이가 있음

[ 그림 3 ] JDK 버전



[ 그림 4 ] JDK 종류

 

6. 총정리

  • 프로그램 언어는 컴파일러를 거쳐 컴퓨터가 이해할 수 있는 바이트 코드가 됨
  • 보통의 프로그램 언어는 운영체제마다 다른 컴파일러를 사용함
  • 자바는 동일한 컴파일러를 사용하고 운영체제마다 JVM이 한번 더 번역함
  • JVM은 0과 1을 실행, JRE는 자바 실행에 필요한 라이브러리의 집합, JDK는 컴파일러와 디버거를 포함한 통합 개발도구임
  • JDK > JRE > JVM 순서로 포함됨
  • JDK에는 버전과 종류가 있음 많이 쓰는 버전은 LTS 버전으로 Java 8 과 Java 11 이 있고 많이 쓰는 종류로는 Oracle JDK와 Open JDK가 있음

 

 

참고 출처

 

'DEV-STUDY, ETC.' 카테고리의 다른 글

LG CNS DEVON FRAMEWORK  (0) 2022.08.28
데이터독(Datadog)  (1) 2022.08.28
젠킨스(JENKINS)  (0) 2022.08.28
지라(JIRA)  (0) 2022.08.28
[JAVA STUDY] JAVA 프로그램의 빌드 도구 Ant, Maven, Gradle 의 비교와 이해  (0) 2022.08.15
Comments