O Java Runtime Environment (JRE) é uma camada de software executada no sistema operacional de um computador, fornecendo serviços adicionais de que um programa Java específico precisa para ser executado. JRE é um dos três componentes inter-relacionados que formam uma trifeta para desenvolver e executar aplicativos Java. Os outros dois são:
- Java Development Kit (JDK): Um conjunto de ferramentas para desenvolver aplicativos Java. Os JDKs são escolhidos pelos desenvolvedores por versão e edição do Java, como o Java Enterprise Edition. Independentemente da versão ou edição, o JDK sempre inclui um JRE compatível.
- Java Virtual Machine (JVM): executa aplicativos Java ao vivo. Cada JRE inclui uma JVM padrão.
O JRE combina o código Java criado usando o JDK com as bibliotecas necessárias para executá-lo em uma JVM. Em seguida, é criada uma instância da JVM que executa o programa resultante.
O JRE fornece muitas bibliotecas de integração, como Java IDL, Java Database Connectivity e Java Naming and Directory Interface para ajudar os desenvolvedores a criar conexões de dados contínuas entre aplicativos e serviços. JRE também inclui pacotes que são fundamentais para o design de aplicativos. Alguns pacotes incluem estrutura de coleções, utilitários de simultaneidade, API de preferências e Java Archive.
Como funciona o Java Runtime Environment
Para criar um ambiente de tempo de execução, JDK e JRE interagem para permitir uma execução tranquila de aplicativos baseados em Java em qualquer sistema operacional. Os seguintes processos ocorrem em tempo de execução:
ClassLoader
O Java ClassLoader carrega dinamicamente todas as classes necessárias para executar um programa Java. Ele fornece segurança separando os namespaces do sistema de arquivos local do que é importado pela rede. Como as classes Java são carregadas na memória apenas quando necessário, o JRE usa ClassLoader para processar essa demanda.
Verificador de bytecode
O verificador de bytecode garante o formato e a precisão do código Java antes de ser passado para o interpretador. Ele também verifica se há código ilegal, que é um código que viola os direitos de acesso a objetos ou a implementação de ponteiros. Se um código estiver em violação, a classe será considerada corrompida e não será carregada.
Intérprete
Depois que o bytecode é verificado com sucesso, em tempo de execução ele é carregado, verificado e executado pelo interpretador. O interpretador cria uma instância da JVM que permite que o programa seja executado nativamente no hardware subjacente.