JRE(Java Runtime Environment)

menu icon

JRE(Java Runtime Environment)

JRE(Java Runtime Environment)의 역할 및 다른 Java 플랫폼 컴포넌트와 작동하여 Java 애플리케이션을 실행하는 방법에 대해 알아봅니다.

JRE(Java Runtime Environment)란?

Java Runtime Environment 또는 JRE는 컴퓨터의 운영체제 소프트웨어 상에서 실행되고 클래스 라이브러리 및 특정 Java 프로그램이 실행해야 하는 기타 리소스를 제공하는 소프트웨어 계층입니다.

JRE는 Java 프로그램의 개발과 실행을 위한 세 개의 상호 연관된 컴포넌트 중 하나입니다. 기타 두 개의 컴포넌트는 다음과 같습니다.

  • Java Development Kit 또는 JDK는 Java 애플리케이션의 개발을 위한 툴 세트입니다. 개발자는 Java EE(Java Enterprise Edition), Java SE(Java Special Edition) 또는 Java ME(Java Mobile Edition) 등 Java 버전 및 패키지나 에디션에 따라 JDK를 선택합니다. Java 프로그램의 실행이 Java 프로그램 개발 프로세스의 일부이므로, 모든 JDK에는 항상 호환 가능한 JRE가 포함됩니다.
  • Java Virtual Machine 또는 JVM은 라이브 Java 애플리케이션을 실행합니다. 모든 JRE에는 기본 JRE가 포함되지만, 개발자는 애플리케이션의 특정 리소스 요구사항을 충족하는 다른 JRE를 자유롭게 선택할 수 있습니다.

JRE는 JDK를 사용하여 작성된 Java 코드를 JVM에서 이의 실행에 필요한 필수 라이브러리와 결합한 후 결과 프로그램을 실행하는 JVM의 인스턴스를 작성합니다. JVM은 다수의 운영체제에 사용 가능하며, JRE를 사용하여 작성된 프로그램이 이 모든 운영체제에서 실행됩니다. 이러한 방식으로, JRE(Java Runtime Environment)는 수정 없이도 어떤 운영체제에서든 Java 프로그램을 실행할 수 있도록 합니다.

Oracle에서 호환되는 JRE를 포함하여 JDK를 다운로드할 수 있습니다(IBM 외부 링크).

JRE의 작동방법

JDK 및 JRE는 서로 간에 상호작용하여 사실상 모든 운영체제에서 Java 기반 애플리케이션의 완벽한 실행을 가능하게 하는 지속 가능한 런타임 환경을 구축합니다. 다음은 JRE 런타임 아키텍처의 구성요소입니다.

클래스로더

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

바이트코드 검증기

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

인터프리터

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

JRE의 구성요소

Java Virtual Machine 외에도, JRE는 Java 애플리케이션을 최대한 활용할 수 있도록 기타 다양한 지원 소프트웨어 툴과 기능들로 구성되어 있습니다.

배치 솔루션

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

개발 툴킷

JRE에는 개발자의 사용자 인터페이스 개선을 지원할 수 있도록 설계된 툴킷도 포함되어 있습니다. 이러한 툴킷 중 일부에는 다음이 포함됩니다.

  • Java 2D: Java 언어의 2차원 그래픽 작성에 사용되는 API(Application Programming Interface)입니다. 개발자는 풍부한 사용자 인터페이스, 특수 효과, 게임 및 애니메이션을 작성할 수 있습니다.
  • AWT(Abstract Window Toolkit): 오브젝트, 단추, 스크롤바 및 창의 작성에 사용되는 GUI(Graphical User Interface)입니다.
  • Swing: 풍부한 위젯 세트를 사용하여 유연하고 사용자 친화적인 사용자 정의를 제공하는 또 하나의 경량 GUI입니다.

통합 라이브러리

JRE(Java Runtime Environment)는 개발자가 애플리케이션과 서비스 간에 완벽한 데이터 연결을 구축할 수 있도록 지원하는 다수의 통합 라이브러리를 제공합니다. 이러한 라이브러리 중 일부에는 다음이 포함됩니다.

  • Java IDL(CORBA): 공통 오브젝트 요청 아키텍처를 사용하여 Java 프로그래밍 언어로 작성된 분산 오브젝트를 지원합니다.
  • JDBC(Java Database Connectivity) API: 원격 관계 데이터베이스, 플랫 파일 및 스프레드시트에 대한 액세스를 통해 애플리케이션을 작성할 수 있는 개발자용 툴을 제공합니다.
  • JNDI(Java Naming and Directory Interface): 클라이언트가 이름 지정 규칙을 사용하여 데이터베이스에서 정보를 페치할 수 있는 포터블 애플리케이션을 작성할 수 있도록 해주는 프로그래밍 인터페이스 및 디렉토리 서비스입니다.

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

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

  • 콜렉션 프레임워크: 애플리케이션 데이터의 저장과 처리를 개선하도록 설계된 인터페이스의 콜렉션으로 구성된 통합 아키텍처입니다.
  • 동시성 유틸리티: 고성능 스레딩 유틸리티의 강력한 프레임워크 패키지입니다.
  • 환경 설정 API: 동일 시스템에서 다수의 사용자가 자체 애플리케이션 환경 설정 그룹을 정의할 수 있도록 해주는 경량의 크로스 플랫폼 지속적 API입니다.
  • 로깅: 추가 분석을 위해 로그 보고서(예: 보안 장애, 구성 오류 및 성능 문제)를 생성합니다.
  • JAR(Java Archive): 다수의 파일을 JAR 형식으로 번들링할 수 있도록 하여 다운로드 속도를 상당히 개선하고 파일 크기를 줄일 수 있도록 해주는 플랫폼 독립형 파일 형식입니다.

JRE 및 IBM

JRE 및 IBM Cloud

많은 기업들의 경우 Java는 지속적으로 애플리케이션 개발의 핵심 부분이며, 이는 포터블한 확장형 솔루션의 작성 시에 견고한 기반을 제공합니다. 이는 또한 클라우드로 떠나는 여정애플리케이션 현대화에서 핵심 역할을 수행할 수 있습니다.

다음 단계로 진행:

  • Java 어플리케이션의 구현, 모니터링 및 관리를 위한 안정적이고 비용 효율적인 상용 지원을 제공하는 OpenJDK 및 IBM Runtimes for Business를 살펴봅니다.

IBM Cloud 계정으로 지금 시작하세요.