ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

JDK (Java Development Kit)

정의
자바 애플리케이션을 개발, 빌드 그리고 실행하기 위한 도구 모음(툴체인)입니다.

자바를 “쓴다”는 말은 보통 JDK를 설치한다는 뜻입니다.

JDK에는 단순 실행 환경(JRE)뿐만 아니라, 컴파일러(javac), 패키징(jar), 문서화(javadoc), 디버깅/모니터링 도구까지 포함됩니다.

즉, JDK는 “자바 언어” 자체가 아니라, 자바를 개발할 수 있게 해주는 개발 키트입니다.

핵심 메시지

“JDK는 개발 도구 세트이고,
JVM은 실행 엔진이며,
JRE는 실행에 필요한 묶음이다.”

- JDK ⊃ JRE ⊃ JVM (개념적으로) -
구성 요소
JDK는 크게 컴파일, 실행, 패키징, 진단 / 도구로 구성됩니다.
도구 예시 역할
컴파일러 javac .java → .class(바이트코드)로 변환
실행 java JVM 위에서 클래스 실행(엔트리포인트 main 호출)
패키징 jar 클래스/리소스를 JAR로 묶어 배포 가능한 형태로 만듦
문서화 javadoc 주석 기반 API 문서 생성
진단/모니터링 jcmd, jstack, jmap 스레드 덤프/힙 정보/GC 상태 등 운영 이슈 분석
실행 흐름
자바 코드는 컴파일 → 바이트코드 → JVM 실행으로 동작합니다.
1
작성 Hello.java 같은 소스 코드 작성
2
컴파일(javac) .java → .class(바이트코드) 생성
3
실행(java) JVM이 바이트코드를 로딩/검증 후 실행
4
운영/진단 GC/스레드/힙 상태를 도구로 확인(장애 대응)

💡 TIP / 참고사항

실무에서 “JRE 설치했는데 왜 빌드가 안 되지?” 같은 문제가 생기는데, 이유는 간단합니다.
컴파일러(javac)가 JDK에만 있기 때문입니다. 서버에 “실행만” 하면 되는 경우엔 JRE만으로도 가능하지만, 개발/빌드는 JDK가 필요합니다.

 

실전: 버전이 중요한 이유
JDK 버전은 문법 / 라이브러리 / 런타임을 동시에 결정합니다.

같은 자바 코드라도 JDK 버전에 따라 지원하는 문법과 표준 라이브러리가 달라집니다. 또한 JVM/GC 동작과 성능 특성도 바뀝니다. 그래서 프로젝트에서는 보통 LTS(Long-Term Support) 버전(예: 8, 11, 17, 21)을 기준으로 선택합니다.

👍 GOOD

  • 팀/CI/CD/서버가 동일한 JDK 버전을 사용(재현성 확보)
  • LTS 버전을 기준으로 운영(업데이트/보안 패치 안정)
  • Gradle/Maven에서 toolchain으로 버전 고정

👎 BAD

  • 로컬은 21, CI는 17, 서버는 11 → 환경 차이로 빌드/런타임 이슈
  • “일단 최신”으로 올렸다가 라이브러리 호환성 깨짐
  • 버전 정책 없이 사람마다 설치한 JDK가 다름

✅ 핵심 요약

  • ✔️ JDK는 자바 개발을 위한 툴체인(컴파일/패키징/진단 포함)이다.
  • ✔️ JRE/JVM과 구분해야 하며, 빌드에는 javac가 있는 JDK가 필요하다.
  • ✔️ 실무에선 LTS 버전과 toolchain으로 버전을 고정하는 게 중요하다.
728x90