IDE에 익숙해진 초보 프로그래머들에게는 컴파일과 빌드의 차이는 애매모호하다.
잡지를 만드는 과정을 예로 들어 이해해보자.
어느날 PanGyo는 마음에 드는 잡지를 발견했다. 다만 아쉬운 점은 그 잡지가 영어로된 잡지여서 친구들과 같이 읽을 수 없다는 점이었다.
그래서 PanGyo는 영어로된 잡지를 한글로 번역해 출판하기로 마음먹었다.
출판하는 과정을 하나씩 살펴보자.
잡지는 영어로된 여러 기사들로 이루어져 있고, 각 기사에는 잡지내 다른 기사를 참조하는 경우가 잦다.
첫번째로 할 일은 각 기사를 한글로 번역하는 일이다. 기사를 영어에서 한글로 번역하면 친구들과 같이 읽을 수 있다.
두번째로 할 일은 원래 기사와 번역된 기사를 연결짓는 일이다.
예를 들어 "영문기사 A"가 번역되어 "한글기사 가"가 된 상황을 생각해보자.
"영문기사 B"에서 "추가적인 내용은 '영문기사 A'를 참고하세요"라는 문장이 있다면 "영문기사 B"가 번역된 "한글기사 나"에서의 해당 문장은 "추가적인 내용은 '한글기사 가'를 참고하세요"가 되어야한다.
이처럼 기사 내용 자체를 번역하는 것 뿐만 아니라 번역된 기사가 어떤 이름의 기사가 되었는지 연결짓는 것도 중요하다.
세번째로 할 일은 번역된 기사들을 하나로 묶는 일이다. 기사의 순서를 정해 잡지 한 권으로 합본하고, 어디서부터 읽으면 좋을지 표시한다.
잡지를 만드는 과정은 프로그램을 만드는 일과 비슷하다.
첫번째로 했던 일은 기사를 한글로 번역하는 일이다.
소스코드를 기계가 읽을 수 있게끔 기계어로 번역한다. 이 과정을 컴파일이라고 한다.
두번째로 했던 일은 번역된 기사를 서로 연결짓는 과정이다.
한 파일에 있는 소스코드는 다른 파일에 있는 소스코드를 참조하는 경우가 많다. 소스코드 간 서로 참조할 수 있게끔 엮는 과정을 링킹이라고 한다.
보통 컴파일과 링킹을 하나로 묶어서 컴파일이라고 한다. 링킹은 링커가 담당하는데, 보통 컴파일러 내에 포함되어 있다.
세번째로 했던 일은 기사들을 잡지 한 권으로 묶는 일이다.
컴파일된 소스코드들과 여러 리소스(프로그램 내 설정파일 등)를 하나로 묶어 하나의 실행 파일로 만든다.
이 과정을 빌드라고 한다. 혹은 컴파일부터 빌드까지 전 과정을 빌드라고 통칭하기도 한다.
IDE에서 코딩하고 Run을 누르면 컴파일부터 빌드, 그리고 프로그램 실행까지 한번에 진행된다.
정말로 편리하지만 각 과정을 모르고 넘어가면 오류에 대처하기 어렵다.
'자바' 카테고리의 다른 글
JVM 스레드에 대한 고찰 및 스레드풀 튜닝 전략 (0) | 2022.09.02 |
---|---|
BufferedWriter를 Integer와 쓸 때 유의점 (0) | 2021.09.29 |
로깅을 어떻게 해야할까? (0) | 2021.07.15 |
AssertJ - isEqaulTo와 isSameAs의 차이 (0) | 2020.12.29 |