Questão de Programação — C — Quadrix 2025
- Código
- qg595097
- Banca
- Quadrix
- Órgão
- CFO
- Ano
- 2025
- Nível
- Médio
- Cargo
- Técnico em Tecnologia da Informação
- CCerto
- EErrado
GabaritoE — Errado
Gabarito: E — ERRADO. A afirmação está incorreta porque a compilação de código Java não gera código de máquina executado diretamente pelo sistema operacional; ela gera um bytecode (código intermediário) que é executado pela Máquina Virtual Java (JVM), que por sua vez interpreta ou compila (JIT) esse bytecode para o código de máquina do sistema hospedeiro. Isso difere de linguagens como C ou C++, que compilam diretamente para código de máquina nativo.
A compilação é o processo de traduzir o código-fonte inteiro para uma forma executável antes da execução. Em linguagens como C e C++, o compilador gera diretamente código de máquina específico para uma plataforma (processador + sistema operacional), que pode ser executado diretamente pelo sistema operacional. Já em Java, o compilador (javac) traduz o código-fonte para um código intermediário chamado bytecode, que não é código de máquina de nenhuma plataforma específica. Esse bytecode é executado pela JVM, que é um software que emula uma máquina virtual. A JVM, ao executar o bytecode, pode interpretá-lo ou compilá-lo em tempo de execução usando a técnica JIT (Just-In-Time), convertendo o bytecode em código de máquina do sistema hospedeiro. Portanto, o programa Java não é executado diretamente pelo sistema operacional, mas sim pela JVM, que age como uma camada intermediária.
Essa arquitetura confere a portabilidade característica do Java: o mesmo bytecode pode ser executado em qualquer plataforma que possua uma JVM, sem necessidade de recompilação. Em contraste, um programa compilado em C para Windows não roda diretamente em Linux, pois o código de máquina é específico da plataforma. A pegadinha da questão está em afirmar que Java compila para código de máquina como C/C++, ignorando a existência da JVM e do bytecode.
Guarde a distinção central: linguagens compiladas para código nativo (C, C++) versus linguagens compiladas para código intermediário executado por uma máquina virtual (Java, C#). É exatamente essa fronteira que a questão explora.
A afirmação está errada porque a compilação de Java gera bytecode, não código de máquina nativo. O bytecode é executado pela JVM, que o interpreta ou compila em tempo de execução (JIT) para o código de máquina do sistema operacional. Diferentemente de C/C++, que compilam diretamente para código de máquina executável pelo sistema operacional, Java depende da JVM como camada intermediária. Portanto, a premissa de que o código Java é executado diretamente pelo sistema operacional é falsa.
Gabarito: E — ERRADO.
Link permanente: /questoes/qg595097