[JAVA] 자바 컴파일

Sung Taek·2021년 6월 22일
0

Java

목록 보기
1/2
post-thumbnail

자바를 입문했을 때 제일 처음 배웠던 기억이 납니다.

자바 프로그램은 어떠한 환경에서도 동일하게 동작한다고 하는데,

어떻게 그게 가능할까? 또 다른 프로그램은 안되는 건가?

궁금증이 생겼습니다.


JVM의 이해

  • 자바 바이트코드를 실행할 수 있는 주체이다.

  • 인터프리터나 JIT 컴파일 방식으로 다른 컴퓨터 위에서 바이트코드를 실행할 수 있도록 구현되어 있다.

이를 온전히 이해하기 위해서 아래의 내용이 선행 학습되어야 합니다.

바이트 코드란?

  • 사람이 읽기 쉽도록 쓰인 소스 코드
    0과 1로 이루어진 기계어의 중간단계의 코드를 의미합니다.

  • 이렇게 만들어진 바이트 코드는 JVM에 의해 실행됩니다.

해석 : 우리가 작성한 소스코드의 확장자를 확인해보면 .java 인 것을 확인할 수 있고,

컴파일을 하게 되면 .class 라는 파일이 생성됨을 확인할 수 있습니다.

자바컴파일러(javac)에 의해 바이트코드(.class)가 생성이 되고,

이는 JVM에 의해 실행됩니다.

참고로, 자바컴파일러는 JDK에 포함되어 있습니다.

실제 바이트 코드의 위와 같은 모양을 하고 있습니다.

JVM 실행

위의 그림은 JVM 아키텍처입니다.

위에서 설명한 바이트코드가 JVM에서 실행된다고 했습니다.

JVM이 동작하게 되면 .class 파일은 Class Loader에 로딩이 되고,

Execution Enginge에서 동적으로 인터프리터나 JIT컴파일러에 의해

기계어로 변환하게 됩니다.

컴퓨터는 이 기계어(0과 1로 이루어진 언어)를 해석할 수 있게 되고

최종적으로 우리가 작성한 코드가 실행되는 것을 확인할 수 있습니다.

인터프리터

소스코드를 바로 실행하는 컴퓨터 프로그래밍 또는 환경입니다.

기계어로 번역하는 컴파일러와 대비가 됩니다.

특징으로,

  1. 소스 코드를 직접 실행합니다.
  2. 소스 코드를 효율적인 다른 중간 코드로 변환하고, 변환한 것을 바로 실행합니다.
  3. 인터프리터 시스템의 일부인 컴파일러가 만든, 미리 컴파일된 저장 코드의 실행을 호출합니다.

인터프리터는 작성된 코드를 명령어들을 한 번에 한 줄씩

읽어들여서 실행하는 프로그램입니다.


자바로 작성한 코드는 JVM이 설치된 어떤 플랫폼에서 동작한다는 말은,

바이트코드를 전달만 하면 JVM이 알아서 인터프리터나 JIT 컴파일 방식으로

기계어로 번역하는 동시에 실행을 하는 것을 의미합니다.

profile
Roma is not built in a day. 🥸

0개의 댓글

관련 채용 정보