개발이군고구마

[JVM] 자바에서 생성한 코드는 어떻게 실행되는가 본문

SERVER/Java

[JVM] 자바에서 생성한 코드는 어떻게 실행되는가

김구황 2025. 5. 20. 13:12
728x90

 

EC2에 스프링 프로젝트를 클론 받고 빌드 후 배포하면서 문득 무지성으로 스프링 "서버를 띄웠다" 는 것을 깨달았다. 

▶ 버튼만 클릭하면 되는 거 아녀써여...?

그래, 나는 지금까지 아무 생각없이 기계처럼 손가락만 까딱 벌레 표시를 눌러왔던 계야...

지금이라도 알고가자, 어떻게 스프링의 코드들이 서버에서 실행되는지! 

내 세계관은 확장될 일만 남았다 *^^*

 

 

1. JDK 설치 

우선 java 코드를 실행하기 위해선 JDK 가 필요하다. 

JDK는 자바 컴파일러, 클래스 라이브러리, 개발 도구 등을 포함하고 있어 자바 프로그래밍을 위한 필수적인 요소 라고 할 수 있겠다. 

JDK 안에는 프로그램을 실행시키도록 만들어둔 파일인 .jar 을 가지고 있는 JRE와

어떤 운영체제든 java를 실행시킬 수 있게 만드는 가상머신 JVM 프로그램을 포함한다. 

 

현재 작업하고 있는 Spring 프로젝트는 jdk 21을 기반으로 만들어졌기 때문에, EC2에도 jdk 21을 설치해준다. 

# Ubuntu
sudo apt-get update
sudo apt-get install openjdk-17-jdk -- 21로 변경

 

☑️ EC2 서버에 java 로 작성한 spring 프로그램을 작동시킬 수 있는 준비가 완료되었다. 

 

 

2. 깃 클론 

이후 작업을 했던 프로젝트를 가져온다. 

깃 프로그램도 EC2에 설치되기 전이라면 이 부분도 명령어로 가져와야하며, 클론을 받을 때 깃 접근 인증이 필요하다. 

(나의 경우엔 access token 값을 입력하였다. 글씨 안보임 주의) 

$ sudo apt-get install git
$ git clone [git repository 주소]

가장 상위 폴더를 중심으로 깃 프로젝트 폴더가 생성된다. 

 

☑️ 깃 레파지토리에 올려둔 코드 작업들이 이제 EC2 안에 폴더로 들어오게 되었다. 

 

 

3. 빌드 

이제 그 폴더에 있는 코드들을 실행시킬 '준비'를 해야한다. 

폴더 -> gradle 파일이 있는 곳에서 빌드 명령어를 입력한다. 

./gradlew build -x test  (테스트 폴더를 제외하고 빌드 진행하였다) 

 

👋🏻 여기서 잠깐 문법 학습

   컴파일이란

컴파일은 소스 코드를 바이너리 코드 (.class 바이트코드 형태) 로 변환하는 과정

 

  빌드란

소스 코드 파일을 실행 가능한 소프트웨어 산출물(.jar) 로 변환하는 과정

=> 빌드는 컴파일 이후에 이루어지는데 어떻게 보면 [빌드 > 컴파일] 이렇게 상위개념으로 이해하면 될 것 같다.

 

 

☑️  소스 코드들은 .jar 파일로 만들어져 실행될 준비를 마쳤다.  

 

 

 

4. 실행 

 

jar 파일이 생성된 곳으로 이동하여 (build/libs)  jar 파일을 실행해달라고 명령한다. 

java -jar build/libs/xxxx-0.0.1-SNAPSHOT.jar

 

-> 이후 변환된 jar 파일은 JVM 내부에 Runtime 영역으로 보내진다. 

-> 소스 코드들은 각각 heap/stack/method 영역으로 나뉘고

-> 최종적으로 인터프리터가 그 바이트코드들을 읽으며 

-> 프로그램이 실행되는 구조

 

'SERVER > Java' 카테고리의 다른 글

자바 I/O (2) - (문자) 파싱 구현체 만들기  (0) 2026.01.07
자바 I/O (1) - 원리  (0) 2025.12.29
[자료구조] LIST 원리  (0) 2025.12.26
[자료구조] MAP 원리  (0) 2025.12.19
[JVM] Static (자바 메모리 구조)  (0) 2025.02.10