Compile & Build

컴파일 및 빌드

팀의 업무 프로세스를 최대한 빠르게 학습하기 위해서 우선적으로 솔루션 개발의 전반적인 툴(Git, Framework, Jenkins 등)을 먼저 공부해야할 필요성을 느꼈다. 그 중 빌드 자동화 툴인 Jenkins가 생소하여 학습을 시작하려한다. 먼저 빌드 자동화 툴인 만큼 최소한의 키워드를 정리한 뒤 이후 포스팅을 통해 Jenkins를 활용한 여러 실습을 진행해보겠다.

컴파일(Compile)

컴파일이란 개발자가 작성한 ‘소스코드를 바이너리 파일로 변환하는 일련의 작업’으로써, 목적파일(컴퓨터가 알아들을 수 있는 바이트코드로 이루어진 파일)을 생성한다. 이러한 컴파일을 수행하는 프로그램을 ‘컴파일러’ 라고 한다. 자바에서는 JVM(자바 가상 머신)에서 실행 가능한 바이트 코드(.class 파일)이 생성된다. 그동안에는 이클립스에서 .java 파일 생성 및 main() 구현 후 run을 해주면 내부적인 구성은 몰라도 뭔가 콘솔에 hello world가 찍혔던 일련의 과정들이 실제로는 JVM이 .java -> .class 컴파일을 통해 해당 어플리케이션이 실행되었던 것이다 (.class 파일은 이클립스 workspace에서 찾아보자)

컴파일러가 컴파일을 통해 생성한 여러개의 바이트코드를 연결시켜주는 작업을 말한다. 이를테면 A Class에서 B Class의 멤버(변수 및 메소드)를 활용하는 메소드가 있다면 A.class 파일만으로는 결과를 도출할 수 없다. 이 때에 A와 B를 연결시키는 작업이 바로 링크이다. 즉, 상호 필요한 라이브러리 및 파일을 연결시켜주는 작업이라고 이해하면 된다.

빌드(build)

컴파일과 링크를 통해 실행 가능한 파일을 생성하는데 빌드는 이와같은 전반적인 과정을 포괄한 개념이다. 보다 세부적으로 나눌 수 있지만 우선적으로는 ‘개발자가 개발한 소스코드를 컴파일 및 링크와 같은 일련의 작업을 통해 실행 가능한 파일을 만들어주는 것’

빌드순서

  1. 소스코드를 실행 가능한 바이트 코드로 변환(컴파일 및 링크)
  2. 정상 실행 여부를 확인 (테스트)
  3. 해당 실행 파일을 war 파일로 압축(패키징)
  4. war 파일을 서버의 tomcat 폴더 안에 넣고 압축을 해제(배포)

위와 같은 일련의 작업을 빌드라고 할 수 있겠다. 빌드 자동화 도구인 젠킨스 학습에 앞서 최소한의 키워드를 살펴보았다. 다음 포스팅에서는 젠킨스를 활용하여 간단한 프로젝트의 빌드를 자동화 시키는 실습으로 업로드 하겠다.