본문 바로가기

JAVA

자바가 컴파일 언어? 아니면 인터프리터?🤦‍♂️

파이썬을 공부하다가 백엔드 개발자가 되어야겠다고 결심하고 자바를 공부하기 시작했다. 앞으로 시리즈물로 작성하면서, 자바를 공부하면서 생겼던 의문을 풀어갈 예정이다✍✍

 

 

src가 무슨 폴더야?

 

자바는 컴파일 언어라는데, 컴파일 언어가 뭐야?

 

컴파일 언어는 컴파일러에 의해서 구현되는 언어를 의미한다. 컴파일러(compiler)란 컴파일러를 수행하는 프로그램인데, C 언어에서처럼 프로그램 소스 코드를 기계어로 번역하는 것처럼 하나의 언어를 다른 언어 또는 형태로 변환하고 대개의 경우에는 고수준 언어를 기계어로 번역하는 기능을 한다.

 

출처 : https://miro.medium.com/max/1400/0*PsW_0ue8zJIq2cyy

 

그렇다면 컴파일러가 왜 필요한거지?

 

초기에는 프로그램을 만들기 위해 컴퓨터에서 바로 돌아가는 기계어를 통해 프로그래밍을 했다고 한다. 하지만 이런 과정은 개발자에게 엄청난 시련을 주었을 것이다. 생산성을 비롯해 모든 면에서 비효율적이라고 판단했고 컴퓨터 공학이 발전함과 동시에 인간이 이해할 수 있는 언어인 고수준의 언어(파이썬 등)가 등장하게 된다.

 

이로 인해 번역기를 통해 다시 기계어로 번역하게 되는데, 이러한 편리성으로 인해 많은 프로그램들이 이를 기반으로 만들어지게 됐다. 여기서 번역기는 컴파일러를 의미한다.

 

하지만 실행은 하지 않는다는데??

 

우리가 작성하는 고수준의 언어들은 프로그램으로써 실행시키기 위해 작성되어진다. 즉, 컴파일러는 작성된 언어를 기계어로 번역할 뿐, 실행시키지는 않는다. 링커라는 프로그램을 통해 번역된 이후에 여러 결과물들을 합치는 등의 별도의 작업을 거쳐야하는데 최근에는 프로그램 하나에서 컴파일과 링킹을 모두 끝내는 경우가 있고 이를 한번에 컴파일이라고도 표현한다고 한다.

 

그렇다면, 파이썬은 인터프리터 언어, 자바는 컴파일 언어?

 

컴파일 언어가 코드를 모두 번역하고 실행된다면, 인터프리터 언어는 작성된 코드를 한줄 한줄 해석해서 계산하는 방법이다. 이러한 특성으로 컴파일 언어는 수정이 필요할 때마다 컴파일을 다시 해주어야하는데 코드가 긴, 무거운 프로그램일 경우에는 컴파일만 오랜 시간이 걸리기 때문에 큰 단점이지만, 인터프리터는 오류가 발생한 코드만 수정해서 실행시키면 되기 때문에 컴파일의 단점을 보완할 수 있다.

 

자바는 컴파일과 인터프리터를 같이쓴다.