JRE 란 무엇입니까? 자바 런타임 환경 소개

JDK (Java Development Kit), JVM (Java Virtual Machine) 및 JRE (Java Runtime Environment)는 함께 Java 응용 프로그램을 개발하고 실행하기위한 Java 플랫폼 구성 요소의 강력한 3 중 요소를 형성합니다. 이전에 JDK와 JVM을 소개했습니다. 이 빠른 자습서에서는 Java 용 런타임 환경 인 JRE에 대해 알아 봅니다.

실제로 런타임 환경 은 다른 소프트웨어를 실행하도록 설계된 소프트웨어입니다. Java 용 런타임 환경 인 JRE에는 Java 클래스 라이브러리, Java 클래스 로더 및 Java Virtual Machine이 포함되어 있습니다. 이 시스템에서 :

  • 클래스 로더는 제대로 클래스를로드하고 핵심 자바 클래스 라이브러리로 연결하기위한 책임이 있습니다.
  • JVM은 Java 응용 프로그램들이 실행해야하고 장치 또는 클라우드 환경에서 잘 수행 할 자원이 책임이 있습니다.
  • JRE는 주로 그 다른 구성 요소에 대한 컨테이너이며, 자신의 활동을 조율 할 책임이있다.

다음 섹션에서는 이러한 구성 요소가 함께 작동하는 방식에 대해 더 자세히 알아볼 것입니다.

JDK, JRE 및 JVM 설치

설치 관점에서 보면 JDK를 다운로드 할 때마다 버전 호환 JRE가 포함되며 해당 JRE에는 기본 JVM이 포함됩니다. 또한 JDK와 별도로 JRE를 다운로드 할 수 있으며 다양한 JVM 중에서 선택할 수 있습니다. 기본값은 대부분의 구현, 특히 Java로 시작할 때 잘 작동합니다.

런타임 환경이란 무엇입니까?

소프트웨어 프로그램은 실행해야하며이를 위해서는 실행할 환경이 필요합니다. 런타임 환경은 클래스 파일을로드하고이를 실행할 메모리 및 기타 시스템 리소스에 대한 액세스가 있는지 확인합니다. 과거에는 대부분의 소프트웨어가 운영 체제 (OS)를 런타임 환경으로 사용했습니다. 이 프로그램은 어떤 컴퓨터에서든 실행되었지만 리소스 액세스를 위해 운영 체제 설정에 의존했습니다. 이 경우 리소스는 메모리 및 프로그램 파일 및 종속성과 같은 것입니다. Java Runtime Environment는 최소한 Java 프로그램의 경우 모든 것을 변경했습니다.

자바 용 WORA

처음 도입되었을 때 Java의 "한 번 작성하면 어디서나 실행"원칙이 혁신적인 것으로 간주되었지만 오늘날 대부분의 소프트웨어 시스템에서 표준으로 채택되었습니다.

자바 런타임 환경

소프트웨어는 시스템 하드웨어 위에있는 일련의 계층으로 볼 수 있습니다. 각 계층은 상위 계층에서 사용 (필요한) 서비스를 제공합니다. Java Runtime Environment는 컴퓨터의 운영 체제 위에서 실행되는 소프트웨어 계층으로, Java와 관련된 추가 서비스를 제공합니다.

JRE는 다양한 운영 체제를 부드럽게 처리하여 Java 프로그램이 수정없이 거의 모든 OS에서 실행될 수 있도록합니다. 또한 부가 가치 서비스를 제공합니다. 자동 메모리 관리는 JRE의 가장 중요한 서비스 중 하나로 프로그래머가 메모리 할당 및 재 할당을 수동으로 제어 할 필요가 없도록합니다.

간단히 말해 JRE는 Java 프로그램을위한 일종의 메타 OS입니다. 이는 기본 운영 체제를 Java 애플리케이션 실행을위한 일관된 플랫폼으로 추상화하는 추상화 의 고전적인 예입니다 .

JRE가 JVM과 작동하는 방식

Java Virtual Machine은 라이브 Java 프로그램을 실행하는 실행중인 소프트웨어 시스템입니다. JRE는 Java 코드를 가져 와서 필요한 라이브러리와 결합하고이를 실행하기 위해 JVM을 시작하는 온 디스크 시스템입니다.

