본문 바로가기
JAVA

JDK, JRE, JVM / Java SE, EE, ME

by Dream Jin 2023. 3. 27.

JDK, JRE, JVM / JAVA SE, EE …

JDK > JRE > JVM으로서, 개발자들이 개발환경 구축 시 자바 버전을 맞춘다 = 프로젝트 JDK 버전을 맞춘다 라는 의미로 사용된다.

맨 처음 JDK와 JAVA SE에 많이 혼동되었는데 JAVA SE와 JDK는 다른 개념인 것 같다. JAVA SE의 경우 표준 자바 스펙이므로, 이것들을 구현한게 JDK, JRE로서 oracle에서 제공하는 Java SE의 경우 그냥 설치 파일이라 혼동되었지만 결국 Java SE를 설치하고, 프로젝트를 진행할 때 프로젝트 내에 있는 파일은 jdk인 것을 알게 되었다!

이렇게 cmd 창에서 명령어로 java -version을 했을대 확인되는 버전 역시 결국 17 버전의 jdk라는 것을 의미한다.

JDK = JRE + Development Tools

JRE = JVM + Library Classes

1. JDK

일반적으로 자바 공부를 하기 위해 설치하는 자바가 JDK 즉 Java Development Kit이다.

JDK를 설치하면 JRE도 함께 설치되고, JVM 역시 함께 설치된다.

일반적인 사용자가 자바로 만든 프로그램을 실행시키기 위해선 JRE만 있으면 되지만, 자바로 프로그램을 만들기 위해선 JDK 가 있어야 하고 JDK에 중요한 Javac (java compiler)가 존재하므로 우리가 작성한 .java를 .class 컴퓨터가 이해할 수 있는 파일로 바꿔준다.

  • 자바의 버전을 표기할 때에는 보통 JDK의 버전이나 Java SE의 버전으로 나타낸다.

→ 즉 JAVA 11이라고 한다면 JDK 11 버전을 말하는 것이고, Java를 설치한다라는 것은 JDK를 설치한다는 것이다.

Java SE 11.0.2(LTS)

11 → 주요 버전

0 → 개선 버전

2 → 업데이트 버전

LTS → Long Term Support 장기 지원을 받을 수 있는 버전.

JDK 구성 요소

  • bin : 자바 개발, 실행에 필요한 도구와 유틸리티들이 포함
  • include : 네이티브 코드 프로그래밍에 필요한 C언어 헤더 파일
  • lib : 실행 시간에 필요한 라이브러리 클래스

bin 디렉토리

  • javac : 자바 컴파일러로 자바 소스를 바이트 코드로 컴파일
  • java : 자바 인터프리터, 컴파일러가 생성한 바이트 코드를 해석하고 실행
  • javadoc : 자바 소스로부터 HTML 형식의 API 도큐먼트 생성
  • jar : 자바 클래스 파일을 압축한 자바 아카이브 파일(.jar)생성, (.zip 같은 압축프로그램)
  • jmod : 자바의 모듈 파일(.jmd)를 만들거나 모듈 파일의 내용을 출력
  • jlink : 응용프로그램에 맞춘 맞춤형 JRE 생성
  • jdb : 자바 응용프로그램의 실행 중 오류를 찾는 데 사용되는 디버거
  • javap : 역 어셈블러, 컴파일된 클래스 파일을 원래의 소스로 변환

2. JRE

JRE는 Java Runtime Environment 로서, 자바 클래스 라이브러리(Java class libraries), 자바 가상머신 (JVM), 자바 클래스 로더(Java class loader)를 포함하고 있다.

클래스 로더, 클래스 라이브러리를 통해 작성항 자바 코드를 라이브러리와 결합한 후 JVM에 넘겨 실행시킵니다. JRE는 JVM이 원활하게 작동할 수 있도록 도와주는 역할을 한다.

java 11 버전부터는 jre만 따로 제공 되지 않고, jdk에 포함되어 제공된다.

3. JVM

JVM은 Java Virtual machine 으로서, 자바 가상 머신이다.

JVM은 크게 2가지 역할을 한다. 자바의 프로그램을 실행시켜주는 역할을 함으로써 OS, 기기에 영향을 받지 않는다.

두 번째론 자바 프로그램의 메모리를 가비지 컬렉션을 통해 효율적으로 관리해 준다.

과거의 프로그램은 OS에 맞추어 작성되어야 했다. 같은 프로그램이지만 윈도우, 리눅스, 맥 등 사용하는 OS에 따라 다르게 작성되어야 했고, 프로그램의 메모리도 일일이 개발자가 관리하여야 하였으나 JVM의 등장으로 편리해졌다.


Java SE (Java Standard Edition)

가장 기본이 되는 표준 에디션의 자바 플랫폼으로 자바 언어의 핵심 기능을 제공

  • 가장 기본적인 클래스 패키지로 구성
  • PC용 어플리케이션, 어플리케이션 개발, 응용프로그램 개발, 웹 개발, 안드로이드 개발 등등
  • PC에 설치하여 사용할 수 있는 모든 프로그램 개발에 관련

Java EE (Java Enterprise Edition)

대규모 기업용 에디션 으로서 SE의 확장판(대규모 트래픽의 프로그램 개발 시)

  • 기업 환경을 위한 대규모 솔루션 개발, 모바일폰, 셋탑 박스, 차량용 텔레매틱스 시스템 개발

Java ME (Java Micro Edition)

피쳐폰, PDA폰, 셉톱박스, 프린터와 같은 작은 임베디드 기기들 같은 작은 기기들을 다루는데 이용하는 에디션

  • Java SE를 줄여 라이트 하게 만든 것, SE를 활용할 줄 알면 ME 개발도 가능
  • 지금은 각각의 OS를 가지고 있기 때문에 사용하지 않는다.

Java FX

가볍고 예쁜 그래픽 사용자 인터페이스(GUI)를 제공해 주는 에디션

  • 고성능의 하드웨어 그래픽 가속과 미디어 엔진 API를 제공해 주어서 프로그램의 성능에 신경을 써야 하는 분야에 사용

댓글