JAVA-Porque todo mundo teima(Principalmente quemnão meche com java...)que a liguagem é intepretada!?  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
javaman00
Java Ninja

Membro desde: 28/03/2006 09:11:00
Mensagens: 292
Offline

Gostaria de saber qual é o motivo que algumas pessoas como Delphi, VB, PHP e outros... falam que o JAVA é interpretado!?!?!?

Palo que eu saiba... intepretado é o PHP e quando quero rodar um ".java" preciso compilar o garoto...



E ai galera, opiniões???



--
Struts2 Enjoy!
cassio
GUJ Master
[Avatar]

Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline

Sim, precisa compilar... pra gerar o bytecode, o qual é INTERPRETADO pela JVM. O bytecode não é um código diretamente executável pelo sistema operacional, o que dependeria da arquitetura do sistema, isso é, não é portável. O Java garante portabilidade sendo interpretado pela JVM. Assim, vc só precisa ter uma JVM específica para cada sistema operacional e pronto, seu código teoricamente roda em qualquer lugar

Cássio Marques

Blog
eric_jf
JavaEvangelist

Membro desde: 07/07/2006 12:28:12
Mensagens: 393
Offline

Eu nunca vi niguem falando que java é interpretado.
Mas deve ser porque é uma linguagem hibrida.

Em linguagens de programação híbridas, o compilador tem o papel de converter o código fonte em um código chamado de byte code, que é uma linguagem de baixo nível. Um exemplo deste comportamento é o do compilador da linguagem Java que, em vez de gerar código da máquina hospedeira (onde se está executando o compilador), gera código chamado Java Bytecode.

Wikipédia - http://pt.wikipedia.org/wiki/Compilador
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

javaman00 wrote:Gostaria de saber qual é o motivo que algumas pessoas como Delphi, VB, PHP e outros... falam que o JAVA é interpretado!?!?!?


Porque o .class não é código de máq.?
fenrir
JavaEvangelist

Membro desde: 26/09/2002 13:06:19
Mensagens: 328
Localização: São Paulo
Offline

renato3110 wrote:Porque o .class não é código de máq.?

Pergunta ambígua!

Porque? O .class não é código de máq.?
Não, o .class não é código de máquina. Como disseram, é um bytecode que depois é interpretado pela VM.

Porque o .class não é código de máq.?
Porque se fosse código de máquina, o Java não seria multiplataforma! Um programa compilado no Linux não vai rodar no Windows nem no MacOS. Mas um programa em Java criado no MacOS (por exemplo) vai rodar em qualquer plataforma que tenha uma JVM disponível.

Tem um Android? Gosta de tirar fotos? Que tal subi-las automaticamente para a internet? Dê uma olhada: http://autouploader.aguilarj.com
[WWW]
proazevedo
Thread.start()
[Avatar]

Membro desde: 11/09/2006 14:54:56
Mensagens: 42
Offline

javaman00 wrote:Gostaria de saber qual é o motivo que algumas pessoas como Delphi, VB, PHP e outros... falam que o JAVA é interpretado!?!?!?


Acho que ela não é interpretada, porque o JVM não trata direto o arquivo.java(o Fonte) e sim o byte code, que já vem mastigado.Assim é o meu entender.
[Email]
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

E que diferenca faz na pratica se Java eh interpretada ou nao?

O treco roda numa maquina. Virtual, mas eh uma maquina, e a grande maioria do pessoal que eu vejo discutindo isso nao faz a menor ideia de como ela funciona, e tambem nao ta muito ai pra saber... entao, pra que discutir? Abre logo uma cerveja e pronto, vah
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
wmitsuda
JavaEvangelist

Membro desde: 25/02/2005 17:02:40
Mensagens: 334
Offline

Além do fonte não ser interpretado, a VM compila o bytecode p/ código nativo internamente (pelo menos as partes que ela identifica ser interessante...).

Já é assim há muito tempo.

Infelizmente essa fama (ainda) continua sendo espalhada no boca-a-boca por pessoas sem conhecimento do assunto...

Sun Java Certified POG Master Developer
http://www.willianmitsuda.com
[WWW]
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

fenrir wrote:
renato3110 wrote:Porque o .class não é código de máq.?

Pergunta ambígua! [...]


Não é uma pergunta, é uma resposta
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline


java -Xint => o Java desliga o "just in time compiler" e roda só o interpretador

java -Xcomp => o Java desliga o interpretador e roda só o "just in time compiler"

Não use nenhuma dessas opções acima, deixam seu código mais lento nos dois casos.

Deixe o Java tomar conta disso por você. Ele interpreta código menos usado, e quando ele vê que o código é mais usado, roda o "just in time compiler" para torná-lo mais rápido.
[WWW]
pcalcado
Moderador
[Avatar]

Membro desde: 08/03/2004 17:19:35
Mensagens: 5174
Localização: Sydney - Australia
Offline


Sendo chato pra ajudar a manter o Manuel mais bonito.

http://www2.uol.com.br/linguaportuguesa/incultaebela/ib_010727.htm


Posto isso, vamos lá. Há basicamente dois casos em que se usa "por que". Num deles, pouco comum, temos a equivalência com as expressões "pelo/a qual", "pelos/as quais": "São indescritíveis os caminhos por que (= pelos quais) tivemos de passar"; "As teses por que (= pelas quais) luto nem sempre são compreendidas". No outro caso, o "por que" equivale a "por que razão", "por qual razão": "Por que (= por que razão, por qual razão) no Brasil não se consegue criar uma sociedade mais justa e equilibrada?"; "Faço questão de saber por que (= por que razão, por qual razão) você é tão áspero com ela".

