JVM을 구체적으로 이해하기 전에 프로그래밍 언어와 프로그램 컴파일과 실행에 대해 알아보자. 1. 프로그래밍 언어 이진수(binary code)인 0과 1 컴퓨터의 CPU는 이진수밖에 이해하지 못한다. 기계어(machine language) 이진수 명령어들로 구성된 언어 어세블리어(assembly language) 사람이 직접 기계어 프로그램을 작성하는 것은 힘들기 때문에 기계어의 각 명령을 ADD, SUB, MOVE 등 가급적 표현하기 쉬운 상징적인 니모닉 기호(mnemonic symbol)로 일대일 대응시킨 어셈블리어(assembly language)가 만들어졌다. 고급 언어 어셈블리어 역시 사람이 다루기 힘들고, 다양한 프로그램이나 자료를 표현하기에는 한계가 있다. 고급 언어는 사람이 이해하기 쉽고..