Java 아키텍처
Source: Dev.to
JDK
JDK(Java Development Kit)는 Java 애플리케이션을 개발하기 위한 도구와 라이브러리를 제공하며, JRE와 JVM과 함께 작동합니다. JRE(Java Runtime Environment)는 Java 프로그램을 실행하는 데 필요한 라이브러리와 JVM을 제공합니다. JVM(Java Virtual Machine)은 시스템 상에서 컴파일된 Java 바이트코드를 실행합니다.
Java Source Code
(.java)
│
▼
┌────────────────────────┐
│ JDK │
│ │
│ Development Tools │
│ ┌──────────────────┐ │
│ │ javac → Compile │ │
│ │ java → Run │ │
│ │ javadoc → Docs │ │
│ │ jar → Package │ │
│ └─────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌────────┐ │
│ │ JRE │ │
│ │ │ │
│ │ JVM │ │
│ │ + Libs │ │
│ └────────┘ │
└────────────────────────┘
│
▼
OS / Hardware
JRE
Java Runtime Environment(JRE)는 Java 프로그램이 정상적으로 실행되기 위해 필요한 소프트웨어 패키지입니다. JRE는 Java 바이트코드를 해석과 Just‑In‑Time(JIT) 컴파일을 결합하여 실행하는 Java Virtual Machine(JVM)으로 구성됩니다. JRE는 주로 Java 애플리케이션을 실행하는 역할을 담당하고, 배포 도구는 주로 Java Development Kit(JDK)에서 제공됩니다.
.class file (Bytecode)
│
▼
┌─────────────────────────┐
│ JRE │
│ (Java Runtime Env.) │
│ │
│ ┌───────────────┐ │
│ │ JVM │ │
│ │───────────────│ │
│ │ Execution │ │
│ │ Engine │ │
│ │ ┌─────────┐ │ │
│ │ │Interpreter│ │ │
│ │ └─────────┘ │ │
│ │ ┌─────────┐ │ │
│ │ │ JIT │ │ │
│ │ │ Compiler │ │ │
│ │ └─────────┘ │ │
│ └───────────────┘ │
│ ┌───────────────┐ │
│ │ Java Libraries│ │
│ │ (API Classes) │ │
│ └───────────────┘ │
└─────────────────────────┘
│
▼
Output
JVM
JVM은 Java 바이트코드를 위한 실행 환경을 제공하는 가상 머신입니다. JVM은 Java 코드와 하드웨어 및 운영 체제 사이의 중간 계층 역할을 하여, Java 프로그램이 다양한 플랫폼과 시스템에서 효율적이고 안정적으로 실행될 수 있도록 합니다.
Bytecode
(.class)
│
▼
┌───────────────────────┐
│ JVM │
│ │
│ ┌─────────────────┐ │
│ │ Class Loader │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Runtime Data │ │
│ │ Areas │ │
│ │ (Heap, Stack) │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ Execution │ │
│ │ Engine │ │
│ │ (Interpreter + │ │
│ │ JIT + GC) │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ Output │
└───────────────────────┘