JRE에는 Java 프로그램을 실행하는 데 필요한 라이브러리와 소프트웨어가 포함되어 있습니다. 예를 들어, Java 클래스 로더는 Java Runtime Environment의 일부입니다. 이 중요한 소프트웨어는 컴파일 된 Java 코드를 메모리에로드하고 코드를 적절한 Java 클래스 라이브러리에 연결합니다.

방금 설명한 계층화 된보기에서 JVM은 JRE에 의해 생성됩니다. 패키지 관점에서 JRE에는 그림 1에 표시된 것처럼 JVM이 포함됩니다.

매튜 타이슨

JRE 설치 및 사용

JRE에는 개념적인 측면이 있지만 실제로는 Java 프로그램을 실행하는 목적으로 컴퓨터에 설치된 소프트웨어 일뿐입니다. 개발자는 Java 프로그램을 개발하고 실행하는 데 사용하는 플랫폼 구성 요소이기 때문에 대부분 JDK 및 JVM으로 작업하게됩니다. Java 응용 프로그램 사용자는 해당 프로그램을 실행할 수있는 JRE에 더 많이 관여하게됩니다.

대부분의 경우 컴퓨터에는 Java가 설치되어 있으며 JRE도 함께 ​​제공됩니다. 수동으로 설치하거나 업그레이드해야하는 경우 Oracle에서 현재 JRE 버전을 다운로드 할 수 있습니다.

JRE 버전

Java Runtime Environment는 Java의 새 버전마다 업데이트되며 해당 버전 번호는 Java 플랫폼 버전 관리 시스템과 일치하므로 예를 들어 JRE 1.8은 Java 8을 실행합니다. 다양한 JDK 패키지 중에서 선택할 수 있습니다 (예 : Enterprise Edition 또는 Standard Edition)은 JRE의 경우가 아닙니다. 대부분의 컴퓨터는 Java SE 용으로 개발 된 JRE를 실행하며, 개발 방법에 관계없이 모든 Java 애플리케이션을 실행할 수 있습니다. 대부분의 모바일 장치에는 JRE for Java ME가 함께 제공되며, 이는 모바일 장치에 사전 설치되어 있으며 다운로드 할 수 없습니다.

JRE가 설치되면 명령 줄에서를 입력하여 상호 작용할 수 있습니다  java -version. 그러면 설치된 버전이 표시됩니다. POSIX 시스템에서는 which java.

DevOps의 JRE

JRE는 개발 단계에서 그다지 눈에 띄지 않으며 주로 선택한 OS 또는 IDE에서 프로그램을 실행합니다. JRE는 모니터링 및 구성에 사용되기 때문에 devop 및 시스템 관리에서 약간 더 두드러진 역할을합니다.

기본적으로 JRE는 Java 애플리케이션의 특성을 구성하고 제어하는 ​​데 사용할 "노브"를 제공합니다. 메모리 사용량은 시스템 관리의 가장 좋은 예입니다. 메모리 사용량은 항상 중요하지만 클라우드 구성에서 중요하며 devops는 클라우드 기반 기술입니다. devops 환경에서 작업 중이거나 devops로 분기하는 데 관심이있는 경우 Java 메모리가 작동하는 방식과 JRE에서 모니터링되는 방식을 이해하는 것이 좋습니다.

Devops 또는 sysadmin?

Devops 는 새로운 용어이지만 개발과 운영 간의 상호 운용성 인 수십 년 동안 사실 인 것을 설명합니다. 이러한 의미에서 devops 는 운영 또는 시스템 관리라고 부르던 새로운 용어 일뿐 입니다. sysadmin과 마찬가지로 devops의 중요한 측면은 소프트웨어를 실행하는 데 필요한 시스템을 관리하는 것입니다. JRE 관리는 Java 애플리케이션을 실행하는 시스템 관리의 일부입니다.

자바 메모리와 JRE

