Computing

Bytecode & Binary code

BeomJun.Kwon 2022. 8. 9. 00:23

 

Bytecode  &  Binary code ( 이진 코드 ) 차이점

모든 소프트웨어 개발 플랫폼이 프로세서에서 직접 실행되는 실행 가능한 기계어 코드를 생성하는 것은 아니다. 실행 가능한 기계어 코드를 생성하지 않는 플랫폼은 프로그램 또는 바이트 코드의 일종의 중간 표현을 생성한다. 그런 다음 이 바이트코드는 로컬 프로세서에서 프로그램을 실행하는 사용자 컴퓨터의 특수 프로그램에 의해 읽혀진다. 이 프로그램을 가상 머신이라고 한다. 바이너리 코드는 바이트 코드와 완전히 다르며 기계가 직접 이해할 수 있다. 그러나 바이트 코드와 바이너리 코드의 차이는 지난 몇 년 동안 약간 흐려졌다.

 

 

 

Bytecode ( 바이트코드 ) 란?

바이트코드는 중앙 처리 장치(CPU) 대신 가상 머신(VM)에서 실행되도록 컴파일된 이진 코드와 소스 코드 사이의 중간 코드이다. 이것은 본질적으로 하드웨어 프로세서의 어셈블리 언어(예: IA-32 어셈블리 언어)와 같은 저수준 코드이다. 가상 머신에 대한 흥미로운 점은 가상 머신이 거의 항상 고유한 바이트코드 형식을 가지고 있다는 것이다. 차이점은 이러한 바이너리 코드가 실행되는 방식에 있다. 

바이트코드는 소프트웨어 인터프리터에 의한 효율적인 실행을 위해 설계된 고도로 최적화된 명령어 세트이다. 실제 하드웨어 CPU는 이러한 명령을 수행하지 않는다. 바이트코드는 일반적으로 단일 파일 패키지로 배포되며, 소스 코드로 디컴파일할 개별 바이트코드 파일을 얻기 위해 압축을 풀어야 할 수 있다. 바이트 코드는 압축 숫자 코드, 상수, 16진수 및 숫자 주소이다.

 

 

 

Binary code ( 바이너리코드 ) 란?

이진 코드는 컴퓨터의 문자, 숫자 또는 기타 문자를 나타낸다. 기본적으로 대부분의 컴퓨터와 컴퓨터 장치가 정보를 보내고 받고 저장하는 데 사용하는 코딩 시스템이다. 이진법은 단순히 0과 1의 두 값만 사용하는 번호 매기기 체계를 나타낸다. 컴퓨터 프로세서 명령 또는 이 두 값만 사용하는 기타 데이터를 나타낸다. 연속적인 0과 1의 문자열로 구성된 이진 숫자 시스템으로 완전히 표현되는 가장 단순한 형태의 데이터이다.

기계 코드는 이진수 집합을 사용하여 명령어를 생성한다. 이진 코드는 오늘날 대부분의 데이터 리소스와 자산을 처리하는 데 사용되는 거의 모든 복잡한 소프트웨어 및 하드웨어 시스템을 통해 흐르는 가장 작은 양의 데이터를 나타내는 데도 사용된다. 사실, 바이너리 코드와 데이터의 본질은 정보 기술의 기본 세계에서 중요한 역할을 한다. 대부분의 최신 컴퓨터는 명령과 데이터에 이진 인코딩을 사용한다.

 

 

 

Bytecode  &  Binary code 차이점

  • 각 명령어가 하드웨어에 의해 디코딩되고 실행되는 기존의 바이너리 프로그램과 달리 가상 머신은 프로그램 바이너리의 디코딩을 자체적으로 수행합니다.
  • 바이너리 코드는 이름에서 알 수 있듯이 바이너리 형식(0과 1)으로 CPU 대신 가상 머신에서 실행되도록 컴파일된 중간 수준 코드로 간주되는 바이트 코드와 완전히 다릅니다.
  • 소스 코드에서 소프트웨어 인터프리터용으로 설계된 저수준 코드로 컴파일되었습니다
  • 바이트 코드는 압축 숫자 코드, 상수, 16진수 및 숫자 주소이다. 중앙 처리 장치(CPU) 대신 가상 머신(VM)에서 실행되도록 컴파일된 이진 코드와 소스 코드 사이의 중간 코드이다. 이진 코드는 연속적인 0과 1의 문자열로 구성된 이진 숫자 시스템으로 전체적으로 표현되는 가장 단순한 형태의 데이터이다. ( 바이너리 코드는 저수준 코드로 간주 )
  • 바이트코드는 가상 머신에서 실행되도록 컴파일되어 플랫폼에 구애받지 않고 가상 머신이 있는 시스템을 실행할 수 있기 때문에 플랫폼에 독립적이다. 이에 반해 바이너리 코드는 한 플랫폼의 객체 코드를 같은 OS에서 실행할 수 없기 때문에 플랫폼 의존적이다. 다른 가상 머신은 다른 OS용으로 설계되었으며 바이트코드는 다른 OS에서 실행할 수 있다. 바이트코드는 인터프리터를 사용할 수 있는 경우에만 실행된다.

 

 

 

JAVA 에서는?

  • Java 소스 코드에서 컴파일되고 JVM(Java Virtual Machine)에서 실행할 수 있는 Java 바이트 코드이다.
  • 바이트코드는 자바 가상 머신(JVM)과 같은 가상 머신(VM)을 위한 인공 기계 코드인 반면, 객체 코드는 컴파일러나 어셈블러에 의해 생성된 코드이다.
  • 자바 바이트코드는 자바 가상 머신(JVM)을 위한 명령어 세트이다. 소스 코드와 가상 머신에서 실행되는 기계어 코드 사이의 중간 수준 코드이다. 반면에 기계 코드는 컴퓨터가 직접 이해할 수 있는 낮은 수준의 코드이다.

 

 

 

요약

바이트코드는 소프트웨어 인터프리터의 효율적인 실행을 위해 설계된 고도로 최적화된 명령어 세트이다. 실제 하드웨어 CPU는 이러한 명령을 수행하지 않는다. 이진 코드는 컴퓨터 프로세서 명령 또는 이 두 값만 사용하는 기타 데이터를 나타낸다. 기계 코드는 이진수 집합을 사용하여 명령어를 생성한다. 기계어 코드는 컴퓨터에 내장된 명령 세트인 CPU 명령 세트의 명령으로 구성된다. 기계어로 구성된 컴파일된 프로그램을 바이너리라고 한다.

 

 

 

 

 

 

 

 

[참조] http://www.differencebetween.net/technology/difference-between-bytecode-and-binary-code/

 

 

 

 

 

'Computing' 카테고리의 다른 글

ChatGPT 사용법 & 크롬 확장 프로그램  (1) 2023.03.19
프레임워크(Framework) 와 라이브러리(Library)의 차이  (0) 2022.07.20
B-Tree  (0) 2022.07.08
Binary-Tree  (0) 2022.07.08
Process / Thread / Registor / Memory  (0) 2022.03.29