[Java] 개발 환경 개념 (JDK/JRE/JVM)

뽀삐용·2023년 11월 8일
0

Java

목록 보기
1/4

📍JDK

Java Development Kit (자바 개발 키트)
JDK = JRE + 개발/디버깅 도구

일반적으로 자바를 공부하기 위해서는 JDK를 설치하게 된다.
JDK는 JRE를 포함하고 있고 JRE는 JVM을 포함하고 있기 때문에 JDK를 설치하면 JRE, JVM이 자동으로 전부 설치된다.

JDK에는 JRE에는 없는 자바 컴파일러(javac, java compiler)를 포함하고 있다. 컴파일러란 우리가 작성한 자바 문법을 컴퓨터가 이해할 수 있게 바꿔주는 해석기 같은 존재이다. .java 파일을 만들어서 실행(빌드)하면 컴파일 작업을 거쳐 .class 라는 파일이 자동으로 생성된다.

📍JRE

Java Runtime Environment (자바 런타임 환경)
JRE = JVM + 자바 클래스 라이브러리(Java class libraries) + 자바 클래스 로더(Java class loader)

JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있다. 클래스 로더, 클래스 라이브러리를 통해 작성한 자바 코드를 라이브러리와 결합한 후 JVM에 넘겨 실행시킨다. JRE는 그 자체로 특별한 기능을 한다기보다는 JVM이 원활하게 잘 작동할 수 있도록 환경을 맞춰주는 역할을 한다.

📍JVM

Java Virtual Machine (자바 가상 머신)
JVM = 클래스 로더 (Class Loader) + 런타임 데이터 영역 (Run-time Data Area) + 실행 엔진 (Execution Engine)

클래스 로더(Class Loader)가 컴파일 된 자바 바이트코드를 런타임 데이터 영역(Runtime Data Areas)에 로드하고, 실행엔진(Execution Engine)이 자바 바이트코드를 실행한다.


JVM은 2가지 기본 기능이 있다.

Java의 원칙 - WORA -
한 번 쓰고 모든 곳에서 실행한다 (Write Once, Run Anywhere)

  1. 자바 프로그램이 어느 기기, 어느 운영체제 상에서도 실행될 수 있게 만들어 준다. => WORA
  2. 자바 프로그램의 메모리를 효율적으로 관리 & 최적화 해준다.

과거의 모든 프로그램은 운영체제에 맞게 작성되었다. 같은 프로그램이지만 윈도우, 리눅스, 맥 등 사용하는 운영체제에 따라 다르게 작성되어야 했고 프로그램이 사용하는 메모리도 개발자가 일일이 관리해줘야 했다. JVM의 등장으로 개발자는 앞서 말한 귀찮은 작업들을 하지 않아도 된 것이다.


※ 가비지 컬렉션(Garbage Collection)
JVM이 메모리를 관리하는 프로세스를 지칭하는 용어
자바 프로그램 상에서 사용하지 않은 메모리를 지속적으로 찾아 제거함으로써 효율적인 메모리 관리를 가능하게 한다.




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

  • bin/
    • Java 실행 프로그램들
  • conf/
    • 사용자가 편집할 수 있는 구성 파일(configuration files)
  • lib/
    • 여러가지 supporting 파일
    • jar 구성 파일, 속성 파일, 글꼴 등이 있다.
    • 가장 중요한 모듈도 있다. 자바 표준 라이브러리의 .class 파일을 포함하는 모듈이 있다.

/bin 디렉토리에 들어있는 주요 개발 소프트웨어

  • javac
    • 자바 컴파일러, 자바 소스를 바이트 코드로(0과 1) 변환
  • java
    • 자바 프로그램 실행기, JVM 작동시켜 프로그램 실행
  • javadoc
    • 자바 소스를 HTML 형식의 API 문서 생성
  • jar
    • 자바 클래스 파일을 압축한 자바 아카이브(Java Archive) 파일(.jar) 생성 및 관리
  • jmod
    • 자바의 모듈 파일(.jmod)을 만들거나 모듈 파일의 내용 출력
  • jlink
    • 응용프로그램에 맞춘 맞춤형(custom) JRE 생성
  • jdb
    • 자바 응용프로그램의 실행 중 오류를 찾는 데 사용하는 디버거
  • javap
    • 클래스 파일의 바이트 코드를 소스와 함께 보여주는 디어셈블러
profile
하고 싶은 일 한 가지를 하려면

0개의 댓글