☕ 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:

  1. Compreender a arquitetura da plataforma Java (JDK, JRE e JVM) e o conceito de portabilidade (Write Once, Run Anywhere).
  2. Diferenciar o código fonte (.java) do código intermediário empacotado em Bytecode (.class).
  3. Configurar o ambiente de desenvolvimento Java 17+ LTS no VS Code ou IntelliJ IDEA.
  4. 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:

  1. Sensibilidade a Caixas (Case Sensitive): System é diferente de system.
  2. Método Main: O método public static void main(String[] args) é a assinatura exata exigida pela JVM para iniciar a execução.
  3. 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)

  1. Qual a função da JVM (Java Virtual Machine) no ciclo de vida de um aplicativo Java?
  2. 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 Sistema no arquivo Main.java)?

🥈 Nível Prata (Aplicação)

  1. Crie um arquivo FichaAluno.java que exiba no console os dados formatados de um aluno (Nome, Matrícula, Curso e Status da Matrícula) utilizando chamadas System.out.println().

🥇 Nível Ouro (Desafio)

  1. Escreva um programa DadosComputador.java que consulte as propriedades do sistema através da classe System.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
  1. 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.
  2. 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) ➡️