Java

[Java] 자바, JDK, JRE, JVM, 모듈화, 자바 API, IDE

yujinius 2024. 4. 4. 13:10

JDK(Java Development Kit)

  • 자바 개발자에게 무료로 배포하는 소프트웨어
  • JDK = 자바 컴파일러 등의 개발 도구 + JRE

참고 SDK(Software Development Kit)

  • 특정한 소프트웨어 프레임워크, 하드웨어 플랫폼, 컴퓨터 시스템 게임기 등을 위한 응용프로그램 등을 만들 수 있게 해주는 개발 도구의 집합
  • 자바의 SDK 가 JDK

JRE(Java Runtime Environment)

  • 자바 응용 프로그램이 실행될 때 필요한 소프트웨어들
  • JRE = 개발자가 활용할 수 있는 자바 API(이미 컴파일된 다양한 클래스 라이브러리) + 자바 가상 기계(JVM)

 

 

가발자가 아닌 일반 사용자의 경우 JRE만 필요하며 JRE만 따로 다운 가능

JDK(Demo와 Samples 포함)나 JRE은 오라클 사이트에서 다운 가능(https://www.oracle.com/kr/java/technologies/downloads/)

 

 

Java SE의 JDK 구조

Java SE(Standard Edition) 는 자바 표준 배포판으로 JDK의 배포판 중 하나이다.

 


 

JDK 설치 후 사용자 디렉터리 구조

일반적으로 오라클 등의 사이트에서 JDK를 다운 받을 때 Java로 다운받게 된다.

아래는 JDK15와 JDK17을 받아둔 모습이다.

가장 최근에 다운 받았던 JDK19로 자바 디렉터리 구조를 확인해보자.

Java
> jdk-17
>> bin : 자바 개발, 실행에 필요한 도구와 유틸리티 명령
>> conf : 여러 종류의 배치 파일
>> include : 네이티브 코드 프로그래밍에 필요하는 C 언어 헤더 파일
>> jmods : 컴파일된 모듈 파일들
>> legal : 각 모듈에 대한 저작권과 라이선스 파일
>> lib : 실행 시간에 필요한 라이브러리 클래스들

 

JDK > bin 디렉터리에 들어가 있는 중요 개발 소프트웨어

  • javac : 자바 컴파일러, 자바 소스(.java)를 바이트 코드(.class)로 변환
  • java : 자바 프로그램 실행기, JVM(자바 가상기계)을 작동시켜 자바 프로그램 실행
  • javadoc : 자바 소스로부터 HTML 형식의 API 도큐먼트 생성
  • jar : 자바 클래스 파일을 압축한 자바 아카이브 파일(.jar) 생성, 관리
  • jmod : 자바의 모듈 파일(.jmod)을 만들거나 모듈 파일의 내용 출력
  • jlink : 응용 프로그램에 맞춘 맞춤형(custom) JRE 제공
  • jdb : 자바 응용 프로그램의 실행 중 오류를 찾는데 상요하는 디버거
  • javap : 클래스 파일의 바이트 코드(.class)를 소스와 함께 보여주는 디어셈블러

자바의 배포판

오라클은 응용에 따라 크고 작은 여러 종류의 JDK를 제공 => 배포판이라고 부름

자바 배포판의 종류는 여러가지 그 중 대표적인 대표판은 아래와 같다.

Java SE(Standard Edition)

  • 자바 표준 배포판으로서, 데스크톱 응용프로그램과 서버 응용프로그램을 개발하기 위한 JDK

Java ME(Micro Edition)

  • 모바일용 배포판으로 IoT, TV, 블루레이, 셋톱박스 등 작은 하드웨어 자원을 갖는 장치에 적합한 JDK
  • 그러나 스마트폰이나 고해상도 TV 등은 안드로이드에게 자리를 내어주고 있는 상태

Java EE(Enterprise Edition)

  • 기업용 배포판으로 자바를 이용한 다중 사용자, 대규모 기업 응용 프로그램 개발을  위한 JDK

 

*자바를 하나로 언어로 보기 보다는 언어 + 컴파일러 + JVM 등의 실행환경을 모두 갖춘 플랫폼으로 이해하고 넘어가자

 

Java 8에서 Java 9로의 큰 변화 : 모듈화(modularity)

  • 모듈 : 자바 패키지들과 이미지, XML 파일 등의 자원들을 묶는 단위
  • 모듈화로 자바 응용프로그램을 마치 직소 퍼즐을 연결하듯이 모듈을 연결하는 방식으로 구성되게 함
  • JDK 9부터는 자바 API를 모듈 파일에 넣어 제공
  • 이를  위해 Java 9부터는 개발자들이 호출하는 Java SE의 모든 클래스들을 모듈들로 재설계하고 재정리함
  • Java > JDK > jmods 디렉터리 내에 모듈들이 담겨있음

자바 모듈화의 목적

  • 세밀한 모듈화를 통해 자바 응용 프로그램이 실행되는데 필요 없는 모듈을 배제하여 작은 크기로 배포할 수 있도록 함
  • 하드웨어가 열악한 소형 IoT 장치에서도 필요한 모듈들로만 구성된 작은 크기의 자바 응용프로그램 실행 환경(실행 시간 이미지라고 부름)을 만들어 실행시키고 성능을 유지하게 함

자바 API

  • 자바 API(Application Programming Interface)는 개발자들이 사용하도록 미리 만들어둔 자바 클래스들의 집합
  • Java 9부터는 모듈화 정책에 따라 모든 자바 API의 클래스들을 서로 관련된 클래스들을 패키지로 묶고, 다시 패키지들을 모듈로 묶어 계층화해 놓음
  • Java 9의 모듈화 정책 => 자바 API : 클래스 => 패키지 => 모듈로 계층화
  • 자바 API 설명 문서 : https://docs.oracle.com/javase/8/docs/api/
 

Java Platform SE 8

 

docs.oracle.com

  • 아래의 자바 API 예시처럼 API 도큐먼트 HTML 파일 생성시 JDK 내의 javadoc 프로그램을 사용한다.

 

자바 IDE

  • IDE(Integrated Development Environment) : 소스 코드 편집, 컴파일, 디버깅을 한꺼번에 할 수 있는 통합 개발 환경(소프트웨어)
  • IDE 예시: 마이크로소프트(MS)의 비주얼 스튜디오, IBM의 이클립스(eclipse)