IntelliJ의 Run 버튼의 의미 - Build(빌드)와 Compile(컴파일)

2023. 8. 20. 14:38JAVA

728x90

빌드와 컴파일 많이 들어서 익숙한 단어들이지만 정확히 어떤 뜻인지는 잘 알지 못 했다.

 

이번 기회를 통해서 두 단어의 차이에 대해서 알아보려고 한다!!

 

 

컴파일

 

컴파일의 정의는 개발자가 작성한 소스코드를 바이너리 코드로 변환해주는 것이다.

 

하지만, JAVA에서는 컴파일러에의해 소스파일(.java)가 목적파일(.class)로 변환될 때 가상머신(JVM)이 인식할 수 있는 바이트 코드로 변환된다!

 

 

💡 
바이너리 코드란? CPU가 이해할 수 있는 언어이다.(0과 1로 구성된 이진코드)
바이트 코드란? 가상머신이 이해할 수 있는 언어이다.(0과 1로 구성된 이진 코드)


링크

컴파일이 각 소스파일(.java)들을 목적파일(.class)로 변환해주는 것이라면, 링크는 이들을 연결해주는 것이다.


개발을 할 때 다른 소스파일에 있는 메서드를 호출하는 경험을 한번쯤은 해봤을 것이다.

 

각 소스파일들은 다른 소스파일들에게 의존하기때문에 서로를 연결해주는 작업이 필요한데 이 작업을 링크라고 부른다.



정리하자면, 여러개의 소스파일들을 서로 연결시켜줘서 컴파일된 결과물이 최종적으로 실행 가능한 파일들이 되게끔하는 것이다!

자바의 경우에는 JVM이 프로그램 실행 도중 필요한 클래스를 찾아서 클래스패스에 로드해주는 데 이것이 동적 링크의 예이다.

빌드

소스코드 파일(.java)을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물이다.

빌드의 단계 중에는 컴파일이 포함되어 있는 데, 빌드의 부분집합이 컴파일이라고 할 수 있다!

(빌드 == 컴파일 + 링크)



최종적으로 필자가 궁금해하던, IntelliJ에서 Run 버튼이 어떻게 어플리케이션을 실행시키는 지에대해서 알게 되었다.

Run 버튼은 소스코드와 리소스파일들이 컴파일되고 이를 링크하여 만들어진 실행파일을 실행하는 과정을 간편화 한 것이다!

 

 

728x90