본문 바로가기
~2024.10

"자바를 공부하기 전에 알아두면 좋을 것들" 영상 강의 노트

by HJfan 2024. 3. 2.

00. 서론

"자바를 공부하기 전에 알아두면 좋을 것들" 이라는 유튜브 영상 강의

1, 2편을 보며 정리한 내용을 블로그에 옮긴 게시물입니다.


01. 강의 노트

"컴파일과 빌드의 차이"

컴파일은 우리가 작성한 소스 코드(예를 들면, System.out.println("Hello World");)를
바이너리 코드(바이트 코드)로 번역하는 작업이다. 컴파일을 해주는 프로그램을 컴파일러라고 한다.

※ 바이너리 코드란 컴퓨터가 이해할 수 있는 0과 1. 즉, 이진수로 표현하는 코드이다.

 

빌드는 사용자가 작성한 소스 코드를 실행이 가능한 Artifact로 만드는 과정이다.

이 과정에 컴파일 과정도 포함하여, 의존성 관리, 자동화 테스트, 패키징 등의 추가적인

과정을 거쳐 완성된 소프트웨어 제품을 생성하는 것이다.

 

 

"JVM이란"

 

앞서 설명한 컴파일을 통해 생성된 바이너리 파일은 OS마다 해석하는 방법에 차이가 있다.

Windows에서 "Hello, World"를 출력하라는 소스 코드를 바이너리 코드로 번역한 파일을 리눅스에서

실행했을 경우에는 이해하지 못하는 것이다.

그렇기에 c언어 등을 사용하여 프로그램을 만들 때는 플랫폼마다 별도의 코드를 만들어야 한다.

 

하지만 자바로 작성한 코드는 모든 플랫폼에서 동일하게 사용할 수 있다.

"c언어 소스 코드 -> 컴파일 -> OS"

"자바 소스 코드 -> 컴파일 -> JVM -> OS"

(링킹 등의 과정은 설명을 간소화하기 위해 생략하였음)

그 이유는 위와 같은 방식을 사용하기 때문인데, 컴파일된 자바 코드를 OS에게 바로 넘기는 것이 아니라

JVM이라는 녀석이 중간자 역할을 하면서 컴파일된 자바 코드를 각 OS가 이해할 수 있도록 재해석하여

넘겨주기에 사용자는 하나의 코드만 작성해두면 모든 플랫폼에서 동작시킬 수 있는 것이다.

 

 

"Build tool"

 

빌드는 사용자가 작성한 소스 코드를 실행이 가능한 소프트웨어로 만드는 과정이라고 하였다.

하지만 사용자가 직접 이 과정을 실행한다면? 하나의 실행 파일로 만들어야 하는데, 협업으로 생성된 소스 파일이

엄청나게 많을 경우에는 과연 실수 없이 할 수 있을까?

 

당연히 힘들 것이다. 그렇기 때문에 빌드를 도와주는 도구가 바로 빌드 툴이고, 자바에서 사용하는 빌드 툴에는

다들 한 번씩은 들어봤을 "Ant, Maven, Gradle"이 있다.

Ant와 Maven은 요즘에는 더 이상 사용되지 않기에 XML을 사용하는 과거의 빌드 툴이다 정도로 알아두면 될 것이다.

Gradle은 과거의 빌드 툴들이 가지는 문제들을 개선하고, Groovy라는 언어를 사용하는 빌드 툴이다.

이런 빌드 툴이 소스 코드의 빌드 과정을 자동화해주고, 외부 소스 코드(외부 라이브러리) 자동 추가 및 관리를

해주기 때문에 사용자는 훨씬 쉽게 빌드를 할 수 있다.

 

자세한 내용은 링크의 유튜브 영상을 직접 수강하는 것을 추천한다.

20분 정도 길이의 영상으로 자바에 입문하는 사람들은 기초를 다지기에 아주 적합한 강의 영상이라 생각한다.