2011/09/25 01:54

Java 의 철학 - Write Once, Run Evrywhere

과연 이 철학이.....



- The Java Programming Language

객체지향... 이놈은 자바 언어 Software 기술중에 하나.
하지만 가장 큰 특징은 생산성의 극대화, 동적인면임!
Multi-Threding
구조화된 에러 핸들링
Garbage Collection
Dynamic Linking
Dynamic Extension


- The Java Class File Format

compact 한 형태
bytecode 로의 변경
platform 독립적
network byte order 사용

class 파일은 bytecode 를 binary 형태로 담아놓은 것.
bytecode 는 JVM 이 읽을 수 있는 언어.

JVM 은 Class 를 로딩한 후 여기서 Bytecode 를 읽어들여 실행이 가능하도록 Interpret 하는 과정을 거침. Class 가 Load 된 후 JIT Complier 나 Hotspot Compiler 와 같은 Execution Engine 을 거쳐 실행이 된다.

ByteCode 는 Source code 를 단순히 JVM 의 언어로 번역해 놓은 것이기 때문에 Source 파일과 비슷한 크기를 가지고 있다. C++, Delphi 와 같은 언어에 비해 아주 작은 크기. 이렇게 작은 크기를 유지할 수 있는 이유는 Class 파일에는 실제로 참조하는 라이브러리를 포함하고있지 않고, 단지 Symbolic Reference 만을 가지고 있기때문...

Symbolic Reference 는 참조하고자 하는 대상의 이름만으로 참조관계를 구성한 것을 의미. 참조하는 객체의 특정 메모리 번지로 참조관계를 구성한것이 아니고 참조하는 대상의 이름만을 지칭한 것.

Class 파일이 JVM 에 올라가게 되면 Symbolic Reference 는 그 이름에 맞는 객체의 주소를 찾아서 연결하는 작업을 수행함. 이를 Dynamic Linking 이라고 한다. Java 는 이 Dynamic Linking 때문에 Class 파일은 compact 한 형태를 유지할 수 있다.

Class File Format 은 Network Byte Order 를 사용한다. 서로 다른 계열의  CPU 끼리 데이터를 전송 받을 때의 문제점을 해결하기 위해 정해준 일족의 약속임. Big Indian 을 사용.



- The Java Application Programming Interface (Java API)

Runtime Library의 집합. 말 그대로 Java 실행 환경. 여기에는 Java Virtual machine 과 Java API, 그리고 Native Method 등이 포함되어있다.

Java API 는 OS 시스템과 Java 프로그램 사이를 이어주는 가교의 역할을 한다. Native Method 를 통해 OS 자원과 연계되어있고 다른 한 편으로는 Java 프로그램과 맞닥뜨리고 있다. Interface 의 역할을 하고있는 셈.


- The Java Virtual Machine (JVM) 

JVM 은 하나의 스펙.







 
Posted by 개발자 용이~