Java 메모리는 힙, 스택 및 메타 스페이스 (이전에는 permgen이라고 함)의 세 가지 구성 요소로 구성됩니다.

  • Metaspace 는 Java가 클래스 정의와 같은 프로그램의 변하지 않는 정보를 유지하는 곳입니다.
  • 힙 공간 은 Java가 가변 내용을 유지하는 곳입니다.
  • 스택 공간 은 Java가 함수 실행 및 변수 참조를 저장하는 곳입니다.

자바 8의 메모리 관리

Java 8까지 메타 스페이스는 permgen으로 알려졌습니다. 훨씬 멋진 이름 일뿐만 아니라 메타 공간은 개발자가 Java의 메모리 공간과 상호 작용하는 방식에 중요한 변화입니다. 이전에는 명령 java -XX:MaxPermSize을 사용하여 permgen 공간의 크기를 모니터링했습니다. Java 8부터 Java는 프로그램의 메타 요구를 수용하기 위해 자동으로 메타 공간의 크기를 늘립니다. Java 8은 또한 MaxMetaspaceSize메타 공간 크기를 제한하는 데 사용할 수 있는 새로운 플래그를 도입했습니다 .

다른 메모리 옵션 인 힙 및 스택은 Java 8에서 동일하게 유지됩니다.

힙 공간 구성

힙 공간 은 Java 메모리 시스템에서 가장 동적 인 부분입니다. -Xms-Xmx플래그를 사용하여 Java에 힙 시작 크기와 힙 크기를 알릴 수 있습니다. 특정 프로그램 요구에 맞게 이러한 플래그를 조정하는 방법을 이해하는 것은 Java에서 메모리 관리의 중요한 측면입니다. 가장 효율적인 가비지 콜렉션을 얻을 수있을만큼 힙을 충분히 크게 만드는 것이 이상적입니다. 즉, 프로그램이 실행될 수 있도록 충분한 메모리를 허용하고 싶지만 필요 이상으로 커지는 것을 원하지 않습니다.

스택 공간 구성

스택 공간 은 함수 호출과 변수 참조가 대기하는 곳입니다. 스택 공간은 Java 프로그래밍에서 두 번째로 악명 높은 오류의 원인입니다. 스택 오버플로 예외 (첫 번째는 널 포인터 예외)입니다. 스택 오버 플로우 예외가 너무 많이의 소유되어 있기 때문에 당신이 스택 공간이 부족 한 것을 나타냅니다. 일반적으로 메서드 또는 메서드가 순환 방식으로 서로를 호출하면 스택 오버플로가 발생하여 계속 증가하는 함수 호출을 스택에 할당합니다.

당신이 사용하는 -Xss스택의 시작 크기를 구성하는 스위치. 그런 다음 스택은 프로그램의 필요에 따라 동적으로 증가합니다.

자바 애플리케이션 모니터링

애플리케이션 모니터링은 JVM의 기능이지만 JRE는 모니터링에 필요한 기준 인 구성 옵션을 제공합니다. 클래식 (예 : Unix 명령 top)에서 Oracle의 인프라 모니터링과 같은 정교한 원격 모니터링 솔루션에 이르기까지 Java 애플리케이션을 모니터링하는 데 다양한 도구를 사용할 수 있습니다 .

이러한 옵션 사이에는 실행중인 JVM을 검사 할 수있는 VisualVM과 같은 시각적 프로파일 러가 있습니다. 이러한 도구를 사용하면 핫스팟 및 메모리 누수를 추적하고 시스템의 전체 메모리 사용량을 확인할 수 있습니다.

결론

Java Runtime Environment는 JVM이 실행할 Java 응용 프로그램을로드하는 온 디스크 프로그램입니다. JRE는 Java Development Kit를 다운로드 할 때 기본적으로 포함되며 각 JRE에는 핵심 Java 클래스 라이브러리, Java 클래스 로더 및 Java Virtual Machine이 포함됩니다. 특히 클라우드 및 devops 환경에서 작업 할 때 JVM, JDK 및 JRE가 상호 작용하는 방식을 이해하면 도움이됩니다. 이러한 환경에서 JRE는 기존 Java 애플리케이션 개발에서보다 모니터링 및 구성에서 더 강력한 역할을합니다.

"JRE 란 무엇입니까? Java Runtime Environment 소개"라는이 스토리는 원래 JavaWorld에서 게시했습니다.