바이트코드는 자바 컴파일러가 생성하는 코드로 특정 하드웨어에서 직접 실행할 수 있는 기계어가 아니라 자바가상머신에 의해 해석될 수 있는 일종의 중간 코드 개념이다.
컴파일을 거쳐 다음과 같은 소스는 아래와 같은 바이트 코드로 변환 된다.
for (int i = 2; i < 1000; i++) {
...
}
0: iconst_2
1: istore_1
2: iload_1
3: sipush 1000
...
자바의 가장큰 특징은 가상머신이라는 개념이다. 가상머신은 말 그대로 물리적인 기계장치가 아닌 가상의 기계장치 즉 소프트웨어로 구현된 기계장치를 말하는 것으로 자바 이전에 시작된 OAK라는 프로젝트에서 다양한 가전제품에서 구동될 수 있는 소프트웨어 개발을 위해 고안된 아이디어 이다.
가상머신이라는 개념을 자바가 만든것은 아니지만 당시에 실제 성공한 프로젝트로는 자바가 대표적이다. 이러한 가상머신의 특징으로 인해 특정 하드웨어나 운영체제에 영향을 받지 않고 동일한 프로그램의 개발이 가능해진 것이다.
JVM 특징