☕Java

JVM & JDK

코딩베이비 2023. 2. 9. 14:39

프로그램이 제대로 돌아가기 위해서는 컴퓨터의 다양한 자원(CPU, RAM, I/O 장치 등)이 필요하다.

이런 장치들을 운영체제가 관리해 주는데, 운영체제는 여러 종류가 있기 때문에 각각 다른 방법을 통해 자원을 관리한다.

그렇다면 Linux, Windows, MacOS 이렇게 세 종류의 운영체제 위에서 프로그램을 실행시키려면 세 가지 버전의 프로그램이 필요할까?

Java에는 JVM이라는 도구가 있기에 운영체제 별로 여러 프로그램을 개발하지 않아도 된다.

자바 프로그램 실행 단계

JVM(Java Virtual machine)

  • 말 그대로 자바를 실행시키는 가상의 기계.
  • 운영체제를 대신해 Java 프로그램을 실행시킨다.
  • 컴파일된 바이트 코드를 각 운영체제에 맞는 기계어로 바꿔준다.
  • 바이트 코드를 각 운영체제에 맞는 기계어로 번역해주기 때문에 이식성이 좋지만,
    한 번의 컴파일링으로는 실행 가능한 기계어가 만들어지지 않기 때문에
    C와 같은 언어의 컴파일링으로 만들어진 기계어 보다는 속도가 느리다.
    (JRE 내부의 JIT라는 컴파일러를 통해 속도 계속 개선중!)

 

JDK(Java Development Kit)

  • Java SE(Standard Edition)의 구현체
  • JDK = JRE + 개발에 필요한 도구
    • JRE(Java Runtime Environment) = JVM + 표준 클래스 라이브러리
  • 개발된 프로그램을 실행만 하려면 JRE만 설치, 개발하려면 JDK 설치 필요
    (JDK 다운로드 시 항상 호환 버전의 JRE 포함, JRE에는 JVM 포함, 각자 별도 다운로드도 가)

 

 

참고하기

https://medium.com/@ahn428/java-jit-%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC-c7d068e29f45

 

Java - JIT 컴파일러

Java 프로그래밍을 공부하다 보면 가끔 JIT 컴파일러를 마주치곤 합니다. 이번 기회에 이게 뭐 하는 컴파일러인지 알아보겠습니다.

medium.com

https://www.itworld.co.kr/news/110768

 

"JRE란 무엇인가", 자바 런타임 환경의 이해

자바 개발 키트(Java Development Kit, JDK), 자바 가상 머신(Java Virtual Machine, JVM), 자바 런타임

www.itworld.co.kr