섹션 1. 소개와 준비

김민지·2025년 3월 18일

서버 기초 강의

목록 보기
1/12

자바와 C언어의 차이점으로 알아보는 JVM의 개념

  • 두 언어는 크게 컴파일 방식에서 차이를 가진다.
    우선, 인터프리터 언어(python, javascript..)를 제외한 모든 컴퓨터 언어는 개발자가 작성하는 코드(source code)에서 컴퓨터가 읽을 수 있는 0과 1로 이루어진 코드(byte code, machine code)로 변환하는 과정을 거쳐야 실행될 수 있으며, 이를 컴파일 과정이라고 한다.
    이 때, 각 운영체제(OS)에 따라 바이트 언어를 다른 방식으로 해석하므로 각각 다른 컴파일 과정이 필요하다.
  1. C언어의 컴파일 방식: C언어와 같은 기존의 언어들은 각 OS마다 서로 다른 컴파일러가 필요하다. 즉, Linux를 위한 컴파일러, Mac을 위한 컴파일러 등 종류별로 컴파일러가 존재하는 식이다.

  2. 자바의 컴파일 방식: 자바는 하나의 컴파일러만이 존재하고, 컴파일 된 결과 바이너리 파일을 각 OS에 맞게 번역해주는 일종의 통역사 역할을 하는 JVM(Java Virtual Machine)이 존재한다.

JVM ⊂ JRE ⊂ JDK

  • JDK에는 JRE가 포함되어있고, JRE에는 JVM이 포함되어있다. 우리가 통상적으로 JDK를 설치하며 자연히 JRE와 JVM도 함께 설치하게 된다.

  • JRE : 자바 실행 환경 (Java Runtime Environment)의 약자이다. 자바 프로그램의 실행에 필요한 여러 라이브러리 파일을 가지고 있으며, 자연히 JVM도 포함한다.

  • JDK : 자바 개발 도구 (Java Development Kit)의 약자로, 컴파일, 디버깅 등을 위한 도구들이 들어있음.

자바와 JDK의 버전

  • 자바의 버전은 곧 JDK의 버전이다. 다양한 버전 중 LTS는 Long Time Support의 약자로, 안정적으로 오랫동안 지원하는 버전이라는 의미이다. (해당 강의에서는 자바 11을 선택함)

  • JDK에는 Oracle JDK와 Open JDK등 다양한 종류가 있음

빌드(build)와 실행(run)이란?

  • 빌드는 소스코드 파일을 컴퓨터에서 실행할 수 있는 artifact(독립 소프트웨어 가공물)로 가공시키는 과정이다. 이렇게만 설명하면 기존에 언급한 컴파일이라는 개념과 혼동될 수도 있으나, 빌드는 크게 보면 컴파일을 포함하는 좀 더 복잡하고 큰 개념이다.

  • 빌드 과정은 소스코드 컴파일, 테스트 코드 컴파일, 테스트 코드 실행, 테스트 코드 리포트 작성, 기타 추가 설정 작업 실행, 패키징 (우리가 직접 작성한 코드와 여기저기에서 가져다가 사용한 오픈소스 코드들을 하나의 결과물로 묶는 과정) 수행, 최종 결과물 도출 등의 순서로 이루어진다.

  • 실행은 개발자가 작성한 코드나 테스트코드를 컴파일 과정을 거쳐서 실행해보는 것을 말한다. 이 경우에는 독립 소프트웨어 가공물이 나올 수도 있고, 나오지 않을 수도 있다.

자바의 빌드 도구: ant, maven, gradle

  • 그런데, 여기에서 생각해봐야 할 점은 빌드 과정이 생각보다 무척 길고 복잡해서 수동으로 하나하나 병합하고 컴파일시키기에는 실수도 많이 나오고 자원도 많이 든다는 점이다.

  • 이런 문제를 해결하기 위해 자바는 빌드 도구를 사용한다.

  • 빌드 도구는 소스코드의 빌드 과정을 자동으로 처리하고, 외부 소스 코드 (외부 라이브러리)를 관리한다. (버전 관리 등)

  • 자바의 빌드 도구의 종류는 다음과 같다. 현재는 기능적 측면과 안정성의 측면에서 대부분의 개발자가 Gradle을 사용하고, 또 이를 권장하는 추세이다.

  • Gradle은 설정을 위해 groovy 언어를 사용하고, 외부 라이브러리를 관리할 수 있으며 유연하게 빌드 스크립트를 작성할 수 있는 등 성능이 뛰어나다.

0개의 댓글