JDK와 JRE

ymk·2023년 6월 6일
0
post-thumbnail

✏️ JDK란?

JDK는 Java Development Kit의 약자이며 개발자들이 자바 개발시 필요한 라이브러리들과 javac, javadoc와 같은 개발 도구들을 포함하고 있다. JDK를 사용하기 위해서는 실행을 시켜줄 수 있어야 하기 때문에 JRE (Java Runtime Envrionment)도 함께 포함되어 있다. 즉 JDK는 JRE의 상위 집합이다.

📃 JDK LTS 버전 별 특징

JDK는 현재 기준 20까지 출시하였으며 계속 6개월마다 꾸준하게 나올 예정이다. 20이라는 숫자까지 수많은 버전이 출시하였지만 이 중에서도 LTS(Long Term Support) 라는 버전이 있다. LTS는 출시 후 8년 이라는 기간동안 보안 업데이트와 버그 수정을 지원할 것임을 선언한 버전이다. 따라서 수많은 프로젝트에서 LTS가 붙은 8, 11, 17이 쓰이는 것이다.

Java 8

Java 8은 자바 역사에서 가장 큰 변화를 가져왔다고 한다.

  • Lambda
  • Stream
  • Functional Interface
  • Optional
  • Interface - default method
  • new Date and Time API (LocalDateTime...)

Java 11

  • HTTP Client
  • 컬렉션 객체를 배열로 변경하는 기능 - ToArray
  • var 키워드 지원 확대
  • String 클래스 기능 추가

Java 17

  • Sealed Class 정식 추가
  • 패턴 매칭 프리뷰 단계
  • Incubator(Foreign Function & Memory API)
  • 애플 M1 및 이후 프로세서 탑재 제품군에 대한 정식 지원
  • 난수 생성 API 추가


✏️ JRE란?

JRE는 Java Runtime Envrionment의 약자이며 자바로 만들어진 프로그램의 실행에 필요한 라이브러리, 여러 API, 그리고 JVM(Java Virtual Machine)을 포함하고 있다. 개발 과정에서는 아무 관여가 없고 실행할때만 사용된다.


✏️ JRE 작동 방법

클래스로더

Java 클래스로더는 Java 프로그램의 실행에 필요한 모든 클래스를 동적으로 로드한다. Java 클래스는 필요 시에만 메모리에 로드되므로, JRE는 클래스로더를 사용하여 요청 시에 이 프로세스를 자동화 한다.

바이트코드 검증기

바이트코드 검증기는 인터프리터에 전달되기 전에 Java 코드의 형식과 정확성을 보장한다. 코드가 시스템 무결성 또는 액세스 권한을 위반하는 경우, 클래스는 손상된 것으로 간주되어 로드되지 않는다.

인터프리터

바이트코드의 로드에 성공한 후, Java 인터프리터는 Java 프로그램이 기본 시스템에서 기본적으로 실행될 수 있도록 해주는 JVM의 인스턴스를 작성한다.


Reference

이미지:
https://www.oracle.com/java/technologies/java-se-support-roadmap.html
https://www.tutorialandexample.com/difference-between-jdk-jre-jvm

블로그 및 문서
https://coding-factory.tistory.com/826
https://www.ibm.com/kr-ko/topics/jre

profile
개발 공부 일지

0개의 댓글