[Java] JVM / JRE / JDK

Hoehenflug·2022년 2월 15일
0

⛳ JVM / JRE / JDK 이 3가지에 대해 간단히 알아보자


📏 JVM(Java Virtual Machine)

  • 프로그래밍 언어를 컴퓨터가 알아들을 수 있는 기계어로 바꿔주는 작업을 C, Java와 같은 컴파일 언어에서는 컴파일러가 진행
  • 프로그램이 도는 환경(운영체제)마다 적합한 기계어로 컴파일해줘야 함 ⇒ 이 문제를 해결하기 위한 것이 JVM
  • Java로 코딩 후 컴파일하면 byte code가 생성됨(.class) ⇒ byte code를 실행할 컴퓨터에 깔린 JVM에 갖다주면 그 컴퓨터가 이 프로그램을 실행할 때 해당 JVM이 byte code를 그때그때 기계어로 컴파일
    • JIT 컴파일(Just In Time 컴파일) : 주어진 코드를 실행 시점에 그때그때 기계어로 ‘통번역’ 해주는 방식

정리

  • JVM은 Java로 짜서 컴파일한 소프트웨어들이 JVM이 깔린 어떤 종류의 컴퓨터에서든 돌 수 있게 해주는 것
  • 한 번 작성하면 모든 곳에서 실행(Write Once Run Anywhere) = 한 번 컴파일 됐으면 운영체제 별로 다시 컴파일 할 필요가 없는 것!

📐 JRE(Java Runtime Environment)

  • Java로 짠 소프트웨어가 컴파일 및 빌드까지 다 된 다음 이를 사용할 곳에 주어져서 실행될 때 그 환경요소들로서 필요한 것들
  • List, Map 등 널리 쓰이는, JVM에서 도는 라이브러리들을 JVM이랑 세트로 묶어서 다운받아 설치할 수 있도록 한 것
  • JRE는 JVM을 포함하고 있어 어떤 컴퓨터든 JRE만 깔리면 Java로 작성한 프로그램을 돌릴 수 있게 됨

✂ JDK(Java Development Kit)

  • Java 개발 도구
  • JDK는 JRE를 포함 + 개발에 필요한 것들 ⇒ 최종 사용자가 아닌 프로그래머를 위한 기능들도 함께 탑재
    • javac : Java 코드 컴파일
    • jdb : Java 디버깅
    • jar : 서로 연관 있는 클래스들을 하나의 JAR 파일로 묶어줌

📎 JVM / JRE / JDK의 포함 관계

아래 첨부한 그림처럼 JDK는 JRE를 포함하고, JRE는 JVM을 포함하는 관계라고 하면 되겠다.

출처 및 참고 :
https://www.youtube.com/watch?v=VvVruEDCSSY
https://cryptosalamander.tistory.com/4


💪🏻 기록

JVM, JRE, JDK에 대해서는 Java로 프로그래밍을 한다면 반복적으로 등장하기에 꼭 정리하고 싶었다. 더 깊이 들어가서 이해해보고 싶지만 우선은 이 정도로 셋의 차이점, 관계 등만 정리하고 넘어가자!

0개의 댓글