Java 아키텍처와 동작 원리 소개
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
Java 개발자 및 초보 프로그래머
- 난이도: 중간 (기초 개념 설명 포함)*
핵심 요약
- Java는 JVM을 통해 플랫폼 독립성을 달성:
.java
소스 코드 → 컴파일 → 플랫폼 독립적인.class
바이트코드 → JVM에서 실행 - JVM 구조:
JDK → JRE → JVM → JIT
(Just-In-Time Compiler) 계층 구조 - JVM 실행 과정:
로딩 → 링킹 → 초기화 → 인터프리터/JIT 실행 → 메모리 할당 (Heap/Stack)
- 핵심 용어:
JDK
,JRE
,JVM
,JIT
섹션별 세부 요약
1. Java 아키텍처 개요
- Java의 플랫폼 독립성:
- .exe
파일은 플랫폼 종속적, .class
바이트코드는 플랫폼 독립적
- JVM
이 바이트코드를 기계어로 변환하여 실행
- JVM 정의:
- JVM
(Java Virtual Machine), JRE
(Java Runtime Environment), JDK
(Java Development Kit)의 관계 설명
2. Java 아키텍처 계층 구조
- JDK 구성 요소:
- 개발 도구 (javac
, jar
, javadoc
) 포함
- JRE
(JVM + 라이브러리 클래스) 포함
- JRE 구성 요소:
- 실행 환경 제공 (JVM
, Deployment Technologies
, Base Libraries
)
3. JVM 동작 원리 (클래스 로더 및 실행)
- 컴파일 시간:
- .java
→ 컴파일 → .class
파일 생성
- 런타임 단계:
- .class
→ Class Loader
→ Bytecode Verifier
→ Interpreter/JIT
→ 메모리 할당 (Heap: 객체, Stack: 변수)
4. JVM의 클래스 로더 작동 방식
- 로딩 (Loading):
- .class
파일 읽어 이진 데이터 생성 → 힙 메모리에 객체 생성
- 링킹 (Linking):
- 검증 (Verification) → 준비 (Preparation) → 해소 (Resolution)
- 초기화 (Initialization):
- 정적 변수 값 할당, 정적 블록 실행
- JIT 컴파일러:
- 반복적인 인터프리터 단계 최적화 → 기계어로 변환 → 성능 향상
5. Java 아키텍처 실행 흐름
- 소스 코드 실행 흐름:
- JDK
→ 바이트코드 생성 → JVM
→ 기계어로 변환 → JRE
에서 실행 → 화면에 결과 출력
결론
- 핵심 팁:
JIT
컴파일러 사용으로 성능 최적화,Heap
/Stack
메모리 관리 중요 - 실무 적용: Java 애플리케이션 개발 시
JVM
의 플랫폼 독립성과JIT
최적화 기능을 활용하여 크로스 플랫폼 호환성 확보