Java 컴파일과 요소

Lungnaha·2022년 7월 6일
2

Spring

목록 보기
4/6

💪 들어가며...

이번 포스트는 Java의 기본 중의 기본인 컴파일과 사람들이 많이 헷깔려하는 JVM, JRE, JDK 에 대해서 제가 아는 대로 간단히 정리해보려고 합니다.


🏁 JVM vs JRE vs JDK

📀 JVM

  • 자바 가상 머신을 의미하며, 프로그램 실행을 담당합니다.
  • OS/HW의 환경에 맞춰 프로그램을 구동해줍니다.

💿 JRE

  • 사용자용으로 단순 프로그램 실행을 위해서 필요한 최소 집합입니다.
  • 컴파일된 Java 프로그램 실행을 위해서는 반드시 필요합니다.
  • JVM, 자바 클래스 라이브러리, 자바 명령어 및 기타 인프라를 포함하는 개념입니다.

☢ JDK

  • 개발자용으로 프로그래밍을 하기 위해 필요한 최소 집합입니다.
  • JRE의 상위 집합으로 JRE를 포함하고, Java 프로그램을 생성하고 컴파일 하는 것이 가능합니다.

cf) IDE(통합개발환경)

  • 코딩 등을 편하게 할 수 있도록 도와주는 코딩 문서 작업기
  • JDK를 설치하면 메모장으로 코딩한다면, IDE로 편하게 코딩하는 환경 제공

🏴‍☠️ Compile

  1. 개발자가 자바 소스코드(.java)를 작성합니다.
  2. 자바 컴파일러가 소스코드(.java)를 읽어 바이트 코드(.class)로 컴파일합니다.
  3. 바이트 코드(.class)를 JVM의 Class Loader로 전달합니다.
  4. Class Loader는 바이트 코드에 필요한 Class를 로딩 및 링크하여 이를 JVM의 메모리에 올립니다.
    • 로딩 : 클래스 파일을 JVM 메모리에 로드
  5. 실행 엔진은 JVM 메모리에 올라온 바이트 코드(.class)를 명령어 단위로 가져와서 실행합니다.
    • 실행 할때는 아래의 두가지 방법으로 바이트 코드를 기계어로 변환
      • 인터프리터
        • 바이트 코드를 하나씩 읽어서 해석하고 실행
        • 코드 하나하나 실행은 빠르나 전체적인 실행 속도는 느리다는 단점
      • JIT 컴파일러
        • 바이트 코드 전체를 기계어로 변환하고 실행
        • 전체적인 실행 속도가 빨라 인터프리터의 단점 보완
profile
Long🌈Now😁Happy💖

0개의 댓글