🚩빌드(Build)
🏁 0. 빌드(Build)란?
- 원시코드(사용자가 만든 소스코드) ➡️ 컴파일 ➡️ 링크 ➡️ 실행파일 실행
- Run, excute:단순히 만들어진 실행파일을 위의 복잡한 절차를 거치지 않고 실행하는 것
🏁 1. 컴파일 : 사람의 언어를 컴퓨터의 언어로 변환
- 컴파일(Compile)은 인간이 읽기 편하게 만든 코드를 기계가 읽을 수 있는 언어로 바꿔주는 것
package _Practice;
public class Compile {
public static void main(String[] args) {
System.out.println("Hello, Compile!");
}
}
- 바로 ⬆️의 코드는 인간의 언어로 쓰여진 코드임.
- 컴퓨터는 0과 1로 이루어진 2진수로 통신한다.
- 인간의 언어 ➡️ 컴퓨터의 언어 로 바꾸어주는 변환 작업이 필요함.
- ex) JDK의 실행파일 javac는 프로그래머가 쓴 소스코드를 컴퓨터의 2진수로 바꾸어준다. (.java -> .class)
- 이클립스(eclipse)의 경우에는 자체 컴파일러가 존재한다. (.java소스코드를 만든 뒤 저장하면 bin폴더에 .class 파일이 저장된다.)
⬇️기계가 이해하는 이진파일(*.class)
龕봅 7 " _Practice/Compile java/lang/Object <init> ()V Code
LineNumberTable LocalVariableTable this L_Practice/Compile; main ([Ljava/lang/String;)V java/lang/System out Ljava/io/PrintStream; Hello, Compile!
java/io/PrintStream println (Ljava/lang/String;)V args [Ljava/lang/String;
SourceFile Compile.java ! / *? ?
7 ? ? ?
!
🏁 2. 링크 (link) : Object 파일들과 라이브러리 등을 연결
- 컴파일이 끝나면, 나눠져있는 Object파일이나 다른 파일들을 엮어주는 작업이 필요하다 (linking).
- 프로그래머가 직접 만든 소스코드들을 연결시키거나 제공되는 라이브러리(예: Scanner 등)들을 연결.
- ex) 우리는 일반적으로 프로그래밍을 하면서 모든 작업을 프로그래밍하지는 않는다. 예를 들어 키보드 입력에 대한 Scanner를 사용하지만 어떻게 키보드가 입력되고 그것을 읽는지에 대한 프로그래밍은 따로 하지 않는다.
- ex) 그 이유는 키보드 입력에 대한 이벤트나 작업에 대해 표준 라이브러리(Standard library)가 제공되기 때문이다.
🏁 3. 디버그 (debug) : 오류 검사
- 프로그래밍 과정에서 오타를 내서 오류가 발생하거나 실행과정에서 예상치 못한 (exception)이 발생하는 경우가 발생할 수 있음
- 이런 것들을 찾아서 오류들을 바로잡아주는 작업이 디버그(debug)
- 빌드 도구(Build Tool)이란 소프트웨어 개발에 있어서 소스코드를 실행 가능한 애플리케이션으로 만들어주는 도구를 말한다.
- 빌드 과정을 자동화하여 관리하는 기능을 하기 때문에 빌드 관리 도구(Build Management Tool) 또는 빌드 자동화 도구(Build Automation Tool)라고 불리기도 한다.
빌드 도구의 특징
- 개발자가 스크립트를 작성하여 다양한 작업을 수행할 수 있게 함.
- 예를 들어, 소스코드를 컴파일하거나 패키징할 수 있으며, 테스트를 자동으로 수행하거나 의존성 주입 및 배포작업을 할 수 있다.
- 또 빌드 도구 종류에 따라 스크립트 작성시 사용하는 문법이 다르다. 일반적으로 XML이나 특정 도메인 언어(ex. Groovy)를 사용한다.
빌드 도구의 차이점 (Ant, Maven, Gradle)
- 1) 앤트(Ant)
- 자바 프로젝트 빌드 도구로 가장 널리 사용되었던 앤트(Ant)
- 이클립스라는 IDE에 기본적으로 탑재되었음.
- XML 스크립트를 기반으로 하였다.
- 최근에 나온 빌드 도구들과 달리 자동으로 라이브러리를 업데이트하는 기능이 없기 때문에 현재는 주로 레거시 시스템에서만 사용됨
- 2) 메이븐(Maven)
- 메이븐(Maven)은 Ant 이후에 나온 자바 빌드 도구로 자동으로 라이브러리와 의존성(dependency)를 관리하는 기능이 있다.
- Ant와 마찬가지로 XML 스크립트를 기반으로 함.
- pom.xml 파일로 의존성을 관리함.
- Maven에서는 라이프 사이클(Life Cycle)개념이 도입되어 빌드 순서 등을 정의할 수 있음.
- 3) 그래들(Gradle)
- 그래들(Gradle)은 가장 최근에 나온 자바 빌드 도구로 '그루비(Groovy)' 문법을 사용함.
🚩배포(Deploy)
참고자료 :