꼬꼬마 블로그

꼬꼬마의 기술 블로그

2020-03-23 15:51:37 작성된 글


항상 intellij를 사용하여 컴파일빌드의 차이점을 정확히 모르고 있었습니다.
그렇다면 컴파일빌드란 무엇인지 이번 글에서 알아보도록 하겠습니다.


컴파일

컴파일이란 사람이 이해하는 고급언어를 기계가 이해하는 바이너키코드로 변환하여 목적파일을 생성하는 과정을 말합니다.

자바는 hello.javajavac를 이용하여 컴파일 할 경우 hello.class 라는 클래스파일이 생성됩니다.


링크

프로젝트내의 여러가지 소스파일들을 연결해주는 작업입니다. A 소스파일에서 B의 소스파일을 참조해야 한다면 컴파일만으로는 B파일을 참조할 수 없기 때문입니다.

링크는 정적링크(static link)와 동적링크(dynamic link)가 있습니다.
정적링크는 컴파일된 소스파일을 연결해 실행가능한 파일을 만드는 것이고 동적링크는 프로그램 실행 도중 프로그램 외부에 존재하는 코드를 찾아 연결하는 작업입니다.

자바는 JVM이 프로그램 실행 도중 필요한 클래스를 클래스패스에 로드해줍니다. 이는 동적링크의 예입니다.

C언어는 링크단계(링킹과정)에서 .exe의 실행파일을 만드는 정적링크의 예입니다.


빌드

소프트웨어 빌드 - 위키백과

소스 코드 파일을 컴퓨터나 휴대폰에서 실행할 수 있는 독립(standalone) 소프트웨어 가공물로 변환하는 과정을 말하거나 그에 대한 결과물을 일컫는다. 소프트웨어 빌드에 있어 가장 중요한 단계들 가운데 하나는 소스 코드 파일이 실행 코드로 변환되는 컴파일 과정이다.

소스코드 파일을 실행가능한 소프트웨어 산출물로 만드는 과정을 의마합니다. 위 정의에서 알 수 있듯이 빌드의 과정중 컴파일이 포함되어있습니다.


Gradle

Gradle빌드 도구 중 하나입니다. 그렇다면 빌드 도구는무엇일까요?

빌드 도구

빌드도구는 프로그램을 단순히 빌드하여 실행 가능한 파일을 만드는 것만이 아닌 프로그램에 필요한 라이브러리를 자동으로 다운하고 설치하는 작업을 합니다. Gralde은 Groovy를 이용한 빌드 시스템입니다.

Groovy - 위키백과

그루비(Groovy)는 자바에 파이썬, 루비, 스몰토크등의 특징을 더한 동적 객체 지향 프로그래밍 언어이다.

빌드 도구에는 Gradle뿐만 아닌 Ant, Maven등과 같은도구도 있지만 제가 사용하고 있는 빌드도구에 대해서만 알아보았습니다.


마무리

평소에 Java를 사용하면서 빌드가 무엇이고 컴파일과의 차이점에 대해서 궁금해서 한번 알아보았습니다.


참고 문서

컴파일과 빌드 차이점])
빌드도구와 메이븐

'개발' 카테고리의 다른 글

Git-flow를 사용한 프로젝트 관리  (0) 2020.12.02
Docker(도커) + Node.js 배포  (2) 2020.08.11
웹과 인터넷, 차이점  (0) 2020.06.21
HTTP란?  (0) 2020.06.21
SSL, HTTPS란? 블로그에 적용해보자  (0) 2020.06.21