본문 바로가기
platform_infra_cloud/java_runtime

자바 플랫폼이란? – JVM, JDK, JRE로 이해하는 실행 환경의 구조 | Java 플랫폼의 구조와 실행 흐름

by 죄니안죄니 2025. 4. 9.

들어가며

Java는 단순한 프로그래밍 언어를 넘어, 플랫폼으로서의 성격이 매우 강한 기술입니다.
우리가 .java 파일을 작성해서 실행 가능한 .class로 만들고, 실제 실행까지 이르는 모든 과정에는 JVM, JDK, JRE라는 Java 플랫폼 구성 요소들이 관여합니다.

이 글에서는 📂 platform_infra_cloud / java_runtime 카테고리의 시작점으로서, Java 플랫폼의 구조와 실행 흐름, 그리고 실무에서 어떤 설정과 튜닝이 필요한지 소개하겠습니다.

 


Java 플랫폼의 구성 요소

구성 요소 역할
JDK (Java Development Kit) 개발 도구 + 실행 환경 전체 포함
JRE + 개발 도구 (컴파일러 등)
JRE (Java Runtime Environment) JVM + 필수 라이브러리 (실행만 가능)
JVM (Java Virtual Machine) 바이트코드를 실행하는 가상 머신

즉, JDK ⊇ JRE ⊇ JVM 구조입니다.

JVM 위에서는 자바만 실행되는 것이 아닙니다. Kotlin, Scala, Groovy 등도 JVM을 타겟으로 합니다. (즉, .java 파일이든, .kt(Kotlin), .scala 파일이든  컴파일 후에는 모두 .class 파일로 변환됩니다.) 이로써 자바 플랫폼은 단일 언어를 넘어서 멀티 언어 생태계로 확장되었습니다.

실행 흐름: .java 파일이 실행되기까지

1. 개발자가 Hello.java 작성
2. javac로 컴파일 → Hello.class 생성 (바이트코드)
3. java 명령어로 JVM에서 실행 시작
4. JVM이 OS 위에서 Hello.class를 로딩하여 실행

JVM은 자바 바이트코드를 실행하는 가상의 컴퓨터입니다. JVM은 자바 프로그램이 어떤 운영체제에서도 동일하게 실행될 수 있도록 OS와 자바 프로그램 사이의 추상 계층 역할을 수행합니다. 운영체제에 따라 각기 다른 JVM이 존재하지만, 바이트코드만 같다면 동일한 동작을 보장합니다.



JVM 구조 간단 정리

구성 요소 설명
클래스 로더 (Class Loader) .class 파일을 JVM 메모리로 로딩
실행 엔진 (Execution Engine) 바이트코드를 해석하여 명령어 실행
힙 (Heap) 객체가 저장되는 공간 (GC 대상)
메소드 영역 (Method Area) 클래스 구조, static 변수 등 저장
스택 (Stack) 각 쓰레드의 호출 스택 저장


실무에서 JVM을 알아야 하는 이유

주제 설명
GC 튜닝 힙 크기 설정, GC 방식에 따른 성능 최적화
메모리 최적화 -Xms, -Xmx, PermGen/Metaspace 조절
스레드 관리 스택 오버플로우, 동시성 이슈 파악
로그 기반 트러블슈팅 OOM, GC 로그, Heap Dump 분석

특히 Spring 기반 서버를 운영할 때 JVM 이해는 필수입니다.


 


자주 사용하는 JVM 옵션들

java -Xms512m -Xmx1024m -XX:+UseG1GC -jar app.jar
옵션 설명
-Xms 초기 힙 크기
-Xmx 최대 힙 크기
-XX:+UseG1GC G1 가비지 컬렉터 사용
-Dproperty=value 시스템 속성 전달

 


자바의 생태계

자바는 언어이자 플랫폼일 뿐만 아니라 방대한 생태계를 형성하고 있습니다( 바이트코드기반의 통합실행환경인 JVM 덕분에 어떤 언어든 바이트코드로만 컴파일되면 실행 가능함). 대표적인 예시는 다음과 같습니다: ( 이 생태계는 Java로 작성되었거나, 바이트코드를 사용하며 JVM기반에서 실행된다는 공통점이 있습니다. )

  • 스프링(Spring): 자바 기반의 웹 프레임워크로 기업용 백엔드 개발의 표준
  • 안드로이드(Android): 모바일 앱 개발 플랫폼 (현재는 Kotlin 중심이나 자바도 여전히 사용됨)
  • Jakarta EE (구 Java EE): 기업용 서버 애플리케이션 개발 표준
  • Hadoop, Spark: 빅데이터 프레임워크도 자바/JVM 기반

또한, 오픈소스 커뮤니티의 활발한 참여로 라이브러리, 프레임워크, 툴링이 지속적으로 발전하고 있습니다.

 

 


왜 여전히 자바인가?

자바는 이미 20년 이상 된 기술이지만, 여전히 많은 이유로 선택받고 있습니다:

  • 강력한 타입 시스템과 안정성: 대형 프로젝트에서 예외 상황 방지가 중요
  • 방대한 레퍼런스와 커뮤니티: 문제 해결이 빠르고 문서화가 잘 되어 있음
  • 장기 유지보수가 쉬움: 엔터프라이즈 시스템에서 매우 중요한 요소
  • 고용 시장에서의 강세: 자바 개발자 수요는 여전히 꾸준함

 


앞으로 다룰 Java 플랫폼 시리즈

📂 platform_infra_cloud / java_runtime 카테고리에서는 다음과 같은 주제를 다룰 예정입니다:

  • JVM 메모리 구조 상세 분석 (Heap, Stack, Metaspace)
  • GC의 종류와 튜닝 전략 (G1GC, ZGC, ParallelGC)
  • SpringBoot에서 JVM 설정 최적화
  • java -jar 실행 시 환경 변수 구성법
  • Java 애플리케이션 로그 분석 흐름
  • Docker 환경에서의 JVM 동작 이해

Java는 단순한 언어가 아니라, 플랫폼 전체를 이해해야 실무에서 안정적으로 운영할 수 있습니다. 이제부터는 Java를 “실행되는 구조” 관점에서 같이 배워봅시다!

 


📌 
다음 글 미리보기
👉 JVM 메모리 구조 상세 분석

📚 Java_runtime 시리즈 전체 보기
👉 https://jobreview.tistory.com/category/platform_infra_cloud/java_runtime

댓글