Java é compilada ou interpretada?

Sei q qd compilamos gera-se bytecodes e bla bla bla. Mas dia desses amigo meu me fez essa pergunta, “Java é uma linguagem compilada ou interpretada?”, daí n tive segurança suficiente pra responder e disse q n tinha certezaz, mas q achava q fosse compilada e interpretada!

Resumo da ópera: Alguem sabe de certeza se java é compilada interpretada, ou como eu disse, as duas ao mesmo tempo?

A linguagem de programação java é apenas compilada pela questão da multiplataforma onde dai sim de acordo cm cada plataforma o código cm extensão .class eh transformado em executável, pela JVM.

Alguem me corrija se estiver errado

na verdade é compilada e intrepretada pela jvm,
ou seja, a jvm compila gerando bytecodes e a jvm
interpreta os bytecodes de acordo com o sistema operacional!

me corrijam se estiver errado tbm…

valeu!
:smiley:

1 curtida

Concordo com a explicação do oculos.

Java é uma linguagem Híbrida, ou seja, compilada + interpretada. :slight_smile:

[]s

1 curtida

No modo default, a máquina virtual da Sun opera em “mixed mode”. Em mixed mode:

:arrow: Todos bytecodes são inicialmente interpretados;
:arrow: por meio de uma estratégia adaptativa, a máquina virtual detecta os “hot spots” - pontos de código de maior atividade - e compila esses bytecodes para código nativo. Isso é chamado de Just-In-Time compiling.

É possível, no entanto, alterar o modo de funcionamento da máquina virtual. No modo interpretado (-Xint), o JIT compiler é desativado e os bytecodes são simplesmente interpretados. No modo compilado (-Xcomp), a máquina virtual dispensa a estratégia adaptativa e compila o bytecode para código nativo logo de cara.

Abraços,

[quote=Giuliano Mega]No modo default, a máquina virtual da Sun opera em “mixed mode”. Em mixed mode:

:arrow: Todos bytecodes são inicialmente interpretados;
:arrow: por meio de uma estratégia adaptativa, a máquina virtual detecta os “hot spots” - pontos de código de maior atividade - e compila esses bytecodes para código nativo. Isso é chamado de Just-In-Time compiling.

É possível, no entanto, alterar o modo de funcionamento da máquina virtual. No modo interpretado (-Xint), o JIT compiler é desativado e os bytecodes são simplesmente interpretados. No modo compilado (-Xcomp), a máquina virtual dispensa a estratégia adaptativa e compila o bytecode para código nativo logo de cara.

Abraços, [/quote]

existe alguma diferença de performance significativa :?:

[quote=acolon]Sei q qd compilamos gera-se bytecodes e bla bla bla. Mas dia desses amigo meu me fez essa pergunta, “Java é uma linguagem compilada ou interpretada?”, daí n tive segurança suficiente pra responder e disse q n tinha certezaz, mas q achava q fosse compilada e interpretada!

Resumo da ópera: Alguem sabe de certeza se java é compilada interpretada, ou como eu disse, as duas ao mesmo tempo?[/quote]

è compilada (ByteCode) - .class e interpretada pela JVM. :smiley:

Ou seja, você não falou nenhuma besteira! :slight_smile:

[quote=acolon]Sei q qd compilamos gera-se bytecodes e bla bla bla. Mas dia desses amigo meu me fez essa pergunta, “Java é uma linguagem compilada ou interpretada?”, daí n tive segurança suficiente pra responder e disse q n tinha certezaz, mas q achava q fosse compilada e interpretada!

Resumo da ópera: Alguem sabe de certeza se java é compilada interpretada, ou como eu disse, as duas ao mesmo tempo?[/quote]

A resposta depende do que vc entende por compilar e interpretar.
Compilar é traduzir código legível por humanos (fonte) para codigo legivel pela máquina. Neste sentido java é compilada. Tem um compilador , o javac.
O codigo fonte é compilado em codigo máquina. A máquina é a JVM.

Se interpretar é executar sem gerar código nativo, então java é interperetado. A JVM executa o código sem gerar código nativo. Mas pode gerar código nativo, então ela é parcialmente interpretada. aliás a compilação total para código nativo mata várias funcionalidades do java como carregamento dinâmico de classes, mas a compilação parcial acelera a execução.

Java é executado. Não interessa como. Se vc quiser ser preciosísta: Java é compilado e interpretado.

Se quiser verificar a diferença, use o parâmetro -Xint (que força o Java a interpretar todos os bytecodes) ou -Xcomp (que força o Java a compilar todos os bytecodes.)

Use uma aplicação real, não um benchmark sintético que você tentou escrever.

java -Xint -cp . SeuTeste

Você vai ver que é má idéia usar tanto -Xint quanto -Xcomp para a maior parte das aplicações (no primeiro caso, elas ficam um pouco mais lentas, e não melhoram com o passar do tempo; no segundo caso, elas demoram bem mais para carregar, e gastam mais memória; outra coisa é que -Xcomp compila sem que a JVM tenha informações suficientes sobre o perfil da aplicação, ou seja, pode acabar compilando e gerando código inferior ao que seria obtido se ela usasse o modo default (“mixed mode”).

certo, mas afinal, sem mais delogas…
Posso dizer que java é uma linguagem compilada e interpretada?

http://www.guj.com.br/posts/list/54562.java#286488

Diga q é Híbrida.
Fica até mais bonito :wink:

1 curtida

rsrsrsrsrs vlw!!!