2.1 바이트코드(Bytecode, portable code, p-code)란?

바이트코드(Bytecode, portable code, p-code)는 특정 하드웨어가 아닌 가상 컴퓨터에서 돌아가는 실행 프로그램을 위한 이진 표현법이다. 하드웨어가 아닌 소프트웨어에 의해 처리되기 때문에, 보통 기계어보다 더 추상적이다.

<aside> 💡 역사적으로 바이트코드는 대부분의 명령 집합이 0개 이상의 매개 변수를 갖는 1 바이트 크기의 명령 코드(opcode)였기 때문에 바이트코드라 불리게 되었다. 바이트코드는 특정 하드웨어에 대한 의존성을 줄이고, 인터프리팅도 쉬운 결과물을 생성하고자 하는 프로그래밍 언어에 의해, 출력 코드의 한 형태로 사용된다. 컴파일 되어 만들어진 바이트코드는 특정 하드웨어의 기계 코드를 만드는 컴파일러의 입력으로 사용되거나, 가상 컴퓨터에서 바로 실행된다.

</aside>


2.2 자바에서 바이트코드란?

자바 모토 중 하나의 "W.O.R.A.(Write once, run anywhere., 한 번 작성하면 어디서든 실행된다.)"를 구현하기 위해 JVM(Java Virtual Machine, 자바 가상 머신)은 사용자 언어인 자바와 기계어 사이의 중간 언어인 자바 바이트코드를 사용한다. 이 자바 바이트코드가 자바 코드를 배포하는 가장 작은 단위이다.

특징

  1. 특정한 하드웨어가 아니라 JVM에서 작동하도록 만든 이진 코드이다.
  2. 바이트코드는 중앙처리장치(CPU) 대신에 JVM에서 실행하도록 컴파일된다.
  3. 사람들이 읽기 쉽도록 만들어진 소스 코드와 달리 바이트코드는 덜 추상적이며, 더 간결하고, 컴퓨터 중심적으로 돌아간다.
  4. 바이트코드는 변수의 접근 범위와 같은 의미 분석 단계의 결과를 부호화한다.