C vs. Java

프로그래밍 업계(?)의 양대 산맥인 C언어와 Java 언어에 대한 간략한 차이를 설명하고자 합니다.

프로그래밍에 대한 깊은 이해나 학문적인 이해보다는 실무적인 차원에서 두 언어에 대한 차이를 설명하고자 합니다.

컴파일 (Compile)

C

컴파일은 사람이 알아들 수 있도록 (물론 코딩을 배운 사람이 알아들 수 있습니다) 작성한 프로그래밍 언어를 기계가 알아들 수 있도록 번역한다는 의미로 해석할 수 있습니다.

C언어의 경우 일반적으로 4단계를 거쳐서 텍스트 파일에 가까운 .c 에서 실행 가능한 .exe 실행파일이 생성된다고 합니다.

C언어 컴파일

출처: https://www.sitesbay.com/cprogramming/c-compile-link-program


4개의 과정을 그냥 하나의 과정인 컴파일로 보는 견해도 있습니다.
C언어 컴파일

출처: https://www.sitesbay.com/cprogramming/c-compile-link-program

중요한 점은 C언어의 경우 컴파일 과정을 거치면, 실행가능한 실행파일이 생긴다는 것입니다.

Java

자바는 컴파일 과정에서 .java 파일이 .class 파일로 변환됩니다.
.class 파일은 바이너리 형태의 파일이며, 단독으로는 실행할 수 없습니다.

java 컴파일

차이점

C언어는 운영체계마다 고유한 컴파일러가 있어서, 운영체계마다 다른 실행파일을 만들어서 배포합니다.

C 컴파일 2

Java는 운영체계마다 고유한 Virtual Machine이 있어서, 동일한 .class 파일을 각각 다른 운영체계에서 실행가능합니다.

Java 컴파일 2

따라서, 이와 같이 생각할 수도 있습니다.

java-vm