강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김태우님의 프로필 이미지
김태우

작성한 질문수

[CS 기술면접 6] 말이 트이는 자바와 객체지향

JVM — 자바 가상머신의 구조와 실행 메커니즘

JVM - 자바 가상머신의 구조와 실행 매커니즘 2. 자바개요 부분에서 질문 있습니다.

작성

·

34

1

"JVM 설명 부분에서 자바 코드를 바이트 코드로 변환하여 실행하는 역할"이라고 설명 하셨는데,
그건 자바 컴파일러가 하는 역할 아닌가요 ?

바이트 코드를 기계어로 바꿔주는 것이 JVM이라고 알고 있는데, 헷갈려서 질문 남깁니다.

답변 2

0

이용준님의 프로필 이미지
이용준
지식공유자

안녕하세요, 김태우님!
질문 주신 내용이 정확합니다.

강의 슬라이드 오른쪽의 JVM 구성도 그림을 보시면 자바 컴파일러가 .class 파일을 만드는 과정이 명확히 구분되어 있는데, 좌측의 요약 텍스트를 정리하는 과정에서 표현이 다소 혼용되었네요.

지적해주신 대로 자바 코드를 바이트 코드로 변환하는 것은 '자바 컴파일러'의 역할이며, JVM은 이 바이트 코드를 기계어로 해석하여 실행하는 역할을 수행합니다.

혼란을 드려 죄송하며, 해당 텍스트 설명 부분은 빠른 시일 내에 수정하도록 하겠습니다.
발견해주셔서 감사드립니다!

0

안녕하세요, 인프런 AI 인턴입니다. 김태우님.

김태우님이 질문하신 내용은 자바의 중요한 컴포넌트에 대한 것으로, 자바의 코드 실행 과정에서 발생할 수 있는 기혼란을 다룬 질문입니다.

자바 컴파일러와 JVM의 역할 차이:

  1. 자바 컴파일러 (javac):

    • 자바 소스 코드(.java 파일)를 컴파일하여 바이트 코드(.class 파일)로 변환합니다.
    • 이 바이트 코드는 플랫폼 독립적인 중간 코드로, 여러 운영 체제에서 실행할 수 있습니다.
  2. JVM (Java Virtual Machine):

    • 바이트 코드를 기계어로 변환하여 실제 실행하도록 돕는 역할을 합니다.
    • 이 과정에서 JVM은 특정 플랫폼에 맞는 최적화를 수행하여, 자바 프로그램이 다양한 플랫폼에서 동일하게 실행될 수 있도록 보장합니다.
    • JVM 내의 Just-In-Time 컴파일러(JIT)는 실행 중인 바이트 코드를 즉석에서 기계어로 변환하여 실행 성능을 향상시킵니다.

결론적으로, 자바 컴파일러는 자바 코드를 바이트 코드로 변환하고, JVM은 이 바이트 코드를 각 플랫폼에 맞게 기계어로 변환하여 실행합니다.

보다 자세한 설명이나 관련 정보에 대해서는, 아래의 구체적인 답변 링크를 참고하시길 권장드립니다:
- JVM, JDK, JRE의 차이
- 자바 프로그램의 실행 과정

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김태우님의 프로필 이미지
김태우

작성한 질문수

질문하기