Já o "porque" ("junto") introduz explicação ou causa do que se afirma: "Não vou porque estou doente"; "Não voto nele porque seus projetos sociais são pífios".

Phillip Calçado "Shoes"
http://fragmental.tw/
http://blog.fragmental.com.br/
"It is unfortunate that much of what is called 'object-oriented programming today is simply old style programming with fancier constructs." - Alan Kay
[Email] [WWW] [Yahoo!] [MSN]
renatosilva
GUJ Master

Membro desde: 16/12/2004 17:09:19
Mensagens: 1787
Offline

pcalcado wrote:...


Huuahuauahuha de novo isso

Ainda bem que eu escrevi certo xD
julianostr
GUJ Ranger
[Avatar]

Membro desde: 31/03/2006 14:16:14
Mensagens: 855
Localização: Blumenau - SC
Offline

Mas Deus todo poderoso !!!

Para aqueles que não sabem ainda, leiam aqui uma explicação pra lá de detalhada e explicativa sobre o Java:

Máquina Virtual Java
Programas Java não são traduzidos para a linguagem de máquina como outras linguagens estaticamente compiladas e sim para uma representação intermediária, chamada de bytecodes.

Os bytecodes são interpretados pela máquina virtual Java (JVM - Java Virtual Machine). Muitas pessoas acreditam que por causa desse processo, o código interpretado Java tem baixo desempenho. Durante muito tempo esta foi uma afirmação verdadeira. Porém novos avanços tem tornado o compilador dinâmico (a JVM), em muitos casos, mais eficiente que o compilador estático.

Java hoje já possui uma performace próxima do C++. Isto é possível graças a otimizações como a compilação especulativa, que aproveita o tempo ocioso do processador para pré-compilar bytecode para código nativo. Outros mecanismos ainda mais elaborados como o HotSpot da Sun, que guarda informações disponíveis somente em tempo de execução (ex.: número de usuários, processamento usado, memória disponível), para otimizar o funcionamento da JVM, possibilitando que a JVM vá "aprendendo" e melhorando seu desempenho. Isto é uma realidade tão presente que hoje é fácil encontrar programas corporativos e de missão crítica usando tecnologia Java. No Brasil, por exemplo, a maioria dos Bancos utiliza a tecnologia Java para construir seus home banks, que são acessados por milhares de usuários diariamente. Grandes sites como o eBay utilizam Java para garantir alta performace. E a cada ano Java tem se tornado mais rápido, na medida que se evolui o compilador dinâmico.

Essa implementação no entanto tem algumas intrínsicas. A pré-compilação exige tempo, o que faz com que programas Java demorem um tempo significamente maior para começarem a funcionar. Soma-se a isso o tempo de carregamento da máquina virtual. Isso não é um grande problema para programas que rodam em servidores e que deveriam ser inicializados apenas uma vez. No entanto isso pode ser bastante indesejável para computadores pessoais onde o usuário deseja que o programa rode logo depois de abri-lo.

O Java ainda possui uma outra desvantagem considerável em programas que usam bastante processamento numérico. O padrão java tem uma especificação rígida de como devem funcionar os tipos numéricos. Essa especificação não condiz com a implementação de pontos flutuantes na maioria dos processadores o que faz com que o java seja significativamente mais lento para estas aplicações quando comparado a outras linguagens.

Os bytecodes produzidos pelos compiladores Java podem ser usados num processo de engenharia reversa para a recuperação do programa-fonte original. Esta é uma característica que atinge em menor grau todas as linguagens compiladas. No entanto já existem hoje tecnologias que "embaralham" e até mesmo criptografam os bytecodes praticamente impedindo a engenharia reversa


Fonte: wikipedia

LASER
Light Amplification by Stimulated Emission of Radiation
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Dando uma de advogado do diabo. O código fonte Java é compilado para uma representação intermediaria que não código de máquina - o tal do bytecode.

A JVM é um interpretador deste bytecode, executando ele. Se esse interpretador gera código nativo durante sua execução, ou se ele chama o papa, é um detalhe da implementação.

Simples assim, java é uma linguagem interpretada. O problema não está nesta afirmação, que é correta, mas sim nas pessoal de tormarem por ela uma conotação ruim de baixa performance. Linguagens intepretadas hoje não perdem nada em termos de performance p/ linguagens compiladas direto para código de máquina.

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
eric_jf
JavaEvangelist

Membro desde: 07/07/2006 12:28:12
Mensagens: 393
Offline

Java é definido como: Linguagem Híbrida.
Ela é tanto compilada como interpretada.


Em linguagens de programação híbridas, o compilador tem o papel de converter o código fonte em um código chamado de byte code, que é uma linguagem de baixo nível. Um exemplo deste comportamento é o do compilador da linguagem Java que, em vez de gerar código da máquina hospedeira (onde se está executando o compilador), gera código chamado Java Bytecode. (Wikipédia)




louds wrote:Dando uma de advogado do diabo. O código fonte Java é compilado para uma representação intermediaria que não código de máquina - o tal do bytecode.

A JVM é um interpretador deste bytecode, executando ele. Se esse interpretador gera código nativo durante sua execução, ou se ele chama o papa, é um detalhe da implementação.

Simples assim, java é uma linguagem interpretada. O problema não está nesta afirmação, que é correta, mas sim nas pessoal de tormarem por ela uma conotação ruim de baixa performance. Linguagens intepretadas hoje não perdem nada em termos de performance p/ linguagens compiladas direto para código de máquina.
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team