최근 수정 시각 : 2022-06-20 19:47:49

바이트코드

1. 개요2. 종류

1. 개요

바이트코드(Bytecode)는 고급 언어로 작성된 소스 코드를 가상머신이 이해할 수 있는 중간 코드로 컴파일한 것을 말한다. 가상머신은 이 바이트코드를 각각의 하드웨어 아키텍처에 맞는 기계어로 다시 컴파일한다. 어셈블리어에 가까운 형태를 띄고 있으며 어떨 때는 가상머신용 오브젝트 코드까지 바이트코드라고 부르기도 한다.

바이트코드는 가상머신이 있는 곳이라면 대체로 함께 존재한다고 보면 된다. 어쨌든 가상머신이 텍스트를 로드하지는 않으니 기계어와 같이 효율적으로 저장하고 불러올 수 있는 형식은 필요하기 때문.

바이트코드라는 명칭은 Java JVM에서 대표적으로 사용하는데, 다른 가상머신용 바이트코드까지 통틀어 바이트코드라고 부르는 경우도 있으므로 Java의 바이트코드를 의미하는 경우 혼동을 피하기 위해 'Java 바이트코드'라고 명시적으로 기술하는 경우가 많다.

더불어서 바이트코드는 인터프리터 방식으로 해석한다. 즉 바이트코드를 생성하는 것까지가 컴파일이고, 바이트코드 자체는 인터프리터 언어라는 것.

AOT 컴파일러는 이 바이트코드를 가상 머신을 통하지 않는 기계어로 번역해주는 역할을 한다.

바이트코드가 혼동될 수 있는 용어이기도 하고, 굳이 바이트 형식의 코드를 지칭할 필요가 없는 경우도 있고 해서 가상머신 환경마다 부르는 명칭이 다르거나, 아예 부르는 명칭이 없고 좀 더 상위 개념인 중간 언어로 어셈블리어 형식과 바이트코드 형식을 통틀어 언급하는 경우도 많다.

인터프리터에서 바이트코드를 잠시 생성하는 경우도 있다.

2. 종류


분류