JVM(Java Virtual Machine)

JVM(Java™ Virtual Machine)은 IBM® i와 같은 오퍼레이팅 시스템이나 웹 브라우저에 추가할 수 있는 런타임 환경입니다. JVM(Java Virtual Machine)은 Java 컴파일러가 생성하는 명령어를 실행합니다. JVM은 원래 개발된 플랫폼에 상관없이 어떤 플랫폼에서도 Java 클래스 파일이 실행되도록 하는 바이트코드 인터프리터 및 런타임으로 구성됩니다.

Java 런타임의 일부인 클래스 로더 및 보안 관리자는 다른 플랫폼에서 제공되는 코드를 격리합니다. 또한 로드되는 각 클래스가 액세스할 수 있는 시스템 자원을 제한할 수도 있습니다.

참고: Java 애플리케이션은 제한되지 않으며, 애플릿만 제한됩니다. 애플리케이션은 시스템 자원에 자유롭게 액세스하여 원시 메소드를 사용할 수 있습니다. 대부분의 IBM Developer Kit for Java 프로그램은 애플리케이션입니다.

바이트코드를 로드 및 실행하는 것 외에도, JVM(Java Virtual Machine)은 메모리를 관리하는 가비지 콜렉터를 포함합니다. Java 가비지 콜렉션은 바이트코드의 로드 및 해석과 동시에 실행됩니다.

Java 런타임 환경

Java 런타임 환경은 IBM i 명령행에서 RUNJVA(Java 실행) 명령이나 JAVA 명령을 입력할 때마다 시작됩니다. Java 환경이 멀티스레드되므로, 스레드를 지원하는 작업(예: BCI(batch immediate) 작업)에서 JVM(Java Virtual Machine)을 실행해야 합니다. 다음 그림에 설명된 대로, JVM(Java Virtual Machine)이 시작된 후 가비지 콜렉터가 실행되는 작업에서 추가 스레드가 시작될 수 있습니다.

그림 1: RUNJVA 또는 JAVA CL 명령을 사용할 때 일반 Java 환경

이 그래픽은 IBM i 명령행에서
RUNJVA 또는 JAVA CL 명령을 사용하여 Java 런타임 환경을 시작하는 예를
보여줍니다.

Qshell 인터프리터의 Qshell에서 java 명령을 사용하여 Java 런타임 환경을 시작할 수도 있습니다. 이 환경에서, Qshell 인터프리터는 대화식 작업과 연관되는 BCI 작업에서 실행 중입니다. Java 런타임 환경은 Qshell 인터프리터에서 실행 중인 작업에서 시작합니다.

그림 2: Qshell에서 java 명령을 사용할 때 Java 환경

이 그래픽은 Qshell 인터프리터의 Qshell에서 java 명령을 사용하여 Java 런타임 환경을
시작하는 예를 보여줍니다.

Java 런타임 환경이 대화식 작업에서 시작될 때, Java 쉘 표시 화면이 표시됩니다. 이 표시 화면은 System.in stream에 데이터를 입력하고 System.out 스트림과 System.err 스트림에 기록되는 데이터를 표시하는 입력 행을 제공합니다.

Java 인터프리터

Java 인터프리터는 특정 하드웨어 플랫폼에 대한 Java 클래스 파일을 해석하는 JVM(Java Virtual Machine)의 일부입니다. Java 인터프리터는 각 바이트코드를 해독하고 해당되는 조작을 수행합니다.