기존 언어의 플랫폼 종속성
C/C++ 언어로 작성된 프로그램이 컴파일되면 플랫폼(CPU와 운영체제)에 종속된 기계어 코드로 변환된다.
예를 들어, 같은 Intel CPU라도 리눅스와 윈도우에 따라 컴파일되는 기계어 코드가 다르다.
그 이유는 CPU마다 기계어가 다르고 운영체제마다 API 와 실행파일 형식이 다르기 때문이다.
어러한 특성을 플랫폼 종속성이라고 한다.
자바의 플랫폼 독립성, WORA
자바 언어는 플랫폼 독립적으로 설계되었기 때문에 한번 컴파일된 자바 코드는 플랫폼(CPU와 운영체제)에 상관없이 자바 가상 기계(JVM)만 있으면 어떤 플랫폼에서든 실행할 수 있다. 이를 WORA(Write Once Run Anywhere)이라고 한다.
자바 가상 기계와 바이트 코드
자바 컴파일러가 자바 코드를 컴파일하면 일종의 기계어인 바이트 코드가 생성된다.
바이트 코드는 JVM에 의해 실행되는 바이너리 코드이다.
! 바이트 코드는 왜 일종의 기계어 인가?
바이트 코드는 엄밀히 말하면 기계어가 아니지만 가상 머신이라는 "추상화된 CPU" 위에 실행되므로 기계어와 같은 역할을 수행하기 때문이다.
! 바이너리 파일이란?
바이너리 파일은 0과 1 2진수로 채워져 있는 파일을 말한다. 컴퓨터는 2진 파일을 읽는 것이 빠르기 때문에 컴퓨터가 읽기 위한 파일들은 대부분 바이너리로 되어 있다.
바이트 코드는 JVM에 의해 인터프리터 방식으로 한 명령씩 해석되어 실행된다.
자바 코드를 동작시키는 방법에는 인터프리터 방식외에도 JIT 컴파일 방식이 있다. 이 주제에 대해 따로 포스팅해보겠다.
참고 문헌
- 도서, 명품 자바 엔센셜
- 도서, 자바의 신
'JAVA' 카테고리의 다른 글
자바 짤막 지식 - 논리 연산, 비트 연산, 시프트 연산 (0) | 2024.11.26 |
---|---|
자바 짤막 지식 - 타입 변환 (0) | 2024.11.26 |
자바 짤막 지식 - 리터럴의 타입 (0) | 2024.11.26 |
자바 짤막 지식 - char 타입 크기 (0) | 2024.11.26 |
자바의 특징 (3) | 2024.11.26 |