개발을 하면서 항상 알아서 run하고 서버에 올려서 build하고 이렇게 얘기는 많이 해봤지만 지금 이게 뭐에요 설명해보세요 하면 말이 나오지 않는다. 그리하여 다시 이론에 대해 공부하려 한다.
1. 컴파일(Compile)
컴파일이란 개발자가 작성한 소스코드를 바이너리 코드로 변환하는 과정을 말한다. (목적파일이 생성됨)
즉, 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업이다. 이러한 작업을 해주는 프로그램을 가르켜 컴파일러라 한다.
자바의 경우, 자바가상머신(JVM)에서 실행가능한 바이트코드 형태의 클래스 파일이 생성이 된다.
2. 링크(link)
프로젝트를 진행하다 보면 소스 파일이 여러개가 생성이 되고 A라는 소스파일에서 B라는 소스파일에 존재하는 함수를 찾질 못하기 때문에 호출할 수가 없다.
따라서 A와 B를 연결해주는 작업이 필요한데 이 작업을 링크라고 한다.
여러개로 분리된 소스파일들을 컴파일한 결과물들에서 최종 실행가능한 파일을 만들기 위해 필요한 부분을 찾아서 연결해주는 작업이다.
링크는 정적링크(static link)와 동적링크(dynamic link)가 있는데
정적링크 : 컴파일된 소스파일을 연결해서 실행가능한 파일을 만드는 것
동적링크 : 프로그램 실행 도중 프로그램 외부에 존재하는 코드를 찾아서 연결하는 작업을 말한다.
자바의 경우, JVM이 프로그램 실행 도중 필요한 클래스를 찾아서 클래스패스에 로드해주는데 이는 동적링크의 예이다.
3. 빌드(Build)
소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 일련의 과정을 말한다.
빌드의 단계 중 컴파일이 포함이 되어 있는데 컴파일은 빌드의 부분집합이라 할 수 있다.
빌드 과정을 도와주는 도구를 빌드 툴이라고 한다.
3-1. 빌드 툴(Tool)
일반적으로 빌드 툴이 제공해주는 기능으로는 다음과 같은 기능들이 있다.
전처리(preprocessing), 컴파일(Compile), 패키징(packaging), 테스팅(testing), 배포(distribution)
빌드 툴로는 Ant, Maven, Gradle 등이 있다.
'Study > 내가 정리하는 개념들' 카테고리의 다른 글
개발 프로젝트 포지션 정리 (0) | 2021.11.17 |
---|---|
[DB] 이중화 HA, OPS, RAC 구성 (0) | 2021.11.08 |
빌드 과정[Build Process] (0) | 2021.11.04 |
Maven VS Gradle (0) | 2021.11.04 |
카멜 케이스/ 케밥 케이스/ 파스칼 케이스/ 스네이크 케이스 란? (0) | 2021.07.27 |
댓글