자바가 WORA(write once run anywhere)의 특징을 가질 수 있는 것은 바이트 코드와 자바 가상 기계때문입니다.
바이트 코드(byte code)
바이트 코드는 자바 컴파일러가 자바 소스 프로그램을 컴파일한 기계어로서, 플랫폼에 대한 종속성 없이 자바 가상 기계에서 실행되는 바이너리 코드입니다.
바이트코드는 컴퓨터상의 CPU에 의해 직접 실행되지 않으며, 대신 자바 가상 기계가 인터프리터 방식으로 바이트 코드를 해석하여 해당 플랫폼에서 실행시킵니다.
바이트 코드는 자바가상기계에서 실행되는 기계어라고 생각하면 됩니다.
자바 개발 환경인 JDK(Java Development Kit)는 개발자가 바이트 코드를 직접 볼 수 있도록 컴파일된 자바 클래스 파일을 disassemble하는 도구를 제공합니다.
자바 가상 기계
자바 가상 기계는 서로 다른 플랫폼에서 동일한 자바 실행 환경을 제공합니다. 하지만 자바 가상 기계 자체는 각 플랫폼에 맞게 포팅되어야 하므로 플랫폼 종속적입니다.
자바 컴파일러는 자바 소스 프로그램을 바이트 코드로 컴파일하여 클래스 파일을 생성합니다.
자바가상기계는 클래스 파일에 들어있는 바이트 코드를 하나씩 실행합니다. 자바 가상 기계는 사용자가 작성한 자바 프로그램을 실행하는 도중, JDK라이브러리에 들어있는 다른 클래스 파일이나 사용자가 작성한 다른 클래스 파일이 필요하면, 그 때 필요한 클래스 파일을 로딩하고 실행합니다.
대부분의 자바 가상 기계는 실행 중에 JDK 라이브러리 로딩으로 인한 시간 지연을 줄이기 위해 자바 프로그램 실행 시작 전, 자바 가상 기계가 시작할 때 JDK 라이브러리를 미리 로딩하여 둡니다. 그래서 자바에서는 컴파일 코드를 라이브러리 파일과 연결시켜주는 단계인 링크 과정이 없습니다.
'프로그래밍 > JAVA' 카테고리의 다른 글
JAVA의 특징 (0) | 2022.02.17 |
---|---|
JDK?JRE? (1) | 2022.02.15 |
자바와 타 언어(c/c++)의 실행 환경 차이 (1) | 2022.02.14 |
절차지향언어? 객체지향언어? (2) | 2022.01.16 |
프로그래밍 언어란? (1) | 2022.01.16 |