Java virtual machine
A máquina virtual Java™ é um ambiente de tempo de execução que pode ser adicionado a um navegador da Web ou a qualquer sistema operacional, como o IBM i. A máquina virtual Java executa instruções que um compilador Java gera. Ele consiste em um interpretador e tempo de execução de bytecode que permitem que os arquivos de classe Java sejam executados em qualquer plataforma, independentemente da plataforma em que foram originalmente desenvolvidos.
O carregador de classe e o gerenciador de segurança, que fazem parte do tempo de execução Java, insulam código que vem de outra plataforma. Eles também podem restringir quais recursos do sistema são permitidos para serem acessados por cada classe que é carregada.
Além de carregar e executar os bytecodes, a máquina virtual Java inclui um coletor de lixo que gerencia a memória. A coleta de lixo do Java é executada ao mesmo tempo que o carregamento e a interpretação dos bytecodes.
Java Runtime Environment
O ambiente de tempo de execução Java começa sempre que você insere o comando Run Java (RUNJVA) ou o comando JAVA na linha de comando IBM i . Como o ambiente Java é multiencadeado, é necessário executar a máquina virtual Java em um job que suporte threads, como um job de batch imediato (BCI). Como ilustrado na figura a seguir, após o início da máquina virtual Java, threads adicionais podem iniciar no job em que o coletor de lixo é executado.

Também é possível iniciar o ambiente de tempo de execução Java usando o comando java em Qshell a partir do Qshell Interpreter. Neste ambiente, o Qshell Interpreter está rodando em um job BCI que está associado a um trabalho interativo. O ambiente de tempo de execução Java começa no job que está executando o Qshell Interpreter.

Quando o ambiente de tempo de execução Java começa a partir de um trabalho interativo, o Java Shell Display é mostrado. Esta exibição fornece uma linha de entrada para inserir dados no fluxo System.in , bem como exibir dados gravados no fluxo System.out e no fluxo System.err .
interpretador Java
O interpretador Java é a parte da máquina virtual Java que interpreta arquivos de classe Java para uma determinada plataforma de hardware. O interpretador Java decodifica cada bytecode e executa a operação correspondente.