본문 바로가기
JAVA

1. 자바 컴파일 과정

by seongju.lee 2022. 11. 23.

예를 들어, C/C++로 작성된 프로그램의 경우 컴파일 환경과 실행 환경이 맞지 않은 경우에는 실행되지 않는 문제가 있었다.

만약 Linux환경에서 컴파일을 해서 나온 실행파일을 윈도우에서 실행 시키면 돌아가지 않는 것이다.

 - os마다 다른 system call, libraries가 존재하기 때문이다.
 - cpu제조사마다 각각의 ISA(Instruction Set Architecture)가 존재하기 때문이다.

 

위와 같은 문제를 해결하기 위해 자바는 OS에 독립적인 특징을 가지게 된다.

바로 JVM(Java Virtual Machine)덕분에 가능하게 되는데, 자바의 컴파일 과정은 아래와 같다.

 

위 그림을 설명하자면,

  1. 우리가 작성한 소스코드(.java)는 컴파일 시, java compiler에 의해 자바 바이트 코드(.class)로 변환된다.
  2. 변환된 바이트코드는 런타임 시, JVM내에 class loader라는 곳에 전달되면서 기계어로 전환되고 실행한다.
  • 이런 식으로  java가 java compiler에 의해 자바 바이트 코드로 변환되고 JVM내에서 기계어로 변환되기 때문에,
    os에 맞는 JVM만 설치가 되어있다면 실행환경에 상관없이 어느 환경에서나 자바 바이트 코드가 JVM위에서 동작할 수 있게 되는 것이다.
    (* JVM은 타겟 플랫폼에 의존하는 것은 어쩔 수 없지만.)

 

그렇다면 JVM이 어떤 구조로 되어 있기에 자바 바이트 코드를 실행까지 해주는 지에 대해 다음 글에서 정리할 예정이다.

'JAVA' 카테고리의 다른 글

4. Collections.sort()와 Arrays.sort()  (0) 2023.01.17
3. 예외와 예외처리  (0) 2022.12.15
22. 인터페이스  (0) 2022.11.14
21. 추상 클래스, 추상 메서드  (0) 2022.11.11
20. 다형성의 장점  (0) 2022.11.10