Conceitos Fundamentais de Java e JVM
Classificado em Computação
Escrito em em português com um tamanho de 8,2 KB.
Conceitos Fundamentais de Java: JVM, Garbage Collector, JIT e HotSpot
1. Explique o que é a JVM (Java Virtual Machine), Garbage Collector, JIT e HotSpot.
- JVM (Java Virtual Machine): É um programa que carrega e executa aplicativos Java, convertendo bytecodes em código executável de máquina. A JVM gerencia os aplicativos durante a execução. Graças à JVM, programas Java podem funcionar em qualquer plataforma (hardware e software) que possua uma versão da JVM, tornando-os independentes da plataforma.
- Garbage Collector: Responsável por liberar espaço na memória, removendo objetos que não estão mais sendo utilizados.
- JIT (Just-In-Time Compiler): Técnica utilizada para otimizar o desempenho da JVM, atuando como um compilador em tempo de execução.
- HotSpot: Tecnologia da JVM que detecta partes do código que são executadas com frequência (geralmente dentro de loops) e as otimiza para melhor desempenho.
Variáveis de Ambiente Java: JAVA_HOME, PATH e CLASSPATH
2. Quais são as três variáveis de ambiente que devem ser criadas ou atualizadas na instalação do Java? Explique para que serve cada uma delas.
- JAVA_HOME: Define o diretório raiz da instalação do Java. É usada para configurar outras variáveis e referenciada por aplicativos e frameworks Java.
- PATH: Lista de diretórios que contêm aplicativos executáveis. Ao adicionar o diretório de executáveis do Java ao PATH, podemos chamá-los de qualquer local no computador.
- CLASSPATH: Indica à JVM onde procurar as bibliotecas (classes Java) necessárias para a execução de um programa.
Classloader e Bytecode Verifier
3. Explique o que faz o Classloader e o Bytecode Verifier.
- Classloader: Responsável por carregar todas as classes necessárias para a execução do programa Java.
- Bytecode Verifier: Verifica a integridade do bytecode para garantir que ele seja válido e seguro:
- Testa o formato dos fragmentos de código.
- Verifica se há códigos ilegais.
Comandos Java: java, javac, javadoc e javap
4. Para que servem os comandos "java", "javac", "javadoc" e "javap"?
- java: Executa aplicações Java compiladas (bytecodes).
- javac: Compilador de código fonte Java que gera bytecodes (.class).
- javadoc: Gera documentação a partir do código fonte Java.
- javap: Desmontador Java, que exibe informações sobre os arquivos de classe (bytecodes).
Processo de Criação e Execução de um Programa Java
5. Explique o processo para se criar um programa Java, desde a edição do código até a execução do programa.
- O código-fonte é criado em um editor e salvo com a extensão .java.
- O compilador (javac) converte o código-fonte em bytecodes, armazenados em arquivos .class.
- O Classloader carrega os bytecodes na memória.
- O Bytecode Verifier verifica a integridade dos bytecodes.
- A JVM interpreta e executa os bytecodes.
- O HotSpot otimiza a execução de partes do código frequentemente executadas.
O processo de compilação em Java ocorre em duas fases:
- Compilação do código-fonte para bytecode, garantindo portabilidade entre diferentes plataformas.
- Durante a execução, a JVM traduz os bytecodes para linguagem de máquina específica da plataforma.
Ambientes JSDK e JRE
6. Explique o que são e o que compõem os ambientes JSDK e JRE.
- JDK (Java Development Kit): Kit de desenvolvimento que permite criar sistemas de software na plataforma Java. Inclui o JRE, compilador, ferramentas de desenvolvimento, etc.
- JRE (Java Runtime Environment): Ambiente de execução Java. Permite executar aplicações Java compiladas (bytecodes). Inclui a JVM, bibliotecas e outros componentes necessários.
Bytecode: Definição e Importância
7. O que é Bytecode e qual sua importância?
Bytecode é o resultado da compilação de arquivos fonte Java. É uma representação intermediária do código, em uma linguagem "pseudo-máquina", que a JVM pode interpretar e transformar em linguagem de máquina para execução. A importância do bytecode reside na portabilidade: o mesmo bytecode pode ser executado em qualquer plataforma que tenha uma JVM.
Java: Multiplataforma
8. Por que podemos dizer que o Java é multiplataforma? E o que é preciso ter numa plataforma para que eu execute um aplicativo Java nela?
Java é multiplataforma porque o bytecode pode ser executado em qualquer sistema operacional que possua uma JVM. A JVM é fornecida para várias plataformas e executa o bytecode da mesma forma em todas elas. Para executar um aplicativo Java, é necessário ter a JVM instalada na plataforma.
Vantagens da Linguagem Java Orientada a Objetos
9. Cite e justifique 4 motivos para se usar a linguagem Java orientada a objeto.
- Classes: Representam um conjunto de objetos com características semelhantes, promovendo a organização e reutilização de código.
- Associação: Mecanismo pelo qual um objeto utiliza os recursos de outro, permitindo a construção de sistemas complexos a partir de interações entre objetos.
- Métodos: Definem as ações que os objetos podem realizar, encapsulando o comportamento dos objetos.
- Encapsulamento: Separa os aspectos internos e externos de um objeto, protegendo os dados e simplificando o uso dos objetos.
Compilação vs. Interpretação em Java
10. Qual a diferença entre compilação e interpretação? Explique por que o Java leva vantagem em ser compilado e interpretado.
- Linguagem Compilada: O código-fonte é traduzido diretamente para linguagem de máquina (código executável) pelo compilador, antes da execução.
- Linguagem Interpretada: O código-fonte é executado linha por linha por um interpretador, que traduz cada instrução para linguagem de máquina em tempo de execução.
Java combina compilação e interpretação. O código-fonte é compilado para bytecode (uma forma intermediária), e o bytecode é interpretado pela JVM. Isso oferece as vantagens de ambas as abordagens:
- Portabilidade: O bytecode é independente da plataforma.
- Desempenho: A JVM pode otimizar a execução do bytecode em tempo de execução (JIT).
Siglas: IDE, API e GUI
11. Explique as siglas IDE, API e GUI.
- IDE (Integrated Development Environment): Ambiente de Desenvolvimento Integrado. Software que fornece ferramentas para auxiliar no desenvolvimento de software (editor de código, compilador, depurador, etc.).
- API (Application Programming Interface): Interface de Programação de Aplicativos. Conjunto de rotinas, protocolos e ferramentas para construir software e aplicativos.
- GUI (Graphical User Interface): Interface Gráfica do Usuário. Permite a interação com dispositivos digitais através de elementos gráficos (ícones, botões, janelas, etc.).
Redução de Custos de TI com Java
12. Por que motivo podemos afirmar que a tecnologia Java permitiu a redução nos custos de T.I pelas empresas?
Java foi projetado para permitir o desenvolvimento de aplicações portáteis e de alto desempenho para uma ampla variedade de plataformas. Ao disponibilizar aplicações entre ambientes heterogêneos, as empresas podem:
- Fornecer mais serviços.
- Aumentar a produtividade.
- Melhorar a comunicação e colaboração.
- Reduzir o custo de propriedade das aplicações.