JDK & JRE

아몬드봉봉·2024년 2월 22일
0

Java

목록 보기
17/17

지금까지 자바를 사용해 개발을 하면서 '나는 자바 개발자가 맞는가? 자바 개발자가 맞다면 자바에 대해서 어느정도 알고 있는가?'하는 생각이 들었다. 생각해보니 많은 부분을 모르고 있었다. 그래서 기본부터 다시 공부하면서 정리해보려고 한다.

JDK (Java Development Kit)

JDK는 자바 개발자들이 Java로 개발할 때 사용되는 키트이다. JDK 안에는 자바를 개발 시 필요한 라이브러리들과 javac, javadoc 등의 개발 도구들이 포함되고 JRE도 같이 포함되어 있다.

종류

  • Oracle JDK : Oracle에서 제공하는 JDK로 상업적으로 사용하려면 구독을 통해 유료 라이센스를 구매해야한다.
  • Open JDK : 무료 JDK이지만 직접 사용하는것 보다는 Open JDK 기반으로 빌드된 JDK 사용을 추천한다.
  • Azul Zulu : Mac 등에서 사용할 수 있는 바이너리를 제공하는 JDK이다.
  • Amazon Corretto : AWS에서 제공하는 JDK이다

JDK 파일 구조

Java 디렉토리에는 다양한 파일들로 구성되어 있다.

디렉토리 구성요소

  • bin : 프로그램 작동에 필요한 파일, 프로그램 개발에 필요한 모든 툴과 유틸리티가 포함되어 있다.
  • conf : 사용자 구성 옵션을 포함하고 있고, JDK 접근 권한 설정, 보안 알고리즘 변경, 자바 암호화 확장 정책 등을 설정할 수 있다.
  • include : 자바 가상머신 디버거인터페이스, 네이티브인터페이스의 네이티브 코드 작성하는데 사용되는 C헤더 파일이 있다.
  • jmods : jlink를 사용하여 사용자 지정 런타임을 만드는데 사용되는 모듈이 있다.
  • legal : 각 모듈에 대한 라이선스와 저작권에 대한 내용이 있다.
  • lib : JDK에 필요한 추가 클래스 라이브러리와 지원 파일이 있다.
개발 프로그램

  • jar : 자바 클래스 파일을 압축한 자바 아카이브 파일을 생성(.jar), 관리한다.
  • java : 컴파일러가 생성한 바이트 코드를 실행한다. (인터프리터)
  • javac : 자바 컴파일러로 자바 소스를 바이트 코드로 변환한다.
  • javadoc : 자바 소스 주석으로부터 HTML 형식의 API 도큐먼트를 생성한다.
  • javap : 컴파일된 코드를 원래 코드로 되돌린다. (역어셈블러)
  • jlink : 응용 프로그램에 맞춘 맞춤형 JRE를 생성한다
  • jmod : 자바의 모듈 파일(.jmd)를 만들거나 모듈 파일의 내용을 출력한다.

JDK 버전

자바는 처음에 JDK 1.0a를 시작으로 다양한 기능들이 추가되면서 JDK 1.2버전에서는 약칭이 J2SE(Java2 Standard Edition)로 표기되기 시작했고 J2SE 6버전에서는 Java SE(Java Standard Edition)로 명칭이 바뀌었다.

Oracle 사이트에 접속해보면 다운 받을 수 있는 버전은 JDK1.4.2 ~ Java SE 21 버전까지 다운 받을 수 있다.

표기법

Java SE 21.0.2(LTS)

  • 21 : 주요 버전
  • 0 : 개선 버전
  • 2 : 업데이트 버전
  • LTS : Long Term Support 장기 지원 하는 버전
Java Edition
  • Java SE (Java Standard Edition) : 추상 Java 플랫폼을 기술하는 스펙으로 가장 기본이 되는 표준 에디션의 자바 플랫폼으로 자바 언어의 핵심 기능을 제공한다.
    • 가장 기본적인 클래스 패키지로 구성된다.
    • PC용 애플리케이션, 애플릿개발, 응용프로그램 개발, 웹 개발, 안드로이드 개발이 가능하다.
    • PC에 설치하여 사용할 수 있는 모든 프로그램 개발에 관련된 것들이 있다.
  • Java EE (Java Enterprise Edition) : 대규모 기업용 에디션으로 Java SE 스펙을 기반으로 한다.
    • Java SE를 줄여 라이트하게 만든 것으로 SE개발을 할 줄 알면 ME기반의 개발도 가능하다.
    • 각각의 OS를 가지고 있는 스마트폰이 대중화된 지금은 잘 사용하지 않는다.
  • Java ME (Java Micro Edition) : 작은 임베디드 기기들 같은 작은 기기들을 다루는데 이용하는 에디션이다.
    • Java SE를 줄여 라이트 하게 만든 것으로 SE를 활용할 줄 알면 ME개발도 가능하다.
    • 지금은 각각의 OS를 가지고 있어서 사용하지 않는다.
  • Java FX : UI 애플리케이션을 개발할 수 있도록 가볍고 풍부한 UI를 제공하는 에디션이다.
    • 고성능의 하드웨어 그래픽 가속과 미디어 엔진 API를 제공해주어 프로그램의 성능에 신경을 써야 하는 분야에서 사용한다.

JRE (Java Runtime Environment)

JVM과 자바 프로그램을 실행시킬 때 필요한 라이브러리 API를 함께 묶어서 배포되는 패키지 이다. 컴퓨터 운영체제 소프트웨어 상에서 실행되고 클래스 라이브러리 및 특정 Java 프로그램이 실행해야 하는 기타 리소스를 제공하는 소프트웨어 계층이다.

개별적으로 설치가 가능했지만 JDK 11 버전부터는 따로 제공되지 않는다.

런타임 아키텍처

  • 클래스로더 : Java 프로그램의 실행에 필요한 모든 클래스를 동적으로 로드한다.
  • 바이트코드 검증기 : 인터프리터에 전달되기 전에 Java 코드의 형식과 정확성을 보장
  • 인터프리터 : Java 프로그램이 기본 시스템에서 기본적으로 실행될 수 있도록 해주는 JVM의 인스턴스를 작성한다.

출처

나무위키 - Java/버전
위키백과 - 자바 개발 키트
IBM - JRE
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#
https://coding-factory.tistory.com/826
https://hajoung56.tistory.com/35
https://themach.tistory.com/88

profile
성장을 즐기는 백엔드 자바 개발자

0개의 댓글

관련 채용 정보