본문 바로가기

JAVA/개념

바이너리 코드 ? 바이트 코드? 무엇인가!

728x90
반응형

 

이너리 코드(이진코드)란?

컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드를 의미합니다.

 

바이트 코드란?

- CPU가 이해할 수 있는 언어가 바이너리 코드라면 바이트 코드는 VM(Virtual Machine, 가상머신)이 이해할 수 있는 언어입니다. 

- CPU가 아닌 가상 머신에서 이해할 수 있는 코드를 위한 이진 표현볍입니다. 즉, 가상 머신이 이해 할 수 있는 0과 1로 구성된 이진 코드를 의미합니다.

- 어떤 플랫폼에도 종속되지 않고 실행될 수 있는 가산 머신용 기계어 코드입니다.

- 고급언어로 작성된 소스코드를 가상 머신이 이해할 수 있는 중간 코드로 컴파일한 것을 말합니다.

Ex) 자바 소스파일(고급언어) -> 자바 컴파일러 -> 목적파일(JVM이 이해할 수 있는 바이트 코드로 이루어져있습니다.)

- 바이트 코드는 다시 실시간 번역기 또는 저스트 인 타임(Just-In-Time, JIT) 컴파일러에 의해 바이너리 코드로 변환됩니다.

- CPU가 텍스트를 이해하지 못하듯이 가상 머신 또한 텍스트를 이해하지 못합니다.

- JAVA의 가상 머신은 JVM이라고 하며 JVM을 위한 바이트 코드를 자바 바이트 코드라고 합니다.

 

기계어란?

- 0과 1로 이루어진 바이너리 코드입니다.

- 기계어가 이진코드로 이루어졌을 뿐이지 모든 이진코드가 기계어인 것은 아닙니다. 즉, 바이너리 코드 != 기계어

- 기계어는 특정한 언어가 아닙니다. ( 다진 CPU 제조사에서 CPU를 만들 때 해당 CPU에서 사용하는 명령어 집합을 공개하는데, 이것을 '기계어'라고 부를 뿐입니다. 때문에 CPU가 변겨오디면 기계어가 달라집니다. 같은 동작을 하는 명령어지만 완전히 다른 0과 1의 나열이 될 수 있다는 말입니다.

- 아주 기본적인 연산자들은 서로 호환되는 편입니다.

- 같은 회사의 CPU라도 버전 별로 다른 명령을 포함할 수 있으며 다른 회사라도 같은 명령어 집합을 공유할 수 도 있습니다.

 


자바 컴파일러(Java compiler)

자바 컴파일러는 자바를 가지고 작성한 자바 소스 코드를 자바 가상 머신이 이해할 수 있는 자바 바이트 코드로 변환합니다.

자바 컴파일러는 자바를 설치하면 javac.exe라는 실행 파일 형태로 설치됩니다.


자바 바이트 코드(Java bytecode)

자바 바이트 코드(Java bytecode)란 자바 가상 머신이 이해할 수 있는 언어로 변환된 자바 소스 코드를 의미합니다.

자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불리고 있습니다.

이러한 자바 바이트 코드의 확장자는 .class입니다.

자바 바이트 코드는 자바 가상 머신만 설치되어 있으면, 어떤 운영체제에서라도 실행될 수 있습니다.


참조

https://usefultoknow.tistory.com/entry/%EB%B0%94%EC%9D%B4%EB%84%88%EB%A6%AC%EC%99%80-%EB%B0%94%EC%9D%B4%ED%8A%B8-%EC%BD%94%EB%93%9C%EB%9E%80-%EA%B8%B0%EA%B3%84%EC%96%B4%EB%9E%80

http://www.tcpschool.com/java/java_intro_programming

728x90
반응형