| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/06/2008 19:26:22
|
javadust
Smalltalk
Membro desde: 23/06/2008 19:20:27
Mensagens: 3
Offline
|
Pessoal, é o seguinte, participei de um concurso esse final de semana e gostaria de dividir uma dúvida com vocês. A questão esta aqui embaixo:
Marque a alternativa correta referente à linguagem
Java:
a) O pacote java.lang é importado automaticamente
b) A linguagem Java é dependente de plataforma
c) Em java, objetos são armazendos na memória de
heap e manipulados através de ponteiros
d) O Bytecode prescinde da máquina virtual java
(JVM) para executar em qualquer máquina
e) Em Java, a memória alocada é liberada pelo
programador
Sei que a primeira opção esta correta, mas fiquei na dúvida entre ela e a letra d e acabei marcando a letra d, e com a chegada do gabarito pensei em tentar entrar com um recurso para tentar anular a questão. Eis a minha dúvida: Utilizar o GCJ para compilar o código do bytecode em código de maquina pode ser considerado executar o bytecode ? Caso alguem concorde comigo que para executar o bytecode precisa da jvm, poderia me mandar uma referência sobre o assunto, pois para o recurso preciso de uma referência.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 23/06/2008 23:07:32
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
javadust wrote:PSei que a primeira opção esta correta, mas fiquei na dúvida entre ela e a letra d e acabei marcando a letra d, e com a chegada do gabarito pensei em tentar entrar com um recurso para tentar anular a questão. Eis a minha dúvida: Utilizar o GCJ para compilar o código do bytecode em código de maquina pode ser considerado executar o bytecode ? Caso alguem concorde comigo que para executar o bytecode precisa da jvm, poderia me mandar uma referência sobre o assunto, pois para o recurso preciso de uma referência.
Mesmo o GCJ tem uma mini-jvm lá dentro, porque algumas partes do código Java não podem ser compilados diretamente (como código que use reflexão), sempre vai haver alguma coisa que precisa de um interpretador.
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 07:30:44
|
Hempx
JavaEvangelist
![[Avatar]](/images/avatar/2ba596643cbbbc20318224181fa46b28.png)
Membro desde: 18/04/2003 03:42:08
Mensagens: 356
Localização: Belo Horizonte
Offline
|
engraçado que a letra c me parece correta.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 07:50:49
|
rmendes08
GUJ Master
![[Avatar]](/images/avatar/9ee855f3ce4dd40182183463232e2162.jpg)
Membro desde: 29/05/2008 14:09:28
Mensagens: 1618
Offline
|
Ao que parece a letra (c) também está correta, mas o problema aí eu acho que é a nomenclatura usada. No caso de Java, os objetos são manipulados através de referências, que são variáveis que armazenam o endereço do objeto na memória, porém, diferentemente de C/C++ você não pode usá-las para aritmética de ponteiros. Uma thread interessante sobre o assunto: http://www.guj.com.br/posts/list/61217.java#321506
|
"A Técnica é transformada em Arte por quem a emprega"
"O futuro pertence àqueles que acreditam na beleza de seus sonhos"
Computadores Fazem Arte
http://www.uaijug.com.br
"É importante estabelecer uma estrutura de alto nível, mas isso não significa criar uma infinidade de diagramas de classes detalhados." |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 08:41:07
|
Bruno Laturner
GUJ Expert
![[Avatar]](/images/avatar/5800ccd9514fd789d08e5831951aa6bc.jpg)
Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline
|
Com o bytecode dá pra executar diretamente em processadores picoJava. Com o bytecode também dá pra compilar p/ código nativo. Nenhum desses precisa de uma JVM.
|
A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 08:42:05
|
Hempx
JavaEvangelist
![[Avatar]](/images/avatar/2ba596643cbbbc20318224181fa46b28.png)
Membro desde: 18/04/2003 03:42:08
Mensagens: 356
Localização: Belo Horizonte
Offline
|
eh... concordo com você. Mas não deixa de ser um ponteiro
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 09:00:36
|
javadust
Smalltalk
Membro desde: 23/06/2008 19:20:27
Mensagens: 3
Offline
|
A única coisa que me deixa meio desconfortável em relação a existir não necessitar da JVM é o fato de que a JVM tem outras funções além de executar o código como a verificação e etc, mas de qualquer forma, a parte relacionada a compilar o código em linguagem de máquina teria que implementar a especificação da JVM... O que vocês acham ?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 11:54:21
|
**Popeye12345**
GUJ Master
Membro desde: 30/03/2008 20:56:41
Mensagens: 1293
Offline
|
O que eu acho é que questão de concurso é foda. Parece que tem 3 corretas aí. O que eu já vi de questão assim...
Brincadeira viu.
Parece que só a B,e a E estão erradas. Ao menos, eu to vendo assim.
This message was edited 2 times. Last update was at 24/06/2008 12:32:57
|
unnamed.
there are so many monkeys at guj. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 12:08:28
|
andre2k2
JavaEvangelist
Membro desde: 27/03/2007 14:54:31
Mensagens: 353
Offline
|
Pra mim a letra "c" está correta, referencia e ponteiro é a mesma coisa... pra mim caberia recurso nessa questão, está mal formulada... a letra "a" tb está correta!! Mas na duvida eu teria marcado letra "a" que é mais obvio!!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 12:10:44
|
andre2k2
JavaEvangelist
Membro desde: 27/03/2007 14:54:31
Mensagens: 353
Offline
|
javadust wrote:A única coisa que me deixa meio desconfortável em relação a existir não necessitar da JVM é o fato de que a JVM tem outras funções além de executar o código como a verificação e etc, mas de qualquer forma, a parte relacionada a compilar o código em linguagem de máquina teria que implementar a especificação da JVM... O que vocês acham ?
Acho q a "d" está errada por que o byte code nao executa em qq maquina, ele executa em qq implementação de maquina virtual... pela maneira como foi escrita da a entender que o byte code eh gerado pela maquina virtual e pode ser executado em qq maquina diretamente, sem necessidade de VM!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 12:20:48
|
gomesrod
GUJ Ranger
![[Avatar]](/images/avatar/5de6755473dc988fe6c7db81f26a53ac.jpg)
Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline
|
javadust wrote:...
d) O Bytecode prescinde da máquina virtual java
(JVM) para executar em qualquer máquina
(...)
Caso alguem concorde comigo que para executar o bytecode precisa da jvm ...
Olá,
Na verdade a grande questão nessa alternativa é mais a língua portuguesa do que a linguagem Java. Prescindir significa "dispensar", "não precisar". Ou seja, a frase diz que o Bytecode NÃO REQUER a JVM para ser executado, o que é falso.
O correto seria dizer que a JVM é IMPRESCINDÍVEL para executar um bytecode.
http://www.dicionarioinformal.com.br/buscar.php?palavra=prescindir
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 12:25:56
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
gomesrod wrote:Olá,
Na verdade a grande questão nessa alternativa é mais a língua portuguesa do que a linguagem Java. Prescindir significa "dispensar", "não precisar". Ou seja, a frase diz que o Bytecode NÃO REQUER a JVM para ser executado, o que é falso.
O correto seria dizer que a JVM é IMPRESCINDÍVEL para executar um bytecode.
http://www.dicionarioinformal.com.br/buscar.php?palavra=prescindir
Acho que você não entendeu, é exatamente o que o pessoal está falando, que é possível não ter uma JVM para executar o bytecode, já que, teoricamente, você poderia executar o bytecode em um processador que tivesse o bytecode Java como sendo seu código nativo (que é o que "quase" acontece com os processadores PicoJava).
Tecnicamente uma máquina virtual sempre pode ser implementada em uma máquina real, então assumir que a JVM é obrigatória sempre não seria correto, mas do ponto de vista do mundo real isso ainda não existe, e como o próprio pessoal do GCJ afirma:
Site do GCJ wrote:Compiled applications are linked with the GCJ runtime, libgcj, which provides the core class libraries, a garbage collector, and a bytecode interpreter. libgcj can dynamically load and interpret class files, resulting in mixed compiled/interpreted applications. It has been merged with GNU Classpath and supports most of the 1.4 libraries plus some 1.5 additions.
Eles precisam de um interpretador de bytecode pra poder executar uma aplicação Java. Tecnicamente a JVM é obrigatória, mas na teoria ela poderia não existir.
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 12:43:39
|
gomesrod
GUJ Ranger
![[Avatar]](/images/avatar/5de6755473dc988fe6c7db81f26a53ac.jpg)
Membro desde: 11/05/2007 19:46:22
Mensagens: 901
Offline
|
Maurício Linhares wrote:Acho que você não entendeu (...)
Na verdade agora eu não estou entendendo mesmo! Li e reli o post original, não entendi se ele está questionando a obrigatoriedade de se ter uma JVM ou se ele se enganou na interpretação da frase como eu tinha colocado no post anterior.
Mas enfim, se for o primeiro caso me desculpe aí javadust, foi mal!
Maurício Linhares wrote:Eles precisam de um interpretador de bytecode pra poder executar uma aplicação Java. Tecnicamente a JVM é obrigatória, mas na teoria ela poderia não existir.
Agora dando meu pitaco aqui... esse não seria mais um daqueles casos de coisas possíveis tecnicamente mas que para fins didáticos ou de documentação devemos ignorar? Por exemplo, é possível modificar uma String através da manipulação de atributos private mas em qualquer livro veremos que "as strings são imutáveis". Se alguém perguntar, diremos que "as strings são imutáveis", e assim por diante.
Deve ser a mesma coisa, "precisamos da JVM para executar o bytecode" e ponto final, mesmo que indo um pouco além talvez existam outras possibilidades.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 12:53:55
|
**Popeye12345**
GUJ Master
Membro desde: 30/03/2008 20:56:41
Mensagens: 1293
Offline
|
Não cara, isso é uma realidade que se prova em pesquisa sim. É possivel um processador com JM incorporada sim.
E se existe em alguma parte do mundo, então derruba a verdade de ser necessário JVM.
Bem, é isso.
Um exemplo; Se perguntassem se é existe algum processador cujo a tecnologia é mais rapida 1000x que o normal, quase todo mundo diria que não:
http://www.webtuga.com/Hardware/Geral/IBM-desenvolve-processador-100-vezes-mais-rapido-que-os-actuais.wtuga
This message was edited 1 time. Last update was at 24/06/2008 13:00:57
|
unnamed.
there are so many monkeys at guj. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/06/2008 14:14:36
|
andre2k2
JavaEvangelist
Membro desde: 27/03/2007 14:54:31
Mensagens: 353
Offline
|
Maurício Linhares wrote:
Acho que você não entendeu, é exatamente o que o pessoal está falando, que é possível não ter uma JVM para executar o bytecode, já que, teoricamente, você poderia executar o bytecode em um processador que tivesse o bytecode Java como sendo seu código nativo (que é o que "quase" acontece com os processadores PicoJava).
Mas a questão diz claramente q pode ser rodado sem a VM em QUALQUER máquina... então está errado por causa desse "qualquer"... mesmo q fosse implementado uma maquina q rodasse byte code ela não seria qualquer maquina, e sim uma máquina especifica... eu ainda acho q ta errado a letra d.
|
|
|
 |
|
|