- 컴파일(Compile)
개발자가 작성한 소스코드를 바이너리 코드로 변환하는 과정.
컴파일러는 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업을 해준다.
자바에서는 컴파일을 할 경우, JVM에서 실행 가능한 바이트코드 형태의 클래스 파일이 생성된다.
(.java라는 자바 클래스 파일을 바탕으로 .class라는 클래스 파일이 생성)
- 빌드(Build)
빌드란 소스코드 파일들을 컴퓨터에서 실행할 수 있는 소프트웨어로 변환하는 일련의 과정
컴파일, 테스팅, 배포 등 소스코드 파일을 실행 가능한 소프트웨어 산출물로 만드는 일련의 과정을 말한다.
빌드 과정을 도와주는 도구를 빌드 툴이라 한다.
- 빌드 도구(Build Tool)
빌드 도구는 위의 빌드 과정을 자동으로 수행해주는 도구를 의미
일반적으로 빌드 툴이 제공해주는 기능
→ 전처리(preprocessing), 컴파일(Compile), 패키징(packaging), 테스팅(testing), 배포(distribution)
대표적으로 Ant, Maven, Gradle 등이 있다.
Ant는 빌드 도구로만 이용 되었는데, 빌드와 자동 라이브러리 관리 기능이 추가된 Maven이 등장.
Maven 이후에 Gradle이 나왔는데, 요즘은 Gradle로 넘어가는 추세라 한다.
또한 Gradle은 안드로이드 앱의 공식 빌드 시스템이다.
(+ Gradle 공식 문서에 따르면 Gradle이 Maven보다 최대 100배 빠르다고 한다.)
※ Maven vs Gradle 차이
https://hyojun123.github.io/2019/04/18/gradleAndMaven/
※ 링크(Link)
- 프로젝트 내 여러 개의 소스파일이 생성되고 A라는 소스파일에서 B라는 소스파일에 존재하는 함수(메서드)를 호출하는 경우가 존재하는데 이때 A와 B 소스파일 각각을 컴파일만 하면 A가 B에 존재하는 함수를 찾질 못하기 때문에 호출할 수가 없다.
- 따라서 A와 B를 연결해주는 작업을 링크라고 합니다. 즉, 여러 개로 분리된 소스파일들을 컴파일한 결과물에서 최종 실행 가능한 파일을 만들기 위해 필요한 부분을 찾아서 연결해주는 작업을 링크라고 한다.
- 링크는 정적 링크(static link)와 동적 링크(dynamic link)가 있는데, 정적 링크는 컴파일된 소스파일을 연결해서 실행 가능한 파일을 만드는 것이고 동적 링크란 프로그램 실행 도중 프로그램 외부에 존재하는 코드를 찾아서 연결하는 작업이다.
- 동적 링크의 쉬운 예로는 자바에서 JVM이 프로그램 실행 도중 필요한 클래스를 찾아서 클래스 패스에 로드해주는 것.
추가적으로 참고할만한 글.
https://st-lab.tistory.com/176
'프로그래밍' 카테고리의 다른 글
[robots.txt] 검색 엔진 봇, robots.txt 적용 하는 법 및 가이드 (0) | 2022.11.22 |
---|---|
[역량 향상 로드맵] 개발자 역량 향상 로드맵(Software Engineer Roadmap) (0) | 2021.09.30 |
[프로그래밍] 해시맵, 해시태그, 해시함수 등에서 말하는 해시란 무엇일까? (0) | 2021.08.10 |
[프로그래밍] 모달과 모달리스는 무엇이고 어떤 차이가 있을까? (Modal & Modeless) (0) | 2021.07.30 |