☕ Capítulo 01: Introdução ao Java 17+, JVM, Bytecode, JDK e Ambiente de Desenvolvimento
🎯 Objetivos da Aula
Ao final desta aula, você será capaz de:
- Compreender a arquitetura da plataforma Java (JDK, JRE e JVM) e o conceito de portabilidade (Write Once, Run Anywhere).
- Diferenciar o código fonte (
.java) do código intermediário empacotado em Bytecode (.class). - Configurar o ambiente de desenvolvimento Java 17+ LTS no VS Code ou IntelliJ IDEA.
- Escrever, compilar e executar uma aplicação Java contendo o método estático principal
public static void main(String[] args).
🧠 1. Arquitetura da Plataforma Java
O Java é uma linguagem fortemente tipada e orientada a objetos que utiliza um modelo híbrido de compilação e interpretação.
flowchart TD subgraph DevTime ["1. Tempo de Desenvolvimento"] Source["📄 Arquivo.java\n(Código Fonte Java)"] -->|Compilador javac| Bytecode["📦 Arquivo.class\n(Bytecode Intermediário)"] end subgraph RunTime ["2. Tempo de Execução (Qualquer SO)"] Bytecode --> JVM_Win["💻 JVM Windows\n(JIT Compiler)"] Bytecode --> JVM_Lin["🐧 JVM Linux\n(JIT Compiler)"] Bytecode --> JVM_Mac["🍎 JVM macOS\n(JIT Compiler)"] end
Componentes Fundamentais da Plataforma:
- JDK (Java Development Kit): Kit de desenvolvimento contendo as ferramentas do desenvolvedor, incluindo o compilador
javac. - JRE (Java Runtime Environment): Ambiente mínimo de execução necessário para rodar aplicações Java já compiladas.
- JVM (Java Virtual Machine): A máquina virtual que lê o Bytecode (
.class) e o traduz para instruções de código de máquina do sistema operacional hospedeiro.
💻 2. Anatomia de uma Classe Java (PrimeiroPrograma.java)
Todo código executável em Java deve residir obrigatoriamente dentro de uma classe, cujo nome deve coincidir exatamente com o nome do arquivo .java.
// O nome da classe DEVE ser identico ao nome do arquivo (PrimeiroPrograma.java)
public class PrimeiroPrograma {
// Ponto de entrada obrigatorio de execucao do aplicativo
public static void main(String[] args) {
// Saida padrao de texto no console
System.out.println("=========================================");
System.out.println(" BEM-VINDO AO CURSO DE JAVA 17+ POO ");
System.out.println("=========================================");
System.out.println(" Status: JVM Inicializada com Sucesso.");
System.out.println("=========================================");
}
}Regras de Sintaxe em Java:
- Sensibilidade a Caixas (Case Sensitive):
Systemé diferente desystem. - Método Main: O método
public static void main(String[] args)é a assinatura exata exigida pela JVM para iniciar a execução. - Ponto e Vírgula (
;): Obrigatório ao final de cada instrução de código.
💻 3. Compilação e Execução via Linha de Comando
# 1. Compilar o arquivo de codigo fonte .java em Bytecode .class
$ javac PrimeiroPrograma.java
# 2. Executar a classe compilada na JVM (sem a extensão .class)
$ java PrimeiroPrograma⚔️ 4. Desafios Práticos (Exercícios 30/50/20)
🥉 Nível Bronze (Fixação)
- Qual a função da JVM (Java Virtual Machine) no ciclo de vida de um aplicativo Java?
- O que acontece se o nome da classe pública dentro do arquivo não for idêntico ao nome do arquivo no sistema operacional (ex.: classe
Sistemano arquivoMain.java)?
🥈 Nível Prata (Aplicação)
- Crie um arquivo
FichaAluno.javaque exiba no console os dados formatados de um aluno (Nome, Matrícula, Curso e Status da Matrícula) utilizando chamadasSystem.out.println().
🥇 Nível Ouro (Desafio)
- Escreva um programa
DadosComputador.javaque consulte as propriedades do sistema através da classeSystem.getProperty()e imprima no console a versão da JVM instalada e o nome do Sistema Operacional hospedeiro.
💡 Gabaritos Sanfonados de Resposta
💡 Ver Gabarito do Nível Bronze
- A JVM é responsável por carregar o Bytecode (
.class), verificar a segurança das instruções e interpretá-las/compilá-las (via JIT) para o código de máquina nativo do SO. - O compilador Java (
javac) gera um erro fatal de compilação (class Sistema is public, should be declared in a file named Sistema.java).
💡 Ver Gabarito do Nível Prata & Ouro (Código Java)
public class DadosComputador {
public static void main(String[] args) {
String javaVersion = System.getProperty("java.version");
String osName = System.getProperty("os.name");
System.out.println("=========================================");
System.out.println(" INFORMACOES DO AMBIENTE RUNTIME JAVA ");
System.out.println("=========================================");
System.out.println(" Versao do Java (JDK/JVM) : " + javaVersion);
System.out.println(" Sistema Operacional : " + osName);
System.out.println("=========================================");
}
}📚 Referências Teóricas Oficiais
- ORACLE JAVA DOCUMENTATION. The Java Language Specification — Java SE 17 Edition (Oracle America, Inc.).
- GOSLING, James et al.. The Java Programming Language. 4th Edition. Addison-Wesley, 2005.
⬅️ Voltar ao Sumário da Fase 07 | Saída e Tipos Primitivos) ➡️