No passado, eu usei o C ++ como uma linguagem de programação. Eu sei que o código escrito em C ++ passa por um processo de compilação até que se torne código de objeto "código de máquina".
Gostaria de saber como o Java funciona nesse sentido. Como o usuário escreve o código Java executado pelo computador?
java
compilation
interpretation
Nome em Exibição
fonte
fonte
Respostas:
As implementações Java geralmente usam um processo de compilação em duas etapas. O código-fonte Java é compilado no bytecode pelo compilador Java. O bytecode é executado por uma Java Virtual Machine (JVM). As JVMs modernas usam uma técnica chamada compilação Just-in-Time (JIT) para compilar o bytecode para instruções nativas entendidas pela CPU do hardware em tempo real no tempo de execução.
Algumas implementações da JVM podem optar por interpretar o bytecode em vez de o JIT compilá-lo no código da máquina e executá-lo diretamente. Embora isso ainda seja considerado um "intérprete", é bem diferente dos intérpretes que lêem e executam o código-fonte de alto nível (ou seja, neste caso, o código-fonte Java não é interpretado diretamente, o bytecode, saída do compilador Java).
É tecnicamente possível compilar o Java com código nativo antecipadamente e executar o binário resultante. Também é possível interpretar o código Java diretamente.
Para resumir, dependendo do ambiente de execução, o bytecode pode ser:
fonte
O código escrito em Java é:
Quando o java interpreta o bytecode e quando o compila? O código do aplicativo é inicialmente interpretado, mas a JVM monitora quais seqüências de bytecode são frequentemente executadas e as converte em código de máquina para execução direta no hardware. Para o bytecode, que é executado apenas algumas vezes, isso economiza o tempo de compilação e reduz a latência inicial; para bytecode frequentemente executado, a compilação JIT é usada para executar em alta velocidade, após uma fase inicial de interpretação lenta. Além disso, como um programa passa a maior parte do tempo executando uma minoria de seu código, o tempo de compilação reduzido é significativo. Finalmente, durante a interpretação inicial do código, as estatísticas de execução podem ser coletadas antes da compilação, o que ajuda a executar uma melhor otimização.
fonte
Os termos "linguagem interpretada" ou "linguagem compilada" não fazem sentido, porque qualquer linguagem de programação pode ser interpretada e / ou compilada.
Quanto às implementações existentes de Java, a maioria envolve uma etapa de compilação para o bytecode , portanto, envolve a compilação. O tempo de execução também pode carregar o bytecode dinamicamente, portanto, sempre é necessária alguma forma de interpretador de bytecode. Esse intérprete pode, por sua vez, usar a compilação para código nativo internamente.
Atualmente, a compilação just-in-time parcial é usada para muitos idiomas que antes eram considerados "interpretados", por exemplo, JavaScript.
fonte
O Java é compilado no bytecode, que entra na Java VM, que o interpreta.
fonte
Java é uma linguagem de programação compilada, mas, em vez de compilar diretamente para código de máquina executável, compila para um formato binário intermediário chamado código de byte da JVM. O código de bytes é então compilado e / ou interpretado para executar o programa.
fonte
Tipo de ambos. Primeiro, o Java compilado (alguns preferem dizer "traduzido") para o bytecode, que então é compilado ou interpretado dependendo do humor do JIT.
fonte
Java faz compilação e interpretação,
Em Java, os programas não são compilados em arquivos executáveis ; eles são compilados no bytecode (como discutido anteriormente), que a JVM (Java Virtual Machine) interpreta / executa em tempo de execução. O código-fonte Java é compilado no bytecode quando usamos o compilador javac. O bytecode é salvo no disco com a extensão de arquivo .class .
Quando o programa deve ser executado,
o bytecode é convertido,o bytecode pode ser convertido, usando o compilador just-in-time (JIT). O resultado é um código de máquina que é então alimentado na memória e executado.Javac é o compilador Java que compila o código Java no Bytecode. A JVM é uma Java Virtual Machine que executa / interpreta / converte o Bytecode em código de máquina nativo. Em Java, embora seja considerada uma linguagem interpretada, ela pode usar a compilação JIT (Just-in-Time) quando o bytecode estiver na JVM. O compilador JIT lê os bytecodes em muitas seções (ou na íntegra, raramente) e os compila dinamicamente no código da máquina, para que o programa possa executar mais rapidamente e, depois, armazenado em cache e reutilizado posteriormente sem precisar ser recompilado. Portanto, a compilação JIT combina a velocidade do código compilado com a flexibilidade da interpretação.
Uma linguagem interpretada é um tipo de linguagem de programação para a qual a maioria de suas implementações executa instruções direta e livremente, sem antes compilar um programa em instruções de linguagem de máquina. O intérprete executa o programa diretamente, traduzindo cada instrução em uma sequência de uma ou mais sub-rotinas já compiladas em código de máquina.
Uma linguagem compilada é uma linguagem de programação cujas implementações são tipicamente compiladores (tradutores que geram código de máquina a partir do código-fonte) e não intérpretes (executores passo a passo do código-fonte, onde não ocorre tradução pré-tempo de execução)
Nas implementações modernas da linguagem de programação, como em Java, é cada vez mais popular uma plataforma fornecer as duas opções.
fonte
Java é uma linguagem compilada em bytes que tem como alvo uma plataforma chamada Java Virtual Machine, que é baseada em pilha e tem algumas implementações muito rápidas em muitas plataformas.
fonte
Citações de: https://blogs.oracle.com/ask-arun/entry/run_your_java_applications_faster
Então, eu diria que Java é definitivamente uma linguagem compilada.
fonte