Programming Languages/Java

[JAVA] 자바 컴파일 특징을 JDK 구성 요소를 통해 알아보자

Hannana. 2024. 7. 28. 15:30
728x90
반응형

0. 서론

 

 

[JAVA] 절차지향 언어와 가장 큰 차이점

대표적인 절차지향 언어인 C언어.자바 프로그램과 C언어의 가장 큰 차이점은 바로, 이다.환경에 종속적인 C언어와 달리, 자바는 wirte once - run erveywhere의 특징을 가져어떤 OS 환경에서도 실행될 수

hansjour.tistory.com

 

 

 

 

 

 

1. 자바 프로그램의 구성요소와 특징



JDK의 구성을 보자.

자바 프로그램을 구성하는 구성 요소

 

JDK > JRE > JVM 의 포함관계로 구성되어있다.

 

 

JDK (Java Development Kit)

자바 소스 코드를 컴파일하여 실행 가능한 프로그램을 생성하는 개발 도구 세트

-포함 항목
컴파일러 (javac), 디버거, 개발 도구 (java, javac, javadoc, jar)

JDK는 자바 개발자가 소스 코드를 작성하고, 이를 컴파일하여 실행 가능한 파일로 만드는 데 필요한
모든 도구를 포함한다.
JRE가 제공하는 것 외에 추가적으로 개발 도구들을 제공한다. 

 

JRE (Java Runtime Environment)

자바 프로그램을 실행하는 데 필요한 환경

-포함 항목
: JVM, 라이브러리, 컴파일된 클래스 파일, 인터프리터, JIT 컴파일러

JRE는 자바 프로그램을 실행하는 데 필요한 환경을 제공한다.
JDK가 디버깅하고 컴파일 한 .class파일을 기계어로 번역하는 중간 단계로, 프로그램이 원활하게 실행될 수 있게함

 

JVM (Java Virtual Machine) : 자바 가상 머신 (JVM)

자바 프로그램의 바이트 코드를 기계어로 변환하여 실행하는 엔진
이를 통해 자바 프로그램은 플랫폼에 독립적으로 실행될 수 있다.

 

 

 

 

2. JVM 이 하는 일

JVM은 자바 프로그램의 바이트 코드를 기계어로 변환하여 실제로 프로그램을 실행하는 엔진이다.

JVM은 JRE(Java Runtime Environment)의 일부로서,

JRE가 제공하는 모든 라이브러리와 클래스 파일을 활용하여 프로그램을 실행한다.

 

■ 작동 원리

바이트 코드 로드: 자바 컴파일러(javac)에 의해 생성된 바이트 코드는 .class 파일에 저장된다.

클래스 로더: JVM의 클래스 로더가 이 .class 파일을 메모리에 로드한다.

바이트 코드 검증: JVM은 로드된 바이트 코드가 유효한지 검증하여 보안성과 안정성을 확인한다.

실행 엔진: 검증된 바이트 코드는 JVM의 실행 엔진에 의해 실행된다. 이 과정에서 인터프리터와 JIT 컴파일러가 사용된다.

 

 

 

 

 

3. JVM - JRE와의 관계

-JRE는 JVM을 포함한 실행 환경으로, JVM이 프로그램을 실행하는 데 필요한 모든 라이브러리와 리소스를 제공한다.

-JVM은 JRE가 제공하는 클래스 파일과 라이브러리를 활용하여 자바 프로그램을 실행한다.

즉, JRE는 JVM이 프로그램을 실행할 수 있는 환경을 제공하며,

JVM은 JRE 내에서 바이트 코드를 실제로 실행하는 역할을 담당한다.

 

 

 

 

 

4. 자바 프로그램 구조로 인한 장점 

  • 플랫폼 독립성
    JVM은 다양한 운영 체제에서 동일한 바이트 코드를 실행할 수 있다. 이는 자바 프로그램이 플랫폼에 독립적으로 동작할 수 있도록 한다. 실제로 자바 프로그램은 운영 체제에 관계없이 동일한 바이트 코드(.class 파일)를 사용하며, JVM이 해당 바이트 코드를 각 운영 체제에 맞게 실행한다.
    => 이식성 증가 ( 한 번 작성하면 어디서나 실행될 수 있음)

  • 메모리 관리
    JVM은 가비지 컬렉션을 통해 자동으로 메모리를 관리한다. 이를 통해 메모리 누수를 방지하고 효율적인 메모리 사용을 가능하게 한다.
    => 생산성 증가 (개발자가 메모리 관리에 신경 쓰지 않아도 되도록 해주어, 개발 생산성을 높인다.)

  • 보안성
    JVM은 자바 프로그램의 실행 시 보안 검사를 수행하여 안전한 실행 환경을 제공한다.
    => 특히 네트워크를 통한 애플리케이션 배포 시 중요한 장점이 된다. 번외로 자바는 디지털 서명, 권한 부여, 보안 관리자 등 다양한 보안 기능을 제공한다.

 

 

 


 

자바가 제공하는 기능과 별도로 이러한 체계적인 컴파일과 프로그램 실행 구조가 있기에

자바의 보안성과 편리함이 나오는 것이 아닐까 싶다.

 

 

 

참고하면 좋을 글 ↓

 

[JAVA] JIT 컴파일러가 필요한 이유, 자바 인터프리터와 차이점

바이트코드는 JVM의 실행 엔진에 의해 실행된다.공부를 하다보니, 인터프리터와 JIT컴파일러는 둘 다 JRE안에 속해있고바이트 코드를 기계어로 해석하는 점이 비슷해보였다.그럼 둘의 차이가 무

hansjour.tistory.com

 

 

 

 

 

 

 

반응형