JDK & JRE & JVM

수현·2022년 9월 18일

Java

목록 보기
1/23
post-thumbnail

Java프로그램의 동작

  1. 코드 작성
  2. 컴퓨터가 실행할 수 있는 형태로 코드를 컴파일
  3. 컴파일된 프로그램을 실행(런타임)

JDK - Java Development Kit

JDK는 개발자들이 자바로 개발하는데 사용되는 SDK(Software Development Kit)라고 볼 수 있다.
여기에는 개발 시 필요한 라이브러리, 컴파일러(javac), javado, Java 런타임(JRE) 등이 모두 포함된다.

JDK 버전

Java의 버전은 보통 JDK나 Java SE 버전으로 나타낸다.

  • Java SE(Standard Edition) : 가장 기본이 되는 표준 에디션 Java Platform으로 핵심 기능 제공
  • 이외에도 대규모 기업용인 Java EE, 작은 기기용 Java ME 등이 있다.

JDK 종류

Java는 오픈소스이기 때문에 이를 빌드하여 만들어진 다양한 JDK가 있다. 주요한 JDK는 다음과 같다.

  • Oracle JDK : Oracle에서 제공하는 JDK, 구독을 통해 유료 라이센스를 구매하여 사용 가능
  • Open JDK : 유명한 무료 JDK, 하지만 OpenJDK를 직접 사용하는것 보다 OpenJDK 기반으로 빌드된 JDK 사용을 추천
  • Azul Zulu : 인지도가 높은 JDK 중 하나, Mac 등에서 사용할 수 있는 바이너리를 제공하는 것이 특징
  • Amazon Corretto : AWS에서 제공하는 JDK. AWS에서 쉽게 사용 가능하며, AWS 환경이 아니더라도 사용 가능
  • Temurin (AdoptOpenJDK) : Eclipse에서 제공하는 JDK. Eclipse를 사용한다면 Temurin 설치를 추천

JDK 구성 요소

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

JRE - Java Runtime Environment

Java 실행환경으로 JVM과 프로그램 실행을 위한 라이브러리를 포함한다.


JVM - Java Virtual Machine

JVM은 자바를 실행시키는 프로그램이며 자바로 작성된 모든 프로그램은 JVM에서만 실행될 수 있다.

장점

Java는 OS에 종속적이지 않다.

C언어와 비교해서 보자면 C언어로 작성된 프로그램은 각각의 OS에서 다르게 컴파일되므로 윈도우용, 리눅스용, 맥용 C 프로그램을 만들어야 한다. 이를 '이식성이 낮다', 'OS에 종속된 언어'라고 표현한다.

JDK를 설치할 때 각 OS에 맞는 JVM이 설치되고 자바 프로그램은 javac로 컴파일 된 후 이 JVM에서 실행되므로 Java는 OS에 종속적이지 않을 수 있다. 결론적으로 개발자는 1개의 프로그램만 개발하면 되므로 효율성과 생산성이 높아진다.

단점

Java 프로그램은 C 프로그램과 달리 JVM이라는 한 단계를 더 거치므로 속도가 더 느리다. JIT 컴파일러를 사용하여 필요한 부분만 기계어로 바꾸어 성능 향상을 했지만 그럼에도 C언어보다 느리다.

C 프로그램
→ compiler(바이너리 코드로 변환)
→ 프로그램 실행

Java 프로그램
→ compiler(JVM이 인식할 수 있는 바이트 코드인 클래스 파일로 변환)
→ JVM(클래스 파일을 바이너리 코드로 변환)
→ 프로그램 실행


참고 자료

https://inpa.tistory.com/entry/JAVA-%E2%98%95-JDK-JRE-JVM-%EA%B0%9C%EB%85%90-%EA%B5%AC%EC%84%B1-%EC%9B%90%EB%A6%AC-%F0%9F%92%AF-%EC%99%84%EB%B2%BD-%EC%B4%9D%EC%A0%95%EB%A6%AC

profile
실패와 성장을 기록합니다 🎞️

0개의 댓글