Java Runtime Environment, JRE란?

자바 기술은 애플리케이션 개발 도구와 실행을 위한 런타임 환경을 제공합니다.

Ageofsys
6 min readJun 30, 2022

Java Runtime Environment(JRE)와 Java Development Kit(JDK)는 Java SE를 구현한 제품의 종류입니다. JRE는 Java 애플리케이션이 실행될 수 있는 환경을 제공합니다. JDK는 Java 애플리케이션을 개발할 수 있게 API와 도구들을 제공합니다.

JDK는 JRE를 포함하고 있습니다. JDK를 구현한 제품들은 아래와 같습니다.

  • Oracle JDK
  • AdoptOpenJDK
  • Azul System Zulu
  • Red Hat OpenJDK

Java Runtime Environment, JRE

JRE는 무엇일까?

Java 런타임 환경(JRE)는 Java 프로그램을 실행시키기 위해 클래스 라이브러리들과 여러가지 리소스들을 제공하는 운영체제 위에서 작동하는 소프트웨어 계층입니다. 운영체제와 Java 프로그램을 JRE가 분리하고 있기 때문에 Java 프로그램은 운영체제에 의존하는게 아니라 JRE에 의존하게 됩니다. 하지만 JRE는 운영체제 위에 있는 계층이기 때문에 운영체제에 의존하게 됩니다. 그렇기 때문에 운영체제별로 JRE를 설치하여야 합니다.

JRE는 JDK를 사용하여 생성된 Java 코드와 JVM에서 실행하는 데 필요한 라이브러리를 결합한 다음 결과 프로그램을 실행하는 JVM 인스턴스를 만듭니다.

JRE는 어떻게 작동할까?

JDK와 JRE는 서로 상호 작용하여 거의 모든 운영 체제에서 Java 기반 애플리케이션을 원활하게 실행할 수 있는 지속 가능한 런타임 환경을 만듭니다. 다음은 JRE 런타임 아키텍처를 구성합니다:

클래스로더

Java ClassLoader는 Java 프로그램을 실행하는 데 필요한 모든 클래스를 동적으로 로드합니다. Java 클래스는 필요할 때만 메모리에 로드되기 때문에 JRE는 ClassLoaders를 사용하여 필요에 따라 이 프로세스를 자동화합니다.

바이트코드 검증자

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

인터프리터

바이트코드가 성공적으로 로드된 후, 자바 인터프리터는 자바 프로그램을 기본 컴퓨터에서 기본적으로 실행할 수 있는 JVM 인스턴스를 만듭니다.

JRE는 무엇으로 구성되어 있을까?

JRE는 Java 가상머신(Virtual Machine, JVM)과 Java 애플리케이션을 최대한 활용할 수 있게 도와주는 다양한 지원 소프트웨어 도구와 기능으로 구성되어 있습니다.

JRE 구성

Java Virtual Machine, JVM

배포 솔루션

JRE 설치의 일부로 애플리케이션 활성화를 단순화하고 향후 Java 업데이트에 대한 고급 지원을 제공하는 Java Web Start 및 Java 플러그인과 같은 배포 기술이 포함되어 있습니다.

Java Web Start (JWS)는 Java 9 버전부터 사용이 지양 되었으며, Java 11 버전부터는 JDK에서 제거되었습니다. Java Applet 기술은 Java 17 버전에서 제거되었다.

개발 툴킷

JRE에는 개발자가 사용자 인터페이스를 개선할 수 있도록 설계된 툴킷도 포함되어 있습니다. 이러한 툴킷 중 일부는 다음과 같습니다:

  • JavaFX: 데스크톱 애플리케이션과 리치 인터넷 애플리케이션을 개발하고 배포하는 소프트웨어 플랫폼으로, 다양한 장치에서 실행 가능합니다. JavaFX는 Java SE를 위한 표준 GUI 라이브러리인 Swing을 대체하기 위해 고안되었습니다.
  • Swing: 풍부한 위젯 세트를 사용하여 유연하고 사용자 친화적인 사용자 정의를 제공하는 또 다른 가벼운 GUI.
  • Abstract Window Toolkit (AWT): 객체, 버튼, 스크롤 바 및 창을 만드는 데 사용되는 GUI(그래픽 사용자 인터페이스).
  • Java 2D: 자바 언어로 2차원 그래픽을 그리는 데 사용되는 애플리케이션 프로그래밍 인터페이스(API). 개발자는 풍부한 사용자 인터페이스, 특수 효과, 게임 및 애니메이션을 만들 수 있습니다.

통합 라이브러리

Java Runtime Environment는 개발자가 애플리케이션과 서비스 간의 원활한 데이터 연결을 만들 수 있도록 다양한 통합 라이브러리를 제공합니다. 이러한 라이브러리 중 일부는 다음과 같습니다:

  • Java IDL: CORBA 명세를 준수한 구현체입니다. 서로 다른 플랫폼에서 돌아가는 소프트웨어 컴포넌트들이 서로 상호작용할 수 있도록 Java 프로그래밍 언어로 작성된 분산 객체를 지원합니다.
  • Java Database Connectivity (JDBC) API: 개발자가 원격 관계 데이터베이스, 플랫 파일 및 스프레드시트에 액세스할 수 있는 애플리케이션을 작성할 수 있는 도구를 제공합니다.
  • Java Naming and Directory Interface (JNDI): 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견(discover)하고 참고(lookup)하기 위한 Java API입니다.
  • RMI: Remote Method Invocation, RMI를 통해 다른 애플리케이션과 통신할 수 있는 분산 Java 기술 기반 애플리케이션을 작성할 수 있습니다. 원격 Java 오브젝트의 메소드는 다른 호스트에 있는 JVM에서도 실행될 수 있습니다.
  • RMI-IIOP: RMI-IIOP는 CORBA 시스템에서 Java RMI 인터페이스의 역할을 하는 프로토콜입니다.

언어와 유틸리티 라이브러리

JRE에는 Java 애플리케이션 설계, 패키지 버전 관리, 관리 및 모니터링의 기본인 java.lang. 및 java.util 패키지가 포함되어 있습니다. 이 패키지 중 일부는 다음과 같습니다:

  • Collections Framework: 애플리케이션 데이터의 저장 및 프로세스를 개선하기 위해 설계된 인터페이스 모음으로 구성된 통합 아키텍처.
  • Concurrency Utilities: 고성능 스레딩 유틸리티를 갖춘 강력한 프레임워크 패키지.
  • Preferences API: 동일한 컴퓨터의 여러 사용자가 자체 애플리케이션 환경 설정 그룹을 정의할 수 있는 경량 크로스 플랫폼 영구 API.
  • Logging: 추가 분석을 위해 보안 오류, 구성 오류 및 성능 문제와 같은 로그 보고서를 생성합니다.
  • Java Archive (JAR): 여러 파일을 JAR 형식으로 번들로 묶을 수 있는 플랫폼 독립적인 파일 형식으로, 다운로드 속도를 크게 향상시키고 파일 크기를 줄입니다.

참고

--

--