Java 아키텍처

발행: (2026년 2월 4일 오후 01:33 GMT+9)
3 min read
원문: Dev.to

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        │
└───────────────────────┘
Back to Blog

관련 글

더 보기 »

Java 소개

!소개용 Java 커버 이미지https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s...

JDK

JDK란 무엇인가? JDK는 Java 애플리케이션을 개발하기 위해 사용되는 완전한 소프트웨어 패키지이다. 여기에는 Java 프로그램을 작성, 컴파일, 디버그 및 실행하는 도구가 포함되어 있다. When is J...

RUST 켜기

Java에서 Rust로 가는 나의 여정: 기술 스택 변경 안녕하세요, 제 이름은 Garik이고 오늘은 제가 기술 스택을 바꾸기로 결심한 이야기를 여러분과 공유하고 싶습니다. ...