일반적인 경우, 컴파일러는 소스 코드가 작성된 소스 파일을 읽어 기계어로 변환한 후 오브젝트 파일에 저장합니다.
리눅스 환경에서 C 소스 코드를 컴파일했을 때 볼 수 있는, 확장자가 .c인 파일이 소스 파일, 확장자가 .o인 파일이 오브젝트 파일에 해당합니다.
그러나 Java의 경우에는 컴파일러가 소스 코드를 기계어로 바로 변환하지 않습니다. 컴퓨터를 위한 기계어가 아닌, 자바 가상 기계(JVM)를 위한 중간 코드인 바이트 코드를 생성합니다. 바이트 코드는 기계어와 일치하지는 않으나, 어떠한 기계어와도 쉽게 변환할 수 있습니다.
Java 소스 코드를 컴파일 했을 때 볼 수 있는, 확장자가 .java인 파일이 소스 파일, 확장자가 .class인 파일이 바이트 코드로 작성된 파일입니다.
자바 가상 기계(JVM)란 바이트 코드로 작성된 파일을 읽고 기계어로 변환해주는 가상의 기계(소프트웨어)입니다.
다양한 운영 체제에서 자바 가상 기계(JVM)을 지원하기 때문에 같은 코드를 작성하여도 다양한 운영 체제에 호환이 가능합니다.
중간 단계를 만들어 다양한 운영 체제에 호환은 잘 되지만, 중간 단계가 생긴 만큼 느립니다. 자바의 특징인 이식성과 느린 속도가 이런 이유에서 나오게 된 것입니다.
'프로그래밍 언어 정리 > Java' 카테고리의 다른 글
[Java] public static void main(String args[]) (0) | 2022.12.18 |
---|