'2009/09/01'에 해당되는 글 2건

  1. 2009.09.01 JVM이 뭐지? 인터프린터는? JIT는~ ??? by 응큼미소
  2. 2009.09.01 컴포넌트 시간에는 뭘 배울까 ~ ~ ~ ? by 응큼미소

 일단 C source code가 실행되는 과정이랑
 JAVA source code가 실행되는 과정을 한번 비교해 보죠.
 
먼저 C언어로 작성된 프로그램이 실행되는 걸 보면


C source code
       ▽
| Compiler | 
       ▽
오브젝트 code (기계어, 실행은 안된다.)
       ▽
  | Linker |     <== Library (Printf 와 같은 기본적으로 제공되는 함수가 들어있다.)
       ▽
Executable code 
  (EXE 파일)


이런 순서로 해서 C언어로 작성된 소스 코드가 실행되는데요

간단히 설명하자면 C source code가 컴파일러에 의해서

오브젝트 code로 번역됩니다. 이 오브젝트 코드는 기계어 인데 실행은 안되죠

그래서 Linker가 원래 존재하고 있는 함수 등을 갖고 있는 Library와 오브젝트 코드를

연합시켜서 실행파일을 만들게 되는거죠. 이 실행파일은 밑에 보이는 것처럼


     EXE파일
 --------------
        OS 
 --------------
    HardWare
 --------------


이렇게 컴퓨터 하드웨어 위에 운영체제가 메모리 위에 있고, 그 위에 실행시킨 프로그램이 올라가게 되는거죠.

뭐 이렇게 해서 번역된걸 native 코드라고 합니다.

자 그럼 JAVA언어가 실행되는 걸 보도록 하죠~!!


  JAVA src code 
           ▽
| JAVA Compiler |
           ▽
byte code  == JVM 기계어 (*.class)
           ▽
| Linker |  <=  Library
           ▽
Executable code
    (byte code)


여기까지 해서 차이점을 보도록 하죠.

자 JAVA 소스 코드가 맨 위에 있죠.

그거를 JAVA 컴파일러가 번역을 해서 byte code를 만들죠

이 byte code가 오브젝트 코드와 다른 점은 JVM이 번역하는 전용 기계어 라는 거죠

 여기서 JVM이 뭔지 먼저 살펴보고 가도록 하겠습니다.

JVM은 JAVA 코드가 시스템(플렛폼)에 관계없이 독립적으로 실행 가능하게 만드는 프로그램입니다.

그래서 어디에서 컴파일을 했든 JVM이 공통적으로 있다면 실행이 되도록 하죠

그리고 이 JVM은 HardWare 위의 운영체제 위에 메모리 공간에서 상주하게 됩니다.

일단은 이정도로 보고 다시 byte code로 돌아오면,

byte code는 Linker가 또 Library랑 연합해서 EXE 파일을 만들게 됩니다.

여기서 EXE파일도 JVM이 번역하는 기계어인 byte code죠.

그럼 이 EXE파일이 밑에 그림처럼 JVM위에 올라가게 됩니다. 

     EXE파일 
 --------------
       JVM
 --------------
        OS 
 --------------
    HardWare
 --------------

이렇게 EXE파일은 생성되었지만, 아직 이 상태로는 OS에서 실행될 수가 없습니다.

그래서 JVM이 bytecode를 각 OS에서 실행할 수 있게 인터프리터 라는 것을 합니다.

여기서 JIT compiler라는 것을 사용하죠

그럼 JIT compiler가 뭔지 알아보겠습니다.

위에서 JVM이 마지막으로 인터프리터라는 것을 하는 걸 보면,

결국은 JVM에 의해 native code로 번역이 됩니다. 그 말은 시간은 시간대로 걸린다는 건데...

그 시간을 단축하기 위해 필요할 때만 native code로 번역해 놓고 또 사용될땐 번역해논걸 다시 쓰는거죠

그때 번역해논 native code를 재사용 한다 해서 Just In Time이라는 JIT compiler가 나온 것입니다.

그럼 오늘은 이만 ~~
 
신고
Posted by 응큼미소

 JAVA bean UI 컴포넌트 제작, 그리고 
 
 EJB 컴포넌트 개발을 합니다~~ JBuilder를 사용해서 말이죠.
신고
Posted by 응큼미소


티스토리 툴바