ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바(java) 프로그램의 구동
    백엔드/자바 2020. 7. 26. 05:05

    자바 프로그램의 구동

     

    자바 프로그램을 구동하는 방법은 세부적으로 설명하면 복잡하지만 간단히 설명하면 다음과 같다

    1. 소스 코드 작성

    - 우리가 에디터를 통해서 코드를 작성하는 과정이다

     

    - 그리고 이 과정을 통해 자바 확장자 ( .java )를 가진 파일이 생성된다.

    2. 컴파일

    - 자바 컴파일러(javac)가 우리가 작성한 소스코드를 컴퓨터가 이해하기 쉽게 바꾸는 과정을 말한다.

     

    - 보통이 과정에서 소스코드는 어셈블리어로 되지만 자바에선 이를 자바 바이트 코드라는 것으로 바꾼다.

     

    - 자바 바이트 코드(Java Byte Code)는 자바 가상머신(JVM)이 이해할 수 있게 만들어진 언어를 말한다.

     

    - 그리고 이 과정을 통해 자바 확장자를 가진 파일은 클래스 확장자 ( .class )를 가진 파일로 변환된다.

    3. 클래스 로더

    - JRE의 일부이자 JVM의 일부인 클래스 로더는 클래스가 요청될 때 클래스를 메모리에 로딩해준다.

     

    - 우리가 작성한 소스코드를 변환한 클래스 파일을 요청에 따라 읽어들여 메모리로 가져오는 역할을 한다.

     

    - 이 과정에서 컴파일을 거쳐 만들어진 자바 바이트 코드는 JVM의 Runtime Data Area로 전달된다.

    4. JVM과 Runtimre Data Area 그리고 Execution Engine

    - 자바 바이트 코드가 Runtimre Data Area(런타임 데이터 영역)에 전달 배치된다.

     

    - 그 후 Execution Engine(실행 엔진)은 자바 바이트 코드를 실행 및 컴퓨터가 이해할 수 있게 번역한다.

    5. Execution Engine

    - Execution Engine은 자바 바이트 코드를 두 가지 방식으로 읽는다.

     

    - 인터프리터 / JIT(Just In Time) 컴파일이다.

     

    - 인터프리터는 실행때마다 소스코드를 한줄씩 기계어로 번역하고 결과를 실행한다.

     

    - 하지만 같은 코드도 그때그때 해석해서 실행하므로 자원이 낭비되고 실행 속도가 느려진다.

     

    - JIT 컴파일은 인터프리터가 실행되며 중복으로 겹치는 코드를 파악해 컴파일해서 재활용하는 것.

     

    - 즉 인터프리터가 실행하면 그 중 자주 쓰이는 걸 저장해두었다가 다시 꺼내오는 식이다.

     

    - 이 과정을 통해 우리가 생성한 소스코드가 자바 바이트 코드에서 컴퓨터가 이해하는 기계어로 바뀐다.

    최종적 요약

    1. 소스 코드 작성

     

    2. 컴파일러

     

    3. 자바 바이트 코드로 변환하여 클래스 파일에 저장

     

    4. 요청이 있을 경우 클래스 파일의 바이트 코드들을 클래스 로더가 JVM에 전달

     

    5. 코드들을 JVM의 Runtime Data Area에 배치됨

     

    6. 실행 엔진들이 코드들을 읽어 기계어로 변환하여 실행

    '백엔드 > 자바' 카테고리의 다른 글

    자바 가상 머신 (JVM)에 대해서  (0) 2020.07.27
    자바 개발 3요소 JDK / JRE / JVM  (0) 2020.07.26
    자바(java)의 정의와 특징  (0) 2020.07.26
    참조 자료형 - 배열(array)  (0) 2020.07.26
    참조자료형 - 스트링(String)  (0) 2020.07.25
Designed by Tistory.