-
JVM프로그래밍 언어/JAVA 2020. 4. 26. 16:19
Java Virtual Machine
내용
Java의 철학 : Write Once, Run Everywhere
이러한 철학을 실현하기 위해 Java의 네 가지 상호 연관된 기술
- Java Programming Language
- Java Class File Format
- Java Application Programming Interface (Java API)
- Java Virtual Machine (JVM)
IDE → java source code 작성 (XX.java) → 'javac'를 이용한 Compile → XX.class , JRE 필요
Java Programming Language - java source code 작성 (XX.java)
Java Class File Format - XX.class, JVM
Java API - JRE, JVM
Java Programming Language
특성
- 객체지향!!
- 생산성의 극대화와 동적임
Java 기술들 (생산성의 극대화와 동적임을 보여주는...)
- 객체지향
- Multi-Threading
- 구조화된 핸들링
- Garbage Collection
- Dynamic Linking → 중요!!
- Dynamic Extension
Dynamic Linking
java class 파일을 실행가능한 형태로 변경이 아닌 JVM이 읽을 수 있는 형태로 번역
Symbolic Reference 가짐으로 Runtime에 실제 존재하는 물리 주소로 대체되며 Link 가능. Link가 필요할 때마다 동적으로 동작
해당 기술 덕분에 java class 파일은 작은 크기를 유지
이밖에
GC 등을 통해 Runtime Memory를 직접 핸들링하지 않음으로 개발 및 운영에 소요되는 시간과 노력 단축
객체 지향을 통핸 소스코드 재사용 증가
Array Bound Check 등과 같은 엄격한 Type Rule
Object Reference Check 등을 통한 프로그램 안전성의 제고
Java Class File Format
네가지 특성
-
- Compact한 형태
- Bytecode 로의 변경
- Platform 독립적
- Network Byte Order 사용
Java에서 compile이란 JVM이 읽을 수 있는 코드로 변환하는 작업 (Bytecode 로의 변경)
Bytecode는 소스코드와 거의 동일한 용량을 가지고 있음 (Compact한 형태)
어떠한 환경에 있든지 JVM이 bytecode를 읽을 수 있는 한, JVM이 어디에 설치되어있는가는 문제되지 않음 (Platform 독립적)
Byte Order는 메모리 주소 값을 할당하는 방식 의미, Class File Format은 Nework Byte Order를 사용하기 때문에 Big Endian 방식 사용 → RMI, EJB
Java Application Programming Interface (Java API)
Runtime Library의 집합
JRE - JVM, Java API, Native Method 등이 포함
Java API - OS 시스템과 Java 프로그램 사이를 이어주는 가교 역할을 함
Java Virtual Machine (JVM)
Java Runtime을 모두 담당
가장 중요
JVM은 Class Loader System을 통해 Class 파일들을 JVM으로 로딩
→ 로딩된 Class 파일들은 Excution Engine을 통해 해석
→ 해석된 프로그램은 Runtime Data Areas에 배치
→ 수행
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
JVM3 (0) 2020.05.02 JVM2 (0) 2020.04.26 NIO - Buffer (0) 2020.04.03 추상 클래스와 인터페이스 (0) 2020.03.29 객체, 클래스의 개념 (0) 2020.03.29