Java(1.1) 빌드, 배포

NtoZ·2023년 2월 17일
0

Java

목록 보기
2/23
post-thumbnail

🚩빌드(Build)


🏁 0. 빌드(Build)란?

  • 원시코드(사용자가 만든 소스코드) ➡️ 컴파일 ➡️ 링크 ➡️ 실행파일 실행
  • Run, excute:단순히 만들어진 실행파일을 위의 복잡한 절차를 거치지 않고 실행하는 것

🏁 1. 컴파일 : 사람의 언어를 컴퓨터의 언어로 변환

  • 컴파일(Compile)은 인간이 읽기 편하게 만든 코드를 기계가 읽을 수 있는 언어로 바꿔주는 것
	package _Practice;

    public class Compile {
        public static void main(String[] args) {
            System.out.println("Hello, Compile!");
    }
}
    1. 바로 ⬆️의 코드는 인간의 언어로 쓰여진 코드임.
    1. 컴퓨터는 0과 1로 이루어진 2진수로 통신한다.
    1. 인간의 언어 ➡️ 컴퓨터의 언어 로 바꾸어주는 변환 작업이 필요함.
    1. ex) JDK의 실행파일 javac는 프로그래머가 쓴 소스코드를 컴퓨터의 2진수로 바꾸어준다. (.java -> .class)
    1. 이클립스(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     	? ? ?    
   
              	           !

    1. 컴파일이 끝나면, 나눠져있는 Object파일이나 다른 파일들을 엮어주는 작업이 필요하다 (linking).
    1. 프로그래머가 직접 만든 소스코드들을 연결시키거나 제공되는 라이브러리(예: Scanner 등)들을 연결.
    1. ex) 우리는 일반적으로 프로그래밍을 하면서 모든 작업을 프로그래밍하지는 않는다. 예를 들어 키보드 입력에 대한 Scanner를 사용하지만 어떻게 키보드가 입력되고 그것을 읽는지에 대한 프로그래밍은 따로 하지 않는다.
    1. ex) 그 이유는 키보드 입력에 대한 이벤트나 작업에 대해 표준 라이브러리(Standard library)가 제공되기 때문이다.

🏁 3. 디버그 (debug) : 오류 검사

    1. 프로그래밍 과정에서 오타를 내서 오류가 발생하거나 실행과정에서 예상치 못한 (exception)이 발생하는 경우가 발생할 수 있음
    1. 이런 것들을 찾아서 오류들을 바로잡아주는 작업이 디버그(debug)

🏁 +. 빌드 툴(Build Tool)이란?

  • 빌드 도구(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)' 문법을 사용함.
    • Build.gradle에 스크립트를 작성함.
    • 대규모 프로젝트에서 복잡해지는 경향이 있는 XML 기반 스크립트에 비해 관리가 편하다는 장점이 있음.
    • 현재 안드로이드 프로젝트의 표준 빌드 시스템으로 채택되어 있기도 함.
    • 그 외 그래들 관련 내용 : 빌드 툴(Build Tool) - Gradle 특징과 활용 팁 : Ant, Maven, Gradle

🚩배포(Deploy)

  • 서버에 기능을 추가 하려면 개발자가 로컬 PC에서 개발을 하고 테스트까지 진행한 뒤에 문제가 없을 경우 사용자가 사용할 수 있도록 수정된 코드를 실서버에 반영해야 합니다.

  • 서버에 반영을 하는 것을 "배포"라고 하고 배포(Deploy) 하기 위한 과정을 "빌드"라고 합니다.

참고자료 :

profile
9에서 0으로, 백엔드 개발블로그

0개의 댓글