[Java] JVM, JRE, JDK

2022. 5. 12. 01:58·Java

JVM

Java Virtual Machine (자바 가상 머신)

JVM은 자바 바이트코드를 실행할 수 있는 주체이다. Java로 작성된 프로그램은 운영체제에 맞는 실행 파일로 컴파일되는 것이 아닌 .class 라는 확장자를 가진 파일(자바 바이트코드)로 변환된다. 변환된 자바 바이트코드는 JVM 위에서 작동이 된다. 이때, 미리 설치된 JVM 은 운영체제 별로 동일하게 작동하도록 .class 파일에게 환경을 제공한다.

 

JRE

Java SE Runtime Environment (자바 런타임 환경)  

JRE는 컴파일 된 Java 프로그램(자바 바이트코드, class 파일)을 실행하는데 필요한 패키지이다. JRE는 JVM을 포함하고 있다. JVM은 우리가 작성한 코드를 기반으로 한 .class 확장자를 가진 클래스 파일이 작동할 수 있도록 환경을 제공해준다. 하지만 원활하게 작동하기 위해서는 코드에 작성된 내용뿐만 아니라 몇 가지 필수적인 요소들이 필요하다. 이를 제공해주는 것이 JRE이다. JRE는 크게 JVM과 Java Class Libraries 그리고 Class Loader로 구성된다. Java Class Libraries 는 Java 를 실행시키는데 필수적인 라이브러리로, java.io , java.util , java.thread 등 작동에 필수적인 요소들을 가지고 있다.

JDK

Java SE Development Kit (자바 개발 키트)

Java 를 사용하기 위해 필요한 모든 기능을 갖춘 Java용 SDK(Software Development Kit)이다. JDK는 JRE를 포함하고 있다. JRE는 개발에 사용되는 것이 아닌 실제 프로그램을 구동시키는 데 집중을 하고 있다. 따라서 Java 코드가 주어져도 이를 분석하거나 클래스 파일로 변환하는 일은 할 수 없다. Java Compiler를 비롯한 개발에 필요한 요소들은 없기 때문에 개발을 하기 위해서는 다른 요소들이 더 필요합니다. 이를 제공해주는 것이 JDK이다. JRE에 있는 모든 것 뿐만 아니라 컴파일러(javac)와 jdb, javadoc 과 같은 도구도 있다.  

 

즉, JDK는 Java를 활용하여 프로그램을 개발할 때 필요한 도구 모음으로, 프로그램을 생성, 실행, 컴파일할 수 있다.

💡 SDK란?
Software Development Kit (소프트웨어 개발 키트)
하드웨어 플랫폼, 운영체제 또는 프로그래밍 언어 제작사가 제공하는 툴이다. 키트의 요소는 제작사마다 다르다.  
SDK의 대표적인 예로, JDK 등이 있다.
SDK를 활용하여 애플리케이션을 개발할 수 있다.

 

요약

JDK는 자바 프로그램을 실행, 컴파일, 개발하기 위한 도구 모음이다. JRE, JVM를 모두 포함한다.
JRE는 자바 프로그램을 실행할 수 있게 하는 도구이다. JVM을 포함하고 있다.  

 

📗 참고

  • [JAVA] JVM이란? 개념 및 구조 (JDK, JRE, JIT, 가비지 콜렉터...)
  • JVM에 관하여 - Part 1, JVM, JRE, JDK
  • JVM, JRE, JDK에서의 차이점은 무엇인가?
저작자표시 (새창열림)
'Java' 카테고리의 다른 글
  • [Java] 객체지향이란?
  • [Java] GC란?
  • [Java] JIT 컴파일러란?
  • [Java] JVM이란?
김행만
김행만
이모저모 다 적기
  • 김행만
    hyeinisfree
    김행만
  • 전체
    오늘
    어제
    • 분류 전체보기 (41)
      • AWS (0)
      • Network (6)
      • CICD (1)
      • Spring (0)
      • Ruby on Rails (0)
      • Java (12)
      • Python (1)
      • Computer Science (6)
        • Algorithm (2)
        • Data Structure (3)
        • Database (0)
        • Design Pattern (1)
      • Solving Algorithm Problem (12)
        • LeetCode (12)
        • Programmers (0)
      • 자격증 (1)
      • Tip (1)
      • Etc (1)
        • 도서, 강의 (1)
        • Talk (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    Network
    Packet Tracer
    cisco packet tracer
    java
    java 필수 문법
    CISCO
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
김행만
[Java] JVM, JRE, JDK
상단으로

티스토리툴바