JDK(Java Development Kit)와 JRE(Java Runtime Environment)

zayn_noh·2026년 5월 13일

Java 개념 정립

목록 보기
1/8
post-thumbnail

Java로 어플리케이션을 제작한다면,
모든 Java개발자는 컴퓨터, OS, IDE에 상관없이 JDK를 사용할 것이다.

이번 포스트에는 JDKJRE에 대한 기본적 개념을 바탕으로 생각을 정리하는 과정을 가져볼 수 있도록 한다.


JDK: Java Development Kit 학습의 필요성

JDK(Java Development Kit)는 간단하게 말하면 Java로 작성한 코드를 실제 프로그램으로 만들기 위한 도구 묶음이라 할 수 있다.

이러한 도구를 사용하는 사람은 당연히 개발자이며, JDK 내부에는 개발자들이 프로그램을 완성할 수 있도록 돕는 다양한 기능들이 모여있다고 생각하면 된다.

즉, JDK를 설치하면 프로젝트 빌드부터 실행,
배포, 운영정책 등 다양한 개발 기능들을 함께 얻어가는 것이다.

왜 JDK를 알아야 할까?
그냥 인텔리제이에서 실행버튼 누르면 프로그램 작동하잖아?

실제로 인텔리제이에서 내가 작성한 코드를 실행해보면, 문법적 오류 포함 본인 스스로의 실수가 없는한 정상적으로 작동할 것이다.

만약 개발 환경에서의 어플리케이션은 정상 실행되며 이상이 없지만,

./gradlew build // 빌드 실패

java -jar app.jar // 실행 실패

클라우드 배포 서버 환경에서 빌드나 실행이 안된다면 무엇을 떠올려야 할까?

다양한 이유가 존재하겠지만, 먼저 클라우드에 JDK가 올바르게 설치되어 있는 지를 확인해야 할 것이다.

JDK에는 javac jdb javadoc jdeps 등 다양한 개발자 도구들이 포함되기에

실제로 JDK 때문에 어플리케이션이 서버 환경에서 실행이 안된다면,
이러한 JDK의 구성요소와 필요성을 알지 못하는 개발자들은 문제를 해결할 수 없을 것이다.


JDK: Java Development Kit의 구성 요소

위 그림은 긱스포긱스(https://www.geeksforgeeks.org/java/jdk-in-java/)라는 알고리즘 사이트에서 JavaJDK에 대해 설명할 때 사용한 구조 그림이다.

그림을 통해 알 수 있는 것처럼
JDK는 크게 다음의 구성 요소로 나뉜다.

  • JRE
  • Development Tools

Development Tools은 흔히 우리가 알고 있는

.java와 같은 소스 코드를 .class 바이너리 코드로 변경해주는 javac부터

작성한 자바 클래스를 디버깅할 때 도와주는 jdb,
자바 소스코드의 생성을 도와주는 javadoc 등 다양한 도구들이 이에 해당된다.

그렇다면 JRE는 무엇일까?


JRE: Java Runtime Environment란

JRE(Java Runtime Environment)는 이름에서도 알 수 있는 것처럼
단순하게 자바를 실행하기 위한 환경을 의미한다.

JDK가 자바 프로그램을 빌드하고 배포하고 디버깅하는 등 다양한 도구를 포함하고 있는 것을 앞서 확인하였는데,
JRE는 이러한 JDK에서 개발자에게 필요한 도구들을 제외한 프로그램 실행 런타임을 돕는 역할을 한다.

JDK는 앞서 알아본 내용처럼 자바 개발자들을 위한 도구 묶음이다,
따라서 개발 시 실제 실행 환경(JRE)또한 필요하기에 JDK 내부에 내장되어 있다.

즉, JDK를 통해 개발자가 만든 프로그램을 배포하였고,
이를 실행하고자 하는 사용자는 JRE만 설치되어 있다면 실행 가능하다는 것이다.

JRE는 자바 어플리케이션이 실행될 수 있도록 아래에 설명할 구성요소를 제공하는
소프트웨어 계층이다.

자바 어플리케이션은 운영체제 위에서 바로 실행되는 네이티브 프로그램들과는 성격이 다르다.
C/C++로 만든 프로그램은 보통 특정 운영체제나 CPU아키텍처에 맞게 컴파일하여 실행한다.

그러나 자바는 .java 소스코드를 javac.class라는 바이트코드로 만들고
이를 운영체제에 설치된 JVM이 실행하는 과정을 필요로 한다.

언뜻보면 번거러워 보이기만 하지만, 이를 통해 얻을 수 있는 이점이 존재하며
자세한 사항은 JVM 관련 포스트에서 다루도록 한다.


JRE: Java Runtime Environment의 구성 요소

JRE는 크게 다음 두 가지로 나누어 구성 요소를 확인할 수 있다.

  • JVM
  • Java Class Libraries
public class ExClass {
	public static void main(String[] args) {
    	System.out.println("hello world!");
    }
}

Java Class Libraries에는 위 예시 코드에서 보이는 System클래스부터
java.util 패키지 내 LocalDate, 컬렉션 프레임웍 등

다양한 자바 표준 라이브러리(Java Standard Library) 포함된다.

표준 라이브러리 외에, 직접 만든 클래스나 외부로부터 받아온 라이브러리도
Java Class Libraries에 포함되나?

결론부터 말하면 Java Class Libraries는 표준 라이브러리만을 의미하며,
사용자 정의 클래스나 외부 라이브러리들은 이에 포함되지 않는다.

이에 대한 자세한 내용은
JVMClassLoader와 관련된 내용을 다루는 포스트에서 설명하도록 한다.


JVMJava Virtual Machine의 약자로,
운영체제 위에서 자바 프로그램을 본격적으로 실행하는 주체라 할 수 있다.

역시 자세한 사항은 JVM에 대해 다루는 포스트에서 설명하도록 한다.


profile
개발 및 IT기술에 대해 정리하고 기록합니다.

0개의 